准备更新核心ML模型

时间:2019-06-26 16:35:53

标签: swift machine-learning coreml

Core ML 3现在使我们能够执行设备上的培训。创建可更新的核心ML模型后,我们需要使用MLUpdateTask函数执行一些功能以在设备上对其进行更新,该函数需要3个参数:Model URLMLBatchProvider和{{1} }。

由于Core ML 3刚刚发布,因此其文档非常有限。特别是关于如何准备训练数据或MLModelConfiguration

问题:如何准备训练数据或创建MLBatchProvider

2 个答案:

答案 0 :(得分:0)

要向Core ML提供数据,请创建一个MLFeatureProvider对象。这将返回一个或多个MLFeatureValue对象,该对象对应模型中的每个输入。通常,自动生成的类会在后台执行此操作。

如果要使用批处理,请创建一个具有多个MLBatchProvider的{​​{1}},每个示例一个。

进行MLFeatureProviders的预测并不难:只需将MLBatchProvider放入数组中,然后使用MLFeatureProviders。再次,自动生成的类为此提供了一个辅助方法。

对于培训,您可能希望即时加载数据,进行随机扩充等。在这种情况下,您将需要创建一个采用MLArrayBatchProvider协议的新类。每个示例都应返回MLBatchProvider。这次MLFeatureProvider不仅为示例提供了MLFeatureProvider,还为目标/ true标签提供了MLFeatureValue。 (自动生成的类为此培训功能提供者提供帮助程序类,但针对培训批处理提供者则没有。)

我实际上还没有任何新的培训API能够正常工作(它们在beta 2时崩溃),所以我还不确定100%MLFeatureValue将如何在整个培训时期内循环例子。

答案 1 :(得分:0)

如果您的模型命名为TestModel,则TestModelTrainingInput类应该可用。

let singleTrainingData = try TestModelTrainingInput(input: .init[1,2,3], output_true: .init([4,5,6]))
let trainingData = MLArrayBatchProvider(array: [singleTrainingData])