【问题标题】:Selecting Multiple .mlModel in swift快速选择多个 .mlModel
【发布时间】:2020-08-15 08:31:15
【问题描述】:

我的 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")
        }
       }
     }

我有其他型号 手势分类器1 我想做这样的事情

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

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

    }

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

【问题讨论】:

    标签: ios swift coreml turi-create mlmodel


    【解决方案1】:

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

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

    另一种方法是使用GestureClassifier.model 属性中的MLModel 并使用它。

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 2012-06-07
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多