将简单模型添加到应用程序,将输入数据传递给模型,并处理模型的预测。
SDKs
- iOS 11.0+
- Xcode 9.0+
Framework
- Core ML
概观
此示例应用程序使用经过训练的MarsHabitatPricer.mlmodel模型来预测火星上的栖息地价格。
将模型添加到Xcode项目中
通过将模型拖动到项目导航器中,将模型添加到Xcode项目中。
您可以通过在Xcode中打开模型来查看有关模型的信息,包括模型类型及其预期的输入和输出。在此示例中,输入是太阳能电池板和温室的数量,以及栖息地的地块面积(以英亩为单位)。输出是栖息地的预测价格。
在代码中创建模型
Xcode还使用有关模型输入和输出的信息来自动生成模型的自定义编程接口,您可以使用该接口与代码中的模型进行交互。因为,Xcode生成接口来表示model (MarsHabitatPricer),模型的输入(MarsHabitatPricerInput)和模型的输出(MarsHabitatPricerOutput)。
使用生成的MarsHabitatPricer
类的初始值设定项来创建模型:
let model = MarsHabitatPricer()
获取输入值以传递给模型
此示例应用程序使用UIPickerView
来获取用户的模型输入值。
func selectedRow(for feature: Feature) -> Int {
return pickerView.selectedRow(inComponent: feature.rawValue)
}
let solarPanels = pickerDataSource.value(for: selectedRow(for: .solarPanels), feature: .solarPanels)
let greenhouses = pickerDataSource.value(for: selectedRow(for: .greenhouses), feature: .greenhouses)
let size = pickerDataSource.value(for: selectedRow(for: .size), feature: .size)
使用模型进行预测
MarsHabitatPricer
类有一个prediction(solarPanels:greenhouses:size:)
,这些会用来从模型的输入预测价格的方法值-在这种情况下,太阳能电池板的数量,温室的数量和栖息地的大小(在英亩)。此方法的结果是一个实例。
guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels, greenhouses: greenhouses, size: size) else {
fatalError("Unexpected runtime error.")
}
访问price
属性以获取预测价格并在应用程序的UI中显示结果。
let price = marsHabitatPricerOutput.price
priceLabel.text = priceFormatter.string(for: price)
注意
生成的
prediction(solarPanels:greenhouses:size:)
方法可能会抛出错误。使用Core ML时遇到的最常见类型的错误发生在输入数据的详细信息与模型所期望的详细信息不匹配时 - 例如,图像格式错误。
构建并运行Core ML应用程序
Xcode将Core ML模型编译为经过优化以在设备上运行的资源。模型的优化表示包含在您的应用程序包中,用于在应用程序在设备上运行时进行预测。
也可以看看
第一步
获取要在您的应用中使用的Core ML模型。
将使用第三方机器学习工具创建的训练模型转换为Core ML模型格式。
原文:https://developer.apple.com/documentation/coreml/integrating_a_core_ml_model_into_your_app