Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 预期conv2d_7具有形状(220,220,1),但获得具有形状(224,224,1)的数组_Tensorflow_Keras_Autoencoder_Deconvolution_Max Pooling - Fatal编程技术网

Tensorflow 预期conv2d_7具有形状(220,220,1),但获得具有形状(224,224,1)的数组

Tensorflow 预期conv2d_7具有形状(220,220,1),但获得具有形状(224,224,1)的数组,tensorflow,keras,autoencoder,deconvolution,max-pooling,Tensorflow,Keras,Autoencoder,Deconvolution,Max Pooling,我遵循keras blog()的教程来构建一个自动编码器 我使用了我自己的数据集,在我的224*224大小的图像上使用了以下代码 input_img = Input(shape=(224,224,1)) # size of the input image x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img) x = MaxPooling2D((2, 2), padding='same')(x) x = Conv2

我遵循keras blog()的教程来构建一个自动编码器

我使用了我自己的数据集,在我的224*224大小的图像上使用了以下代码

input_img = Input(shape=(224,224,1)) # size of the input image
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)

# at this point the representation is (4, 4, 8) i.e. 128-dimensional

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='adadelta', loss='binary_crossentropy')
当我看到autoencoder的摘要时,它给出的输出使得最后一层有220乘220。我附上了该摘要的快照

我不明白的是它是如何从 112*112. 我希望conv2d_6(conv2d)能给我112*112和16个内核

如果我删除Conv2D_6层,那么它将工作。但我想要它,否则我会做两次上采样。我不明白怎么了


有人能给我介绍一下吗?

您需要在该层中添加
padding='same'
,这样它看起来应该像:

x = Conv2D(16, (3, 3), activation='relu', padding='same')(x)
然后它将保持相同的尺寸。 如果没有它,您就不会使用任何填充,并且因为您的内核是3乘3的,所以在该层之后,您的112*112转换为110*110