文章

将经过训练的模型转换为 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 中添加简单的模型,将输入数据传递给模型,并处理模型的预测。