在 swift 中选择多个 .mlModel。

问题描述 投票:1回答:1

我的xcode项目中有多个.mlModels,我想让用户选择模型并进行预测。

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(...)是不可访问的。

ios swift coreml turi-create mlmodel
1个回答
0
投票

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

一种方法是创建一个协议,该协议具有以下功能。prediction() 方法,然后为你的每个 GestureClassifier 等类,使其符合协议。

另一种方法是使用 MLModel 来自 GestureClassifier's .model 财产,并使用该。

© www.soinside.com 2019 - 2024. All rights reserved.