准备更新 Core ML 模型
Prepping to update a Core ML Model
Core ML 3 现在让我们能够在设备上进行训练。创建可更新的 Core ML 模型后,我们需要使用需要 3 个参数的 MLUpdateTask
函数执行一些功能以在设备上更新它:Model URL
、MLBatchProvider
和 MLModelConfiguration
.
由于 Core ML 3 刚刚发布,它的文档非常有限;特别是关于如何准备训练数据或 MLBatchProvider
问题:如何准备训练数据或创建MLBatchprovider
。
要向 Core ML 提供数据,您需要创建一个 MLFeatureProvider
对象。这 return 一个或多个 MLFeatureValue
对象,一个对应模型中的每个输入。通常 auto-generated class 在幕后执行此操作。
如果您想使用批处理,您可以创建一个 MLBatchProvider
,它有多个 MLFeatureProviders
,每个示例一个。
进行 MLBatchProvider
预测并不难:只需将 MLFeatureProviders
放入数组中,然后使用 MLArrayBatchProvider
。同样,auto-generated class 有一个帮助方法。
对于训练,您可能需要加载数据 on-the-fly、进行随机扩充等。在这种情况下,您需要制作一个采用 MLBatchProvider
协议的新 class。每个示例应该 return 和 MLFeatureProvider
。这次 MLFeatureProvider
不仅有示例的 MLFeatureValue
,还有目标/真实标签的 MLFeatureValue
。 (auto-generated class 有一个帮助程序 class 用于此训练功能提供程序,但没有用于训练批处理提供程序。)
我还没有真正让任何新的训练 API 工作(它们在 beta 2 上崩溃),所以我还不能 100% 确定 MLBatchProvider
将如何循环整个时代训练示例。
如果您的模型命名为 TestModel
,则应该可以使用 TestModelTrainingInput
class。
let singleTrainingData = try TestModelTrainingInput(input: .init[1,2,3], output_true: .init([4,5,6]))
let trainingData = MLArrayBatchProvider(array: [singleTrainingData])
Core ML 3 现在让我们能够在设备上进行训练。创建可更新的 Core ML 模型后,我们需要使用需要 3 个参数的 MLUpdateTask
函数执行一些功能以在设备上更新它:Model URL
、MLBatchProvider
和 MLModelConfiguration
.
由于 Core ML 3 刚刚发布,它的文档非常有限;特别是关于如何准备训练数据或 MLBatchProvider
问题:如何准备训练数据或创建MLBatchprovider
。
要向 Core ML 提供数据,您需要创建一个 MLFeatureProvider
对象。这 return 一个或多个 MLFeatureValue
对象,一个对应模型中的每个输入。通常 auto-generated class 在幕后执行此操作。
如果您想使用批处理,您可以创建一个 MLBatchProvider
,它有多个 MLFeatureProviders
,每个示例一个。
进行 MLBatchProvider
预测并不难:只需将 MLFeatureProviders
放入数组中,然后使用 MLArrayBatchProvider
。同样,auto-generated class 有一个帮助方法。
对于训练,您可能需要加载数据 on-the-fly、进行随机扩充等。在这种情况下,您需要制作一个采用 MLBatchProvider
协议的新 class。每个示例应该 return 和 MLFeatureProvider
。这次 MLFeatureProvider
不仅有示例的 MLFeatureValue
,还有目标/真实标签的 MLFeatureValue
。 (auto-generated class 有一个帮助程序 class 用于此训练功能提供程序,但没有用于训练批处理提供程序。)
我还没有真正让任何新的训练 API 工作(它们在 beta 2 上崩溃),所以我还不能 100% 确定 MLBatchProvider
将如何循环整个时代训练示例。
如果您的模型命名为 TestModel
,则应该可以使用 TestModelTrainingInput
class。
let singleTrainingData = try TestModelTrainingInput(input: .init[1,2,3], output_true: .init([4,5,6]))
let trainingData = MLArrayBatchProvider(array: [singleTrainingData])