PaddlePaddle / X2Paddle

Deep learning model converter for PaddlePaddle. (『飞桨』深度学习模型转换工具)
http://www.paddlepaddle.org/
Apache License 2.0
727 stars 164 forks source link

MobileNetV2.onnx转换过程报错 #990

Open masteryi-0018 opened 1 year ago

masteryi-0018 commented 1 year ago

问题描述

网络为来自tensorflow官方的预训练的MobileNetV2,首先将tensorflow模型转换为onnx,使用x2paddle将onnx转换为paddle时,发生以下错误:

具体信息

我的尝试

经过简单调试发现在get_default_args函数中进行判断时,打印axis的信息,可以看到attrs[default_k]是一个列表,即[2 3],但是使用数据类型判断是否为list时,结果为False,造成了条件判断错误,使用Netron观察网络,也可以看到在Squeeze算子的地方,出现了[2, 3]的参数

firedent commented 9 months ago

解决方案:从TF转ONNX的时候,将opset设置为<13。

import tf2onnx
output_path = model.name + ".onnx"
model_proto, _ = tf2onnx.convert.from_keras(model, input_signature=spec, opset=12, output_path=output_path)

原因:Squeeze-13的axis参数类型为tensor(int64),Squeeze-11的axis参数类型为list of ints。