加入收藏 | 设为首页 | 会员中心 | 我要投稿 无忧刷机网 - 51刷机网 (https://www.51shuaji.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 苹果频道 > 苹果资讯 > 正文

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

发布时间:2017-06-07 12:15:49 所属栏目:苹果资讯 来源:www.sohu.com
导读:原标题:深度|详解苹果CoreML:如何为iOS创建机器学习应用?选自developer.apple机器之心编译参与:吴攀在昨天开幕的WWDC2017开发者大会上,苹果宣布了一系列新的面向开发者的机器学习API,包括面部识别的视觉API、自然语言处...

原标题:深度|详解苹果CoreML:如何为iOS创建机器学习应用?选自developer.apple机器之心编译参与:吴攀在昨天开幕的WWDC2017开发者大会上,苹果宣布了一系列新的面向开发者的机器学习API,包括面部识别的视觉API、自然语言处...

原标题:深度 | 详解苹果Core ML:如何为iOS创建机器学习应用?

选自developer.apple

机器之心编译

参与:吴攀

在昨天开幕的 WWDC 2017 开发者大会上,苹果宣布了一系列新的面向开发者的机器学习 API,包括面部识别的视觉 API、自然语言处理 API,这些 API 集成了苹果所谓的 Core ML 框架;参阅机器之心报道《苹果开发者大会 WWDC 2017:首次全面展示苹果的人工智能实力》。软件主管兼高级副总裁 Craig Federighi 介绍说,Core ML 的核心是加速在 iPhone、iPad、Apple Watch 上的人工智能任务,支持深度神经网络、循环神经网络、卷积神经网络、支持向量机、树集成、线性模型等。大会之后,苹果开发者网站更新了相关文档,对 Core ML 进行了更加详细的介绍。机器之心在本文中对该文档的内容进行了翻译和整理。更多详情可访问原文档。

Core ML 文档地址:https://developer.apple.com/documentation/coreml

Core ML 介绍

使用 Core ML,你可以将训练好的机器学习模型整合到你的应用中。它支持以下操作系统:

  • iOS 11.0+Beta

  • macOS 10.13+Beta

  • tvOS 11.0+Beta

  • watchOS 4.0+Beta

训练好的模型(trained model)是将一个机器学习算法应用到一个训练数据集之后所得到的结果。然后该模型可以基于新的输入数据而进行预测。比如,如果一个模型在一个地区的历史房价数据上进行了训练,那么它就可能能够根据房子的卧室和浴室数量来预测房价。

  

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

Core ML 是域特定的框架和功能的基础。Core ML 支持用于图像分析的 Vision;用于自然语言处理的 Foundation(比如 NSLinguisticTagger 类)和用于评估已经学习到的决策树的 GameplayKit。Core ML 本身构建于低层面的原语(primitives)之上,比如 Accelerate、BNNS 和 Metal Performance Shaders。

  

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

Core ML 为设备性能进行了优化,从而减少了内存占用和功耗。严格在设备上运行能够确保用户数据的隐私,并且能保证你的应用在没有网络连接时也能够工作和响应。

如何使用 Core ML?

获取 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 项目。

  

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

你可以在 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 应用

(编辑:无忧刷机网 - 51刷机网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读