Python 二维解码器

Python 二维解码器,python,machine-learning,keras,conv-neural-network,Python,Machine Learning,Keras,Conv Neural Network,我正在处理不同大小的x,y图像。在MaxPoolig2D之后使用UpSampling2D时,由于x-dim不等于y-dim,因此无法很好地重建它。它在x=y时工作,例如28x28,但在我的情况下为388x45。我怎样才能解决这个问题 input_img = Input(shape=(388, 45, 1)) x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img) x = MaxPooling2D((2, 2)

我正在处理不同大小的x,y图像。在MaxPoolig2D之后使用UpSampling2D时,由于x-dim不等于y-dim,因此无法很好地重建它。它在x=y时工作,例如28x28,但在我的情况下为388x45。我怎样才能解决这个问题

input_img = Input(shape=(388, 45, 1))  

x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)

x = UpSampling2D((2, 2))(x)
x = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

解决方法是在上采样层之后添加ZeroPadding2D,以达到所需的形状

实际上,如果您的图像形状为19,30,为了得到偶数,例如,在第一个位置,您将添加:

x = UpSampling2D((2, 2))(x) #say here the shape is (19,30) after upsampling but you need (20,30)
x = ZeroPadding2D(((1, 0), (0, 0)))(x) # change to ZeroPadding2D(((0, 0), (0, 1))) if you want second dimension to increase by 1
您可以在以下答案中找到ZeroPadding2D的完美用法: