文章

将经过训练的模型转换为 Core ML

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

概览

使用受支持的第三方机器学习框架创建和训练模型后,你可以使用 Core ML 工具或第三方转换工具 (如 MXNet 转换器 (英文)TensorFlow 转换器 (英文)) 将模型转换为 Core ML 模型格式。否则你将需要创建自己的转换工具。

使用 Core ML 工具

Core ML 工具 (英文) 是一个 Python 包,可将各种类型的模型转换为 Core ML 模型格式。下文表 1 中列出了受支持的模型和第三方框架。

表 1

Core ML 工具支持的模型和第三方框架

模型类型

支持的模型

支持的框架

神经网络

前馈、卷积、循环

Caffe v1

Keras 1.2.2+

树集成

随机森林、提升树、决策树

scikit-learn 0.18

XGBoost 0.6

支持向量机

标量回归、多元分类

scikit-learn 0.18

LIBSVM 3.22

广义线性模型

线性回归、逻辑回归

scikit-learn 0.18

特征工程

稀疏向量矢量化、稠密向量矢量化、分类处理

scikit-learn 0.18

管道模型

顺序链模型

scikit-learn 0.18

转换模型

根据模型所用的第三方框架,你可以使用对应的 Core ML 转换器转换相应模型。调用转换器的 convert 方法,并将得到的模型存储为 Core ML 模型格式 (.mlmodel)。

例如,如果模型是使用 Caffe 创建的,请将 Caffe 模型 (.caffemodel) 传递给 coremltools.converters.caffe.convert 方法。

import coremltools
coreml_model = coremltools.converters.caffe.convert('my_caffe_model.caffemodel')

然后,将得到的模型存储为 Core ML 模型格式。

coremltools.utils.save_spec(coreml_model, 'my_model.mlmodel')

根据你的模型,你可能需要更新输入、输出和标签,或者可能需要声明图像名称、类型和格式。可用选项因工具而异,因此转换工具内置了更多文档。有关 Core ML 工具的更多信息,请参阅“程序包文档 (英文)”。

或者,自己编写自定义转换工具

如果上述所列工具不支持你需要转换的模型格式,你可以创建自己的转换工具。

在编写自己的转换工具时,会涉及到从模型的输入、输出和架构表示方法至 Core ML 模型格式的转换。为此,你需要定义每一层的模型架构以及每一层与其他层的连接。以 Core ML 工具 (英文) 提供的转换工具为例,它们展示了如何将使用第三方框架创建的各种模型类型转换为 Core ML 模型格式。

另请参阅

准备工作

获取 Core ML 模型

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

将 Core ML 模型集成到你的 App 中 (英文)

向 App 中添加简单的模型,将输入数据传递给模型,并处理模型的预测。