我正在尝试通过onnx将pytorch“提拉米苏” UNet(从:https://github.com/bfortuner/pytorch_tiramisu)转换为coreml,并且在onnx-coreml的_operators.py
中遇到此错误:
TypeError: Error while converting op of type: Concat. Error message: Unsupported axis 1 in input of shape
关于我可能如何解决此问题的任何想法? 图层文件在这里,以供参考:https://github.com/bfortuner/pytorch_tiramisu/blob/master/models/layers.py
更新1:所以,进一步深入研究,我注意到我的某些graph.shape_dicts包含没有值/形状的键:例如'422': (1, 324, 2, 4), '423': (1, 324, 2, 4), '424': (1, 12, 2, 4), '425': (1, 48, 2, 4), '426': (), '427': (), '428': (), '429': (), '430': () [...]
我真的不确定这是怎么回事,还是我的原始模型onnx或onnx-coreml就是问题所在。但是考虑到这一点,我在if node.inputs[0] in graph.shape_dict:
中将if len(graph.shape_dict[node.inputs[0]]) != 0:
更改为_operators.py
)。这样就可以完成转换,尽管直到尝试了该模型之后,我才真正知道它是否正确转换了。
更新2:好的,因此生成的mlmodel无法通过validator error: Layer '427' of type 320 has 1 inputs but expects at least 2.
在Xcode中进行验证,我猜测这是(简单地)忽略了我在上面的“ UPDATE 1”中找到的空shape_dict值的结果。但显然该模型是错误的。错误可能起源于onnx吗?