首页 > 解决方案 > BatchNormalization 层导致从 .h5 转换为 .onnx 时出错

问题描述

我需要将.h5模型转换为 a .onnx,但是当我使用BatchNormalization图层时,代码会出现以下错误:

TypeError:值“”不是有效的属性数据类型。

并给出警告:

tf 执行 eager_mode: True tf.keras model eager_mode: False WARN: 没有对应的 ONNX op 匹配类型为 PlaceholderWithDefault 的 tf.op 节点 keras_learning_phase 生成的 ONNX 模型需要在自定义 op 支持下运行。

如果我不使用这一层,代码运行,转换会成功,但我需要这一层。

转换代码为:

from tensorflow.python.keras import backend as K
from tensorflow.python.keras.models import load_model
import onnx
import keras2onnx

onnx_model_name = 'CNN_T_93_96_V_90_88.onnx'

model = load_model('CNN_T_93_96_V_90_88.h5')

onnx_model = keras2onnx.convert_keras(model, model.name)
onnx.save_model(onnx_model, onnx_model_name)

BatchNormalization层的行是:

model.add(BatchNormalization(momentum=momentum, scale=flag, center=flag))

标签: tensorflowkerasonnx

解决方案


推荐阅读