Python Conv自动编码器层进程
我打算设置一个简单的卷积自动编码器: 图层(类型)输出形状参数# 输入(InputLayer)(无、64、64、1)0Python Conv自动编码器层进程,python,tensorflow,keras,conv-neural-network,autoencoder,Python,Tensorflow,Keras,Conv Neural Network,Autoencoder,我打算设置一个简单的卷积自动编码器: 图层(类型)输出形状参数# 输入(InputLayer)(无、64、64、1)0 编码器_conv_1(Conv2D)(无、64、64、32)320 最大池2D_1(最大池2(无、32、32、32)0 解码器conv_1(Conv2D)(无、30、30、32)9248 上采样2D上采样1(上采样2(无、60、60、32)0 输出(Conv2D)(无、60、60、1)289 为什么我的最后一层没有返回到64、64、1?或者更确切地说,为什么解码器转换
编码器_conv_1(Conv2D)(无、64、64、32)320
最大池2D_1(最大池2(无、32、32、32)0
解码器conv_1(Conv2D)(无、30、30、32)9248
上采样2D上采样1(上采样2(无、60、60、32)0
输出(Conv2D)(无、60、60、1)289
为什么我的最后一层没有返回到64、64、1?或者更确切地说,为什么解码器转换1层将返回到30、30、32?您错过了相同的填充。请尝试以这种方式
inp = Input((64,64,1))
c = Conv2D(32, 3, padding='same')(inp)
c = MaxPool2D()(c)
c = Conv2D(32, 3, padding='same')(c) # <=== padding same
c = UpSampling2D()(c)
out = Conv2D(1, 3, padding='same')(c)
m = Model(inp, out)
m.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_5 (InputLayer) [(None, 64, 64, 1)] 0
_________________________________________________________________
conv2d_8 (Conv2D) (None, 64, 64, 32) 320
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 32, 32, 32) 0
_________________________________________________________________
conv2d_9 (Conv2D) (None, 32, 32, 32) 9248
_________________________________________________________________
up_sampling2d_2 (UpSampling2 (None, 64, 64, 32) 0
_________________________________________________________________
conv2d_10 (Conv2D) (None, 64, 64, 1) 289
=================================================================
inp=输入((64,64,1))
c=Conv2D(32,3,padding='same')(inp)
c=MaxPool2D()(c)
c=Conv2D(32,3,padding='same')(c)#这就解决了问题。我不知道为什么最后一层缺少padding属性。谢谢。