将 Core ML 模型集成到应用中

向应⽤中添加一个简单的模型,然后向模型中传入输入数据,并对模型的预测值进行处理。

在官方文档中找到位置进行实例程序下载。

 

概述

本⽰例应⽤使用了一个已训练模型 MarsHabitatPricer.mlmodel,⽤以预测火星上的殖民地价值。

 

将模型添加到 Xcode 项⽬目中

要想将模型添加到 Xcode 项⽬当中,只需要将模型拖曳进项目导航器 (project navigator) 当中即可。

您可以通过在 Xcode 中打开这个模型,从而来查看它的相关信息,其中包括有模型类型以及其预期输入和输出。模型的输入为太阳能板和温室的数量,以及殖民地的规模⼤小(以英亩为单位)。模型的输出则是对这个殖⺠地价值的预测。

⽤代码创建模型

Xcode 同样也会使用模型的输入输出信息,来自动为模型生成一个自定义的编程接口,从⽽就可以在代码当中与模型进⾏交互。对于这个 MarsHabitatPricer.mlmodel ⽽言,Xcode 会⽣成相应的接口,来分别表⽰模型本⾝(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:) 方法,从⽽就可以根据模型的输入值来预测价值,在本例当中,输入值为太阳能板的数量、温室的数量以及殖⺠地的规模⼤小(以英亩为单位)。这个方法的结果为一个 MarsHabitatPricerOutput 实例,这⾥我们将其取名为 marsHabitatPricerOutput。

guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels, greenhouses: greenhouses, size: size) else {
    fatalError("Unexpected runtime error.")
}

通过读取 marsHabitatPricerOutput 的 price 属性,就可以获取所预测的价值,然后就可以在应用的UI当中对这个结果进⾏展⽰。

let price = marsHabitatPricerOutput.price
priceLabel.text = priceFormatter.string(for: price)

注意
所生成的prediction(solarPanels:greenhouses:size:)方法会抛出异常。在使⽤Core ML 的时候,您⼤多数时候遇到的错误通常是:传递给⽅法的输入数据类型与模型预期的输入类型不同——例如,⽤错误格式表示的图片类型。在示例应用当中,预期的输入类型为 Double。所有的类型不匹配错误都会在编译时被捕获,如果遇到了了某种错误,那么示例应用就会弹出一个致命错误。

 

构建并运行 Core ML 应用

Xcode 会将 Core ML 模型编译到资源当中,从⽽而进⾏行行优化并能够在设备上运⾏行行。优化过的模 型表征会包含在您的应⽤用程序包当中,在应⽤用在设备上运⾏行行的时候,就可以⽤用之来进⾏行行预测。

 

官方文档:https://developer.apple.com/documentation/coreml/integrating_a_core_ml_model_into_your_app?language=objc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值