Ошибки при преобразовании PyTorch Unet ("тирамису") в coreml через onnx
Я пытаюсь конвертировать Pytorch "тирамису" UNet (из: https://github.com/bfortuner/pytorch_tiramisu) в coreml через onnx, и я получаю эту ошибку в 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 не проходит проверку в Xcode с validator error: Layer '427' of type 320 has 1 inputs but expects at least 2.
Я предполагаю, что это является следствием (упрощенно) игнорирования пустых значений shape_dict, которые я нашел в "ОБНОВЛЕНИИ 1" выше. Но явно модель неверна. Может ли ошибка возникать в onnx?