Я новичок в Keras и пытаюсь использовать сверточные авто-кодеры для сжатия изображений.
В частности, я сжимаю изображения всех размеров (365 929).Поскольку я работаю с массивными двумерными массивами для изображений, я добавляю измерение, чтобы сделать их тензорами.
При заполнении сети изображениями с этим кодом:
X,X_test=train_test_split(images,test_size=0.1)
# Adds 1D to each matrix, so to have a tensor.
X=np.array([np.expand_dims(i,axis=2) for i in X])
# X is (1036, 365, 929, 1) now
X_test=np.array([np.expand_dims(i,axis=2) for i in X_test])
inputs = Input(shape=(365, 929, 1))
h = Conv2D(4,(3,3),activation='relu',padding="same")(inputs)
encoded = MaxPooling2D(pool_size=2,padding="same")(h)
h = Conv2D(4,(3,3),activation='relu',padding="same")(encoded)
h = UpSampling2D((2,2))(h)
outputs = Conv2D(1,(3,3),activation='relu',padding="same")(h)
model = Model(inputs=inputs, output=outputs)
model.compile(optimizer='adam', loss='mse')
model.fit(X, X, batch_size=64, nb_epoch=5, validation_split=.33)
Я получаюследующая ошибка:
ValueError: Error when checking target: expected conv2d_3 to have shape (366, 930, 1) but got array with shape (365, 929, 1)
Как я могу решить эту проблему?Как я могу изменить CNN для получения изображений с неравномерными размерами?