将 Google 的 SavedModel 转换为 Apple 的 mlmodel

Posted

技术标签:

【中文标题】将 Google 的 SavedModel 转换为 Apple 的 mlmodel【英文标题】:Convert Google's SavedModel to Apple's mlmodel 【发布时间】:2017-11-11 18:26:45 【问题描述】:

本周 Apple announced 支持经过训练的 ML 模型。

如何将经过训练的 Tensorflow 模型(SavedModel 格式的 Google Cloud Machine Learning Engine 模型)转换为 Apple Core ML 模型(.mlmodel 格式)?

【问题讨论】:

【参考方案1】:

您应该使用 coremltools(python 包)。

查看WWDC Session 710 Video "Core ML In Depth"

【讨论】:

【参考方案2】:

这取决于您的 TensorFlow 模型包含什么。 coremltools 不支持 TensorFlow,因此您必须编写自己的转换器。但这仅在您的模型仅包含 mlmodel 格式支持的内容时才有效。您可以从 coremltools 网页下载此格式的规范。由于可以在 TensorFlow 中构建任意复杂度的计算图,因此 coremltools 目前不支持它也就不足为奇了(因为 mlmodel 本身只支持有限数量的模型类型)。

【讨论】:

感谢您的回答。 Apple 似乎支持 InceptionV3,所以如果只是重新训练 InceptionV3(根据github.com/GoogleCloudPlatform/cloudml-samples/tree/master/…),您认为可以编写转换器,对吗? 我确信可以为(重新训练的)Inception-v3 编写转换器,但很难说 Apple 是如何转换他们的 Inception 的——他们是使用 coremltools 还是使用一些自定义脚本?谁知道... @ChuckFinley 你有进步吗? 不,因为其他优先事项。答案是聘请@MatthijsHollemans 编写转换器。

以上是关于将 Google 的 SavedModel 转换为 Apple 的 mlmodel的主要内容,如果未能解决你的问题,请参考以下文章

如何将 TensorRT SavedModel 加载到 TensorFlow Estimator?

Tensorflow 2,将 .h5 模型转换为 .tflite,缺少 .pb 和 .pbtext

TensorFlow:如何以及为啥要使用 SavedModel

将基于 TensorFlow GraphDef 的模型导入 TensorFlow.js

由于未加载渐变,微调 SavedModel 失败

如何使用 export_savedmodel 函数导出 Estimator 模型