1

我的 xcode 项目中有多个 .mlModel,我希望用户选择模型并执行预测

let gestureClassifier = GestureClassifier() //mlModel

func predictGesture(window: Int) {

    let previousOutput = modelOutputs[window]
       let modelOutput = try? gestureClassifier.prediction(features: modelInput, hiddenIn: previousOutput?.hiddenOut, cellIn: previousOutput?.cellOut)
       modelOutputs[window] = modelOutput

       if let prediction = modelOutput?.activity,
          let probability = modelOutput?.activityProbability[prediction] {
         if prediction == Config.restItValue {
           return
         }
         if probability > Config.predictionThreshold {
            if prediction == Config.chopItValue || prediction == Config.driveItValue || prediction == Config.shakeItValue {
               print("prediction: \(prediction)")
                self.recordGestures(gesture: prediction)
           }

         }
         else{

            print("unrecognised gesture")
            self.recordGestures(gesture: "unRecognised Gesture")
        }
       }
     }

我有另一个模型gestureClassifier1 我想做这样的事情

func predictGesture(window: Int, **selectedModel**) {

      let previousOutput = modelOutputs[window]
       let modelOutput = try? **selectedModel**.prediction(features: modelInput, hiddenIn: 
   previousOutput?.hiddenOut, cellIn: previousOutput?.cellOut)

    }

我怎样才能做到这一点,我尝试使用 Anyclass 作为数据类型,但无法访问诸如 .prediction(..) 之类的类函数。

4

1 回答 1

0

这与其说是一个 Core ML 问题,不如说是一个一般性的编程问题:如何创建一个接受不同类型对象但以相同方式处理它们的函数?

一种方法是创建一个包含该prediction()方法的协议,然后为每个GestureClassifieretc 类创建一个扩展,以使它们符合协议。

另一种方法是使用MLModelfromGestureClassifier.model属性并使用它。

于 2020-05-01T09:05:18.367 回答