ожидал, что conv2d_28_input имеет 4 измерения, но получил массив с формой, состоящей только из 3 измерений - PullRequest
1 голос
/ 05 февраля 2020

Я построил модель классификации изображений, но получаю сообщение об ошибке 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))])

Когда я запускаю последний блок кода, я получаю ошибку, упомянутую выше

1 Ответ

0 голосов
/ 05 февраля 2020

Вам необходимо добавить размер пакета, который отсутствует в ваших данных, даже если это одно изображение:

final = img_to_array(image)
final = np.expand_dims(final, axis=0)
prediction = model.predict(final)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...