Ошибка при проверке ввода: ожидалось, что плотный_1_input будет иметь 2 измерения, но получил массив с формой (1, 150, 150, 3) - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь предсказать, используя сохраненную модель, но получаю ошибку, которая ожидала, что density_1_input будет иметь 2 измерения, но получил массив с формой (1, 150, 150, 3).

    original = load_img(file_url, target_size=(150, 150))
    numpy_image = img_to_array(original)
    numpy_image = numpy_image/255

    model = tf.keras.models.load_model('my_model.h5')
    numpy_image = np.expand_dims(numpy_image, axis=0)
    #print(numpy_image)
    prediction = model.predict(numpy_image)

Вот Архитектура модели CNN

model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(IMG_WIDTH, IMG_HEIGHT, 3)))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.20))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.20))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.20))

model.add(Flatten())
model.add(Dense(1024, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid')) 

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop', 
              metrics=['accuracy'])
...