我已经建立了图像分类模型,但是出现错误,提示ValueError: Error when checking input: expected conv2d_28_input to have 4 dimensions, but got array with shape (341, 720, 3)
我还更改了input_shape
函数中的model.add
这是我建立的模型:
model = Sequential()
#3 Convolutional layers
input_shape = X.shape[1:]
model.add(Conv2D(64, (3,3), input_shape = X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
#2 hidden layers
model.add(Flatten())
model.add(Dense(128))
model.add(Activation("relu"))
model.add(Dense(128))
model.add(Activation("relu"))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(loss="sparse_categorical_crossentropy", optimizer="adam", metrics=['accuracy'])
history=model.fit(X,y, batch_size=6, epochs=5, validation_split=0.1)
保存模型
model.save_weights("model.h5")
model.save('CNN.model')
预测输出类别
from keras.preprocessing.image import img_to_array, load_img
model = tf.keras.models.load_model("CNN.model")
image = load_img("/content/drive/My Drive/Images/Blackened/blackened-1.jpg") #image is stored here
final = img_to_array(image)
prediction = model.predict(final)
prediction = list(prediction[0])
print(CATEGORIES[prediction.index(max(prediction))])
运行最后的代码块时,出现上述错误
答案 0 :(得分:0)
您需要添加数据中缺少的批次尺寸,即使它是单个图像也是如此:
final = img_to_array(image)
final = np.expand_dims(final, axis=0)
prediction = model.predict(final)