将Core ML模型集成到您的应用程序中

2018-07-25 16:56:22 浏览数 (1)

将简单模型添加到应用程序,将输入数据传递给模型,并处理模型的预测。

下载

SDKs

  • iOS 11.0
  • Xcode 9.0

Framework

  • Core ML

概观

此示例应用程序使用经过训练的MarsHabitatPricer.mlmodel模型来预测火星上的栖息地价格。

将模型添加到Xcode项目中

通过将模型拖动到项目导航器中,将模型添加到Xcode项目中。

您可以通过在Xcode中打开模型来查看有关模型的信息,包括模型类型及其预期的输入和输出。在此示例中,输入是太阳能电池板和温室的数量,以及栖息地的地块面积(以英亩为单位)。输出是栖息地的预测价格。

在代码中创建模型

Xcode还使用有关模型输入和输出的信息来自动生成模型的自定义编程接口,您可以使用该接口与代码中的模型进行交互。因为,Xcode生成接口来表示model (MarsHabitatPricer),模型的输入(MarsHabitatPricerInput)和模型的输出(MarsHabitatPricerOutput)。

使用生成的MarsHabitatPricer类的初始值设定项来创建模型:

代码语言:javascript复制
let model = MarsHabitatPricer()

获取输入值以传递给模型

此示例应用程序使用UIPickerView来获取用户的模型输入值。

代码语言:javascript复制
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:),这些会用来从模型的输入预测价格的方法值-在这种情况下,太阳能电池板的数量,温室的数量和栖息地的大小(在英亩)。此方法的结果是一个实例。

代码语言:javascript复制
guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels, greenhouses: greenhouses, size: size) else {
    fatalError("Unexpected runtime error.")
}

访问price属性以获取预测价格并在应用程序的UI中显示结果。

代码语言:javascript复制
let price = marsHabitatPricerOutput.price
priceLabel.text = priceFormatter.string(for: price)

注意 生成的prediction(solarPanels:greenhouses:size:)方法可能会抛出错误。使用Core ML时遇到的最常见类型的错误发生在输入数据的详细信息与模型所期望的详细信息不匹配时 - 例如,图像格式错误。

构建并运行Core ML应用程序

Xcode将Core ML模型编译为经过优化以在设备上运行的资源。模型的优化表示包含在您的应用程序包中,用于在应用程序在设备上运行时进行预测。

也可以看看

第一步

获得核心ML模型

获取要在您的应用中使用的Core ML模型。

将训练模型转换为核心ML

将使用第三方机器学习工具创建的训练模型转换为Core ML模型格式。

原文:https://developer.apple.com/documentation/coreml/integrating_a_core_ml_model_into_your_app

0 人点赞