Keras 奇数图像的卷积层

Keras 奇数图像的卷积层,keras,Keras,我正在尝试构造一个卷积自动编码器,我使用的数据集由25 x 25个图像组成 input_img = Input ( shape = (25 , 25, 1)) layer = input_img layer = Conv2D (128 , kernel_size =(3 , 3) , activation = 'relu' , padding = 'same')( layer ) layer = MaxPooling2D ( pool_size =(2 , 2) , padding = 'sa

我正在尝试构造一个卷积自动编码器,我使用的数据集由25 x 25个图像组成

input_img = Input ( shape = (25 , 25, 1))

layer = input_img
layer = Conv2D (128 , kernel_size =(3 , 3) , activation = 'relu' , padding = 'same')( layer )
layer = MaxPooling2D ( pool_size =(2 , 2) , padding = 'same')( layer )
layer = Conv2D (128 , kernel_size =(3 , 3) ,activation = 'relu' , padding = 'same')( layer )
layer = MaxPooling2D ( pool_size =(2 , 2) , padding = 'same')( layer )
layer = Conv2D (128 , kernel_size =(3 , 3) ,activation = 'relu' , padding = 'same')( layer )
layer = Flatten ()( layer )
layer = Dense (32 , activation = 'relu')( layer )
layer = Dense (6)( layer )
encoded = layer

layer = Dense (32 , activation = 'relu')( encoded )
layer = Dense (6272 , activation = 'relu')( layer )
layer = Reshape ((7, 7, 128))( layer )
layer = Conv2D (128 , kernel_size =(3 , 3) ,activation = 'relu' , padding = 'same')( layer )
layer = UpSampling2D ((2 ,2))( layer )
layer = Conv2D (128 , kernel_size =(3 , 3) ,activation = 'relu' , padding = 'same')( layer )
layer = UpSampling2D ((2 ,2))( layer )
layer = Conv2D (1, kernel_size =(3 , 3) , padding = 'same')( layer )

autoencoder = Model ( input_img , layer )
但是,当我尝试这样做时,我得到以下维度:

input_35 (InputLayer)        (None, 25, 25, 1)         0         
_________________________________________________________________
conv2d_208 (Conv2D)          (None, 25, 25, 128)       1280      
_________________________________________________________________
max_pooling2d_72 (MaxPooling (None, 13, 13, 128)       0         
_________________________________________________________________
conv2d_209 (Conv2D)          (None, 13, 13, 128)       147584    
_________________________________________________________________
max_pooling2d_73 (MaxPooling (None, 7, 7, 128)         0         
_________________________________________________________________
conv2d_210 (Conv2D)          (None, 7, 7, 128)         147584    
_________________________________________________________________
flatten_32 (Flatten)         (None, 6272)              0         
_________________________________________________________________
dense_125 (Dense)            (None, 32)                200736    
_________________________________________________________________
dense_126 (Dense)            (None, 6)                 198       
_________________________________________________________________
dense_127 (Dense)            (None, 32)                224       
_________________________________________________________________
dense_128 (Dense)            (None, 6272)              206976    
_________________________________________________________________
reshape_74 (Reshape)         (None, 7, 7, 128)         0         
_________________________________________________________________
conv2d_211 (Conv2D)          (None, 7, 7, 128)         147584    
_________________________________________________________________
up_sampling2d_72 (UpSampling (None, 14, 14, 128)       0         
_________________________________________________________________
conv2d_212 (Conv2D)          (None, 14, 14, 128)       147584    
_________________________________________________________________
up_sampling2d_73 (UpSampling (None, 28, 28, 128)       0         
_________________________________________________________________
conv2d_213 (Conv2D)          (None, 28, 28, 1)         1153      
_________________________________________________________________
reshape_75 (Reshape)         (None, 1, 784)            0         
_________________________________________________________________
activation_14 (Activation)   (None, 1, 784)            0         
_________________________________________________________________
reshape_76 (Reshape)         (None, 28, 28, 1)         0         

我希望输入和输出维度完全相同,我也不知道为什么非采样层选择(14,14128),而卷积层选择(13,13128)

您可以使用
零填充2D
裁剪2D

input\u img=input(形状=(25,25,1))
图层=输入\u img
#图层=零填充(((3,0),(3,0))(图层)
layer=Conv2D(128,内核大小=(3,3),激活='relu',填充='same')(layer)
layer=MaxPoolig2D(池大小=(2,2),填充='相同')(层)
layer=Conv2D(128,内核大小=(3,3),激活='relu',填充='same')(layer)
layer=MaxPoolig2D(池大小=(2,2),填充='相同')(层)
layer=Conv2D(128,内核大小=(3,3),激活='relu',填充='same')(layer)
层=展平()(层)
层=密集(32,激活='relu')(层)
层=致密(6)(层)
编码=层
层=密集(32,激活='relu')(编码)
层=密集(6272,激活='relu')(层)
层=重塑((7,7,128))(层)
layer=Conv2D(128,内核大小=(3,3),激活='relu',填充='same')(layer)
图层=上采样2D((2,2))(图层)
layer=Conv2D(128,内核大小=(3,3),激活='relu',填充='same')(layer)
图层=上采样2D((2,2))(图层)
layer=Conv2D(1,内核大小=(3,3),padding='same')(layer)
图层=裁剪2D((3,0),(3,0))(图层)
自动编码器=模型(输入图像,图层)
结果:

Model:“Model_8”
_________________________________________________________________
层(类型)输出形状参数
=================================================================
输入_12(输入层)[(无,25,25,1)]0
_________________________________________________________________
零填充2D_8(零填充(无,28,28,1)0
_________________________________________________________________
conv2d_54(conv2d)(无、28、28、128)1280
_________________________________________________________________
最大池2D_18(最大池(无、14、14、128)0
_________________________________________________________________
conv2d_55(conv2d)(无、14、14、128)147584
_________________________________________________________________
最大池2D池19(最大池(无、7、7、128)0
_________________________________________________________________
conv2d_56(conv2d)(无、7、7、128)147584
_________________________________________________________________
展平9(展平)(无,6272)0
_________________________________________________________________
密集型_37(密集型)(无,32)200736
_________________________________________________________________
致密(致密)(无,6)198
_________________________________________________________________
致密(致密)(无,32)224
_________________________________________________________________
致密(致密)(无,6272)206976
_________________________________________________________________
重塑_9(重塑)(无、7、7、128)0
_________________________________________________________________
conv2d_57(conv2d)(无、7、7、128)147584
_________________________________________________________________
上采样2D上采样18(上采样(无、14、14、128)0
_________________________________________________________________
conv2d_58(conv2d)(无、14、14、128)147584
_________________________________________________________________
上采样2D上采样19(上采样(无、28、28、128)0
_________________________________________________________________
conv2d_59(conv2d)(无、28、28、1)1153
=================================================================
总参数:1000903
可培训参数:1000903
不可训练参数:0
_________________________________________________________________

谢谢!我只是想知道填充和裁剪是否会影响模型的整体性能。