8

我在 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 的 PS 一切正常。

4

3 回答 3

8

根据要求,我将把我的评论充实到一个答案中。

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

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

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

于 2017-06-21T18:19:21.263 回答
2
  1. 请运行./setup.sh
  2. 选择目标VGG16.mlmodel,看这个截图
于 2017-06-14T06:37:20.920 回答
0

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

于 2017-08-23T17:58:25.227 回答