将使用第三方机器学习工具创建且经过训练的模型转换为 Core ML 模型格式。
框架
- Core ML
概览
使用受支持的第三方机器学习框架创建和训练模型后,你可以使用 Core ML 工具或第三方转换工具 (如 MXNet 转换器 (英文) 或 TensorFlow 转换器 (英文)) 将模型转换为 Core ML 模型格式。否则你将需要创建自己的转换工具。
使用 Core ML 工具
Core ML 工具 (英文) 是一个 Python 包,可将各种类型的模型转换为 Core ML 模型格式。下文表 1 中列出了受支持的模型和第三方框架。
模型类型 |
支持的模型 |
支持的框架 |
---|---|---|
神经网络 |
前馈、卷积、循环 |
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.
然后,将得到的模型存储为 Core ML 模型格式。
根据你的模型,你可能需要更新输入、输出和标签,或者可能需要声明图像名称、类型和格式。可用选项因工具而异,因此转换工具内置了更多文档。有关 Core ML 工具的更多信息,请参阅“程序包文档 (英文)”。
或者,自己编写自定义转换工具
如果上述所列工具不支持你需要转换的模型格式,你可以创建自己的转换工具。
在编写自己的转换工具时,会涉及到从模型的输入、输出和架构表示方法至 Core ML 模型格式的转换。为此,你需要定义每一层的模型架构以及每一层与其他层的连接。以 Core ML 工具 (英文) 提供的转换工具为例,它们展示了如何将使用第三方框架创建的各种模型类型转换为 Core ML 模型格式。
注释
Core ML 模型格式由一组协议缓冲文件定义,详见“Core ML 模型规范 (英文)”。