ios - 从 PyTorch 转换后 CoreML 模型出现“来自层的异常:149”问题
问题描述
我使用 PyTorch 训练了一个 YOLOv3-SPP 模型。然后我将其保存为 ONNX 模型,然后使用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 模型正常工作?
解决方案
推荐阅读
- java - 如何解决嵌套异常是 java.lang.NoClassDefFoundError: org/eclipse/jetty/server/session/SessionDataStore?
- google-sheets - 我可以将行标题转换为 Google 表格中的重复行值吗?
- coldfusion - CFCHART 未格式化 Y 标签
- python - 在 Python 中使用 np.histogram 函数中的 bin 和数据绘制直方图
- elasticsearch - 标记慢速弹性搜索建议查询
- c# - 如何在没有数据注释和模型的情况下实现自定义属性验证
- r - R:使用数据框中的字符条目来索引行名和列名以从另一个数据框中提取元素
- java - Springboot:无法评估表达式'hasRole('USER')和#userId == principal.userId'
- go - 如何使用 tview 在 Flex 中更新 TextView 的内容
- micronaut - Micronaut 的 HttpClient:连接池、connection-pool-idle-timeout 和 connect-ttl:它们如何协同工作?