Keras 卷积神经网络转换为 CoreML 模型的输入是多数组而不是图像?
Posted
技术标签:
【中文标题】Keras 卷积神经网络转换为 CoreML 模型的输入是多数组而不是图像?【英文标题】:Keras Convolutional Neural Network converted to CoreMLModel has an input of multiarray instead of image? 【发布时间】:2018-04-17 03:00:32 【问题描述】:# Importing the Keras libraries and packages
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
# Initialising the CNN
chars74k_classifier = Sequential()
# Adding the first convolutional layer
chars74k_classifier.add(Conv2D(32, (3, 3), activation = 'relu', input_shape = (64, 64, 3)))
# Adding the max pooling layer
chars74k_classifier.add(MaxPooling2D(pool_size = (2, 2)))
chars74k_classifier.add(Dropout(0.25))
# Adding the second convolutional layer
chars74k_classifier.add(Conv2D(32, (3, 3), activation='relu'))
# Adding a second max pooling layer
chars74k_classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Adding the third convolutional layer
chars74k_classifier.add(Conv2D(64, (3, 3), activation='relu'))
# Adding a third max pooling layer
chars74k_classifier.add(MaxPooling2D(pool_size = (2, 2)))
chars74k_classifier.add(Dropout(0.50))
# Adding the fourth convolutional layer
chars74k_classifier.add(Conv2D(128, (3, 3), activation='relu'))
# Adding a fourth max pooling layer
chars74k_classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Adding the flattening layer
chars74k_classifier.add(Flatten())
# Adding the fully connected layers (Normal ANN)
chars74k_classifier.add(Dense(activation = 'relu', units = 128))
chars74k_classifier.add(Dense(activation = 'relu', units = 128))
chars74k_classifier.add(Dense(activation = 'softmax', units = 26))
# Compiling the CNN
chars74k_classifier.compile(optimizer='Adadelta',
loss='categorical_crossentropy',
metrics=['accuracy'])
这是我为我的 Keras 卷积神经网络编写的代码,在 keras 中使用 keras 2.0.6 和 tensorflow 1.1.0 进行训练时,它在测试集上的准确率高达 86%。当我将此模型导出到 CoreML 模型时,输入不是图像,而是多数组?由于网络的输入实际上是带颜色的 64x64 图像,我该如何解决这个问题?
【问题讨论】:
【参考方案1】:在您的 coremltools 转换脚本中,指定 input_image_names="input"
参数。
【讨论】:
以上是关于Keras 卷积神经网络转换为 CoreML 模型的输入是多数组而不是图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Turi Create 创建的 CoreML 模型转换为 Keras?
将 keras 模型转换为 coreml 时出错(“InputLayer”对象不可迭代)
将训练好的 Keras 图像分类模型转换为 coreml 并集成到 iOS11
.h5 keras 模型到 coreml 的分类转换在 IOS 中不起作用
如何将使用 Mask Rcnn 在自定义对象检测上创建蒙版图像的 Keras 模型转换为 CoreML 模型以在 iOS 应用程序中使用?