这实际上是我在 Stackoverflow 上的第一篇文章,我对机器学习还很陌生。我目前正在尝试使用 VGG16 为简单的图像分类任务训练卷积神经网络。它基于本教程: http: //www.codesofinterest.com/2017/08/bottleneck-features-multi-class-classification-keras.html。我的目标是将此模型转换为 CoreML 并将其用于 iOS 上的图像分类。
经过一番努力,我能够使用以下转换线成功地将 Keras 模型转换为 CoreML 模型:
coreml_model = coremltools.converters.keras.convert('模型路径',image_input_names = '数据',class_labels = '类路径')
然而,在将 CoreML 模型复制到 Xcode 后,它请求一个形状为 512,1,1 的多数组(我猜这是由于神经网络的图像数组格式造成的)还有其他几篇文章提到使用特定的很重要此处提到的 keras、tensorflow 和 python(2.7) 版本 这并没有改变问题。
在 Apple Developer 论坛中,他们建议将转换代码更改为以下行:
coreml_model = coremltools.converters.keras.convert('模型路径',input_names='data',image_input_names = 'data',is_bgr=True,class_labels = '类路径')
这实际上似乎改变了一些东西,但是现在我无法将我的 keras 模型转换为 CoreML 模型,得到这个特定的错误:
ValueError:图像输入不支持通道值 512
现在看来问题在于卷积神经网络的代码。一些人认为这可能是由于 keras 的 dim_ordering(在我的情况下是最后一个通道)和/或输入形状造成的。但是,至少 input_shape 看起来像图像。
任何人都知道如何将输入从多数组成功更改为图像?
提前感谢您的任何建议。