【发布时间】:2022-11-08 01:19:42
【问题描述】:
我观察到 Keras 到 ONNX 转换的尺寸不匹配。 我将模型保存为 .h5 文件。 它可以成功保存并再次加载。 但是,将其转换为 ONNX 模型时,我会得到不同的输出尺寸。
我想我是因为 2D 输出而遇到这种情况,因为我的输出维度之一只是消失了。
加载 Keras 模型...
>>> keras_model = load_model('model_checkpoints/DGCNN_modelbest_with_noise.h5')
>>> keras_output = keras_model.output
>>> keras_output
<tf.Tensor 'dense_2/truediv_5:0' shape=(None, 432, 5) dtype=float32>
将 Keras 模型转换为 ONNX...
>>> input_keras_model = 'model_checkpoints/DGCNN_modelbest_with_noise.h5'
>>> output_onnx_model = 'model_checkpoints/DGCNN_modelbest_with_noise.onnx'
>>> keras_model = load_model(input_keras_model)
>>> onnx_model = onnxmltools.convert_keras(keras_model)
>>> onnxmltools.utils.save_model(onnx_model, output_onnx_model)
正在加载 ONNX 模型...
>>> model = onnx.load("model_checkpoints/DGCNN_modelbest_with_noise.onnx")
>>> for _output in model.graph.output:
... m_dict = MessageToDict(_output)
... dim_info = m_dict.get("type").get("tensorType").get("shape").get("dim")
... output_shape = [d.get("dimValue") for d in dim_info]
... print(m_dict["name"])
... print(output_shape)
...
dense_2
[None, None, '5']
有什么建议么? 我究竟做错了什么? 我没有看到很多多维输出层的例子。这是原因吗?
感谢您的时间。
【问题讨论】:
标签: python tensorflow keras onnx