IOS预测应用程序在预测IOS14中的.mlmodel时抛出错误

IOS预测应用程序在预测IOS14中的.mlmodel时抛出错误,ios,coreml,Ios,Coreml,我尝试使用我的.mlmodel在IOS14上进行预测,方法与下面的apple文档链接中描述的相同: 我得到下面的错误。我不明白怎么了。我的两个输入和输出都按预期设置,并且模型似乎正确地从TF2转换为mlmodel。有没有关于如何分析和解决问题的建议 /Library/Caches/com.apple.xbs/Sources/MetalImage/MetalImage-124.0.29/MPSNeuralNetwork/Filters/MPSCNNKernel.mm:752:断言失败`[mpsc

我尝试使用我的.mlmodel在IOS14上进行预测,方法与下面的apple文档链接中描述的相同:

我得到下面的错误。我不明白怎么了。我的两个输入和输出都按预期设置,并且模型似乎正确地从TF2转换为mlmodel。有没有关于如何分析和解决问题的建议

/Library/Caches/com.apple.xbs/Sources/MetalImage/MetalImage-124.0.29/MPSNeuralNetwork/Filters/MPSCNNKernel.mm:752:断言失败`[mpscnn卷积编码…]错误:目标可能不是零。


这是Metal的错误,用于在GPU上运行模型。您可以尝试在CPU上运行它,看看它是否可以正常工作。(如果在CPU上运行也会出现错误,则说明您的模型中存在错误。)


嗨,Matthijs,你说得对。上面的代码修复了这个问题,因为它是在CPU上运行的。然而,它产生了另一个错误,当然是关于模型:[Espresso::handle_ex_plan]exception=Espresso exception:“无效状态”:空输出blob[来自层的异常:54:StatefPartitionedCall/StyleEncoder/sequential_10/conv/conv/Conv2Dx]2020-11-24 13:45:41.697698+0300头发[627:70815][coreml]计算NN输出时出错-1听起来您模型中的某些内容不正确。模型转换实用程序(coremltools等)并不完美,有时会生成实际不起作用的模型。在本例中,错误似乎出现在层
StatefulPartitionedCall/StyleEncoder/sequential_10/conv/conv/Conv2Dx
附近,但也可能出现在其他地方,Core ML在特定层时放弃了。嗨,Matthijs,我发现了有问题的层。它是错误中命名的卷积层,即使数字不正确。当我移除图层时,问题消失了。我已将其图片附在原始邮件中。模型中的最后一个卷积层是错误的。然而,似乎没有什么是不正确的。它的偏差值作为一个单独的层是谨慎的,我将它们组合起来,如上图所示。它没有解决这个问题。在这种情况下,我应该删除该层并手动创建卷积层吗?
let config = MLModelConfiguration()
config.computeUnits = .cpuOnly

let model = YourModel(configuration: config)
...