深度 | 详解苹果Core ML:如何为iOS创建机器学习应用?
|
原标题:深度|详解苹果CoreML:如何为iOS创建机器学习应用?选自developer.apple机器之心编译参与:吴攀在昨天开幕的WWDC2017开发者大会上,苹果宣布了一系列新的面向开发者的机器学习API,包括面部识别的视觉API、自然语言处... 原标题:深度 | 详解苹果Core ML:如何为iOS创建机器学习应用? 选自developer.apple 机器之心编译 参与:吴攀
Core ML 文档地址:https://developer.apple.com/documentation/coreml Core ML 介绍 使用 Core ML,你可以将训练好的机器学习模型整合到你的应用中。它支持以下操作系统:
训练好的模型(trained model)是将一个机器学习算法应用到一个训练数据集之后所得到的结果。然后该模型可以基于新的输入数据而进行预测。比如,如果一个模型在一个地区的历史房价数据上进行了训练,那么它就可能能够根据房子的卧室和浴室数量来预测房价。
![]() Core ML 是域特定的框架和功能的基础。Core ML 支持用于图像分析的 Vision;用于自然语言处理的 Foundation(比如 NSLinguisticTagger 类)和用于评估已经学习到的决策树的 GameplayKit。Core ML 本身构建于低层面的原语(primitives)之上,比如 Accelerate、BNNS 和 Metal Performance Shaders。
![]() 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 项目。
![]() 你可以在 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)
5. 构建和运行一个 Core ML 应用 (编辑:无忧刷机网 - 51刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



