tf.keras 模型到 coreml 模型,不支持 BatchNormalization

Posted

技术标签:

【中文标题】tf.keras 模型到 coreml 模型,不支持 BatchNormalization【英文标题】:tf.keras model to coreml model, BatchNormalization not supported 【发布时间】:2021-09-02 08:05:01 【问题描述】:

我正在开发一个图像识别项目,该项目使用来自 keras(张量流版本)的 InceptionV3。我已经训练了一个输出层,现在我正在尝试将其导出为 coreMl 格式,以便在 ios 设备上使用它。

然而,我得到了错误:

ValueError:不支持 Keras 层 ''。

我跑的时候:

model.save('IncepNet_SN_class.h5')

output_labels = ['0', '1', '2', '3', '4']

model_2 = tf.keras.models.load_model('IncepNet_SN_class.h5')

your_model = coremltools.converters.keras.convert('IncepNet_SN_class.h5', input_names=['image'], output_names=['output'], 
                                                   class_labels=output_labels)

your_model.save('IncepNet_SN_class.mlmodel')

有人知道怎么处理吗?

非常感谢,卢卡斯。

【问题讨论】:

您无法使用 Core ML 工具 Keras 转换器转换 TF 2.x 模型。你需要使用coremltools.convert(...) 先生,您是真正的英雄。效果很好,非常感谢! 【参考方案1】:

来自 cmets

您无法使用 Core ML 工具 Keras 转换 TF 2.x model 转换器。你需要使用coremltools.convert(...)(转述自Matthijs Hollemans)

【讨论】:

以上是关于tf.keras 模型到 coreml 模型,不支持 BatchNormalization的主要内容,如果未能解决你的问题,请参考以下文章

从不同版本的 tf.keras 加载保存的模型(从 tf 2.3.0 到 tf 1.12)

JSONDecodeError:加载 tf.Keras 模型时的期望值

如何在 Tensorflow-2.0 中绘制 tf.keras 模型?

tf.keras 模型 多个输入 tf.data.Dataset

无法将 tf.keras 模型正确转换为珊瑚 TPU 的量化格式

尝试在 tf.keras 上重命名预训练模型时出错