为什么我会收到错误:p roblem解码CoreML文档?

时间:2017-06-11 22:01:29

标签: swift4 xcode9 coreml

我在Xcode 9 Beta上使用CoreML和Swift 4.0。

如果您在项目导航器中选择文件VGG16.mlmodel,则会收到错误消息:There was an problem decoding this document CoreML

此外,在代码中我得到了错误Use of unresolved identifier 'VGG16'Use of undeclared type 'VGG16'

从这里下载

VGG16.mlmodel https://developer.apple.com/machine-learning/

可能是什么问题?

模型的地方Places205-GoogLeNet,ResNet50和Inception v3一切正常。

3 个答案:

答案 0 :(得分:8)

根据要求,我会将我的评论充实为答案。

其他人已经提到了这一点,但你很可能已经下载了一些内容,或者模型本身已经破坏了。首先,我强烈建议不要在移动设备上使用VGG16型号或相关型号,因为它们的尺寸很大(VGG16为500 MB)。只要加载模型,你就会在iPhone 6上耗尽内存,你的应用程序大小将是巨大的,并且在加载这些权重时你将有一个很长的初始化时间。

我建议使用类似SqueezeNet变体的东西,它很小(约5 MB),在ImageNet上训练时可以更准确,并且不像Inception系列那样计算成本高。 Apple提到在其中一个Core ML WWDC会话中使用其中一个。

将模型添加到Xcode项目时,请确保它实际上已在目标中注册。 Xcode的当前测试版偶尔会忘记将其添加到目标中,因此请突出显示模型并检入文件检查器以确保它是应用程序目标的一部分。如果模型不在你的目标中,Xcode就不会为它自动生成Swift标题。

答案 1 :(得分:1)

  1. 请运行./setup.sh
  2. 选择VGG16.mlmodel的目标,请参阅此screenshot

答案 2 :(得分:0)

对于具有Dropout的模型,我得到同样的东西。尝试通过将权重复制到没有它们的新模型来删除这些图层。