Ios 动态加载MLM模型

Ios 动态加载MLM模型,ios,coreml,Ios,Coreml,我正在体验CoreML在一个项目中的能力。以下是我设法做到的: 使用scikit在Python中学习创建.pkl文件 使用coremltools包将其转换为.mlmodel文件 将其下载到我的iOS应用程序 在运行时编译它: let classifierName = "classifier1" let fileName = NSString(format:"%@.mlmodel",classifierName) let documentsUrl:URL = FileManager.defaul

我正在体验CoreML在一个项目中的能力。以下是我设法做到的:

  • 使用scikit在Python中学习创建.pkl文件
  • 使用coremltools包将其转换为.mlmodel文件
  • 将其下载到我的iOS应用程序
  • 在运行时编译它:

    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>)
    
    let predict=model?预测(从:)
    

    有什么想法吗?

    最简单的解决方案:将Xcode生成的包装类复制到Swift文件中,并将其添加到项目中。(请注意,此包装类还显示了如何创建
    MLFeatureProvider
    等。)