我在我的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)
}我如何才能做到这一点,我尝试使用任何类作为数据类型,但类函数如.prediction(..)是不可访问的。
发布于 2020-05-01 17:05:18
与其说这是一个核心ML问题,不如说是一个一般的编程问题:如何创建一个接受不同类型对象但以相同方式对待它们的函数?
要做到这一点,一种方法是创建一个包含prediction()方法的协议,然后为每个GestureClassifier etc类创建一个扩展,使它们符合该协议。
另一种方法是使用GestureClassifier的.model属性中的MLModel并使用它。
https://stackoverflow.com/questions/61532523
复制相似问题