Open masteryi-0018 opened 1 year 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。
问题描述
网络为来自tensorflow官方的预训练的MobileNetV2,首先将tensorflow模型转换为onnx,使用x2paddle将onnx转换为paddle时,发生以下错误:
具体信息
模型来源 MobileNetV2:
然后将tensorflow转换为onnx:
版本信息 PaddlePaddle => :2.5.1: X2Paddle => :1.4.1: 来源框架版本(PyTorch/TF/ONNX/Caffe) => :tf2onnx: 1.15.0,onnx: 1.13.1,tensorflow: 2.13.0
我的尝试
经过简单调试发现在
get_default_args
函数中进行判断时,打印axis的信息,可以看到attrs[default_k]是一个列表,即[2 3],但是使用数据类型判断是否为list时,结果为False,造成了条件判断错误,使用Netron观察网络,也可以看到在Squeeze算子的地方,出现了[2, 3]的参数