Core ML 3现在使我们能够执行设备上的培训。创建可更新的核心ML模型后,我们需要使用MLUpdateTask
函数执行一些功能以在设备上对其进行更新,该函数需要3个参数:Model URL
,MLBatchProvider
和{{1} }。
由于Core ML 3刚刚发布,因此其文档非常有限。特别是关于如何准备训练数据或MLModelConfiguration
问题:如何准备训练数据或创建MLBatchProvider
。
答案 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])