tensorflow - 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))
解决方案
推荐阅读
- powershell - 无法使用 Powercli 检索“EsxCli”的“software.acceptance”值
- reactjs - 通过不同的id调用多个值
- python - QLabel 不会重新绘制像素图
- internet-explorer-11 - IE11框架集图像加载不是从页面出来的
- c++ - 升序排序,c++,带向量
- c# - 如何执行 Umbraco v4 项目
- python - Pyinstaller 无法执行脚本
- java - 为什么当我使用 bootRun vs java -jar 运行应用程序时类路径顺序不同
- c++ - 模板专业化与在模板参数类型上使用 if else
- jenkins - 上一个作业成功完成后,如何在特定时间后执行 Jenkins 作业?