文章
将经过训练的模型转换为 Core ML
将使用第三方机器学习工具创建且经过训练的模型转换为 Core ML 模型格式。
概览
使用受支持的第三方机器学习框架创建和训练模型后,您可以使用 Core ML 工具或第三方转换工具 (如 MXNet 转换器 (英文) 、(ONNX 转换https://github.com/onnx/onnx-coreml)或 TensorFlow 转换器 (英文)) 将模型转换为 Core ML 模型格式。否则您将需要创建自己的转换工具。
使用 Core ML 工具(coremltools)
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 模型格式由一组协议缓冲文件定义,详见“Core ML 模型规范 (英文)”。