我正在体验CoreML在一个项目中的功能。这是我设法做到的:
let classifierName = "classifier1"
let fileName = NSString(format:"%@.mlmodel",classifierName)
let documentsUrl:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
let destinationFileUrl = documentsUrl.appendingPathComponent(fileName as String)
let compiledModelUrl = try? MLModel.compileModel(at: destinationFileUrl)
let model = try? MLModel(contentsOf: compiledModelUrl!)
现在,我想用我的模型进行预测。我在一个示例应用程序中尝试直接嵌入.mlmodel文件,该文件允许XCode在构建时创建包装器类以实例化输入:
let multiArr = try? MLMultiArray.init(shape: [1], dataType: .double)
let input = classifier1Input(input: multiArr!)
let output = try? model.prediction(input: input)
但是因为我是在运行时从服务器下载文件,所以我无权访问此类包装器类。
let predict = model?.prediction(from: <MLFeatureProvider>)
有任何想法吗 ?
最佳答案
最简单的解决方案:将Xcode生成的包装器类复制到Swift文件中,并将其添加到您的项目中。 (请注意,此包装器类还显示了如何制作MLFeatureProvider
等。)
关于ios - 动态加载mlmodel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46725723/