"Исключение из уровня: 149" Проблема с моделью CoreML после преобразования из PyTorch
Я обучил модель YOLOv3-SPP с помощью PyTorch. Затем я сохранил ее как модель ONNX, а затем преобразовал в CoreML, используяonnx-coreml
. Когда я пытаюсь сделать прогноз, используя модель, я получаю такую ошибку:
YOLOv3-CoreML[13481:1004975] [espresso] [Espresso::handle_ex_plan] exception=Espresso exception: "Invalid state": reshape mismatching size: 13 13 24 1 1 -> 6 10 8 3 1 [Exception from Layer: 149: 300]
2020-03-16 13:46:05.248612-0500 YOLOv3-CoreML[13481:1004975] [coreml] Error computing NN outputs -1
Это код, который я использую для прогноза:
if let prediction = try? model.prediction(input_1: image) {
print("Output: \(prediction)")
}
Я немного покопался, чтобы найти слой № 149. Я использовал этот скрипт, чтобы найти его имя:
import coremltools
import numpy as np
mlmodel = coremltools.models.MLModel("model.mlmodel")
spec = mlmodel._spec
print(spec.neuralNetwork.layers[149])
Я нашел его имя "308". Итак, я открыл модель в Netron и получил следующее:
Рассматриваемый слой обведен красным. Как мне заставить мою модель CoreML работать правильно?