【问题标题】:Conv2d wrong dimensions on KerasKeras 上的 Conv2d 尺寸错误
【发布时间】: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


    【解决方案1】:

    您的问题在于 UpSampling2D。您可以用 0 不对称地填充图像,然后将图像裁剪为其原始大小,如 here 所述。 为了帮助调试,您可以使用print(model.Summary()) 检查所有层的尺寸。

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 1970-01-01
      • 2018-09-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 2018-09-18
      相关资源
      最近更新 更多