2017-10-13 73 views
1

我正在體驗CoreML對於項目的容量。這是我能夠做到的:動態加載mlmodel

  1. 使用使用coremltools包
  2. 下載到我的iPhone應用程序在Python
  3. scikit學習它轉換爲.mlmodel文件創建.pkl文件
  4. 在運行時編譯:

    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>) 

任何想法?

回答

2

最簡單的解決方案:將Xcode生成的包裝類複製到Swift文件中並將其添加到項目中。 (請注意,這個包裝類也展示瞭如何製作一個MLFeatureProvider等)