Я пытался следовать руководству по Keras, чтобы создать автоэнкодер для MNIST. Автоэнкодер сработал, а затем я попытался изменить изображения и, следовательно, форму ввода с 28, 28, 1
на 150, 150, 3
, и я получаю следующую ошибку:
ValueError: Ошибка при проверке цели: ожидалось, что conv2d_6 будет иметь форму (148, 148, 1), но получил массив с формой (150, 150, 3)
Архитектура автоэнкодера:
input_img = Input(shape=(150, 150, 3))
x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
x = Conv2D(16, (3, 3), activation='relu')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)
autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer=Adam(0.01), loss='binary_crossentropy')
Настройки поезда:
autoencoder.fit(x_train, y_train,
epochs=50,
batch_size=512,
shuffle=True,
validation_data=(x_test, y_test))
Мои формы данных следующие:
x_train shape: (4022, 150, 150, 3)
y_train shape: (4022, 150, 150, 3)
x_test shape: (447, 150, 150, 3)
y_test shape: (447, 150, 150, 3)
Совместная ссылка на мою рабочую область: