首页 评论

详解苹果Core ML:如何为iOS创建机器学习应用?

 

获取Core ML模型

如何将 Core ML 模型用在你的应用中?Core ML 支持大量机器学习模型,包括神经网络、数集成、支持向量机和广义的线性模型。Core ML 需要 Core ML 格式(.mlmodel)。苹果已经以该格式提供了一些流行的开源模型,请访问:https://developer.apple.com/machine-learning。你可以下载这些模型,并用在你的应用中。另外,一些研究组和大学也会发布自己的模型和训练数据,这些可能并不是 Core ML 模型格式的。要使用这些模型,请将其转换成 Core ML 格式。

将Core ML模型用在你的应用中

下面给出了一个示例,将一个训练好的模型 MarsHabitatPricer.mlmodel 用在了一个简单应用中,以用来预测火星上的地价。

1. 将模型添加到你的Xcode项目

通过将模型拖拽到项目导航即可将该模型添加到你的 Xcode 项目。

你可以在 Xcode 中打开模型来查看关于该模型的信息——包括模型的类型及其需要的输入和输出。该模型的输入是太阳能电池板和温室的数量,以及栖息地的大小(单位:英亩)。该模型的输出是该栖息地的预测价格。

2. 在代码中创建模型

Xcode 也会使用关于该模型输入和输出的信息来自动生成一个该模型的自定义的编程接口,你可以在代码中使用这些接口来和该模型进行交互。对于 MarsHabitatPricer.mlmodel,Xcode 会生成几个接口,其中 MarsHabitatPricer 表示该模型,MarsHabitatPricerInput 表示该模型的输入,MarsHabitatPricerOutput 则是该模型的输出。

使用生成的 MarsHabitatPricer 类的初始化器来创建该模型:

let model = MarsHabitatPricer()

3. 将输入值输入该模型

这个示例应用使用了 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)

4. 使用模型来做预测

MarsHabitatPricer 类有一个生成的 prediction(solarPanels:greenhouses:size:) 方法(method),可用于根据模型的输入值预测一个价格。在这个案例中,输入是太阳能电池板和温室的数量,以及栖息地的大小(单位:英亩)。这个方法的结果是一个 MarsHabitatPricerOutput 实例 marsHabitatPricerOutput

guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels,

greenhouses: greenhouses, size: size) else {

fatalError("Unexpected runtime error.")

}

获取 marsHabitatPricerOutput 的 price 属性来获取预测的价格,并将结果展示在该应用的用户界面上:

let price = marsHabitatPricerOutput.price

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

注:生成的 prediction(solarPanels:greenhouses:size:) 方法可能会报错。你会遇到的最常见的错误类型是你输入该方法的数据的类型与该模型所需的输入数据类型不符——比如,格式不对的图片。在这个示例应用中,输入是 Double 类型的。任何类型不匹配都会在编译时显现,对于这个示例应用而言,如果有什么地方不对,它就会报出一个致命错误。

5. 构建和运行一个 Core ML 应用

Xcode 可以将该 Core ML 模型编译成一个资源(resource),其已经为设备上的运行进行了优化。这种优化了的模型的表示被包含在你的应用捆绑(app bundle)中,而且该应用在设备上运行时会使用这个模型来进行预测。

官方微博/微信

每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。

↑扫描二维码

想在手机上看科技资讯和科技八卦吗?

想第一时间看独家爆料和深度报道吗?

请关注TechWeb官方微信公众帐号:

1.用手机扫左侧二维码;

2.在添加朋友里,搜索关注TechWeb。

手机游戏更多