【发布时间】:2019-04-14 20:21:02
【问题描述】:
我是 Keras 的新手,我正在尝试使用卷积自动编码器进行图像压缩。
特别是我正在压缩所有尺寸 (365,929) 的图像。当我为图像使用 numpy 二维数组时,我添加了一个维度以使它们成为张量。
当使用此代码向网络提供图像时:
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 以拍摄尺寸不均匀的图像?
【问题讨论】:
标签: python-3.x keras