我目前正在使用 Keras(自动编码器)开发 CNN 模型。这种类型我的输入是 shape (47,47,3)
,即具有 3 个(RGB)层的 47x47 图像。
我过去曾与一些 CNN 合作过,但这次我的输入尺寸是素数(47 像素)。我认为这会导致我的实现出现问题,特别是在我的模型中使用MaxPooling2D
时。UpSampling2D
我注意到最大池化然后上采样时会丢失一些尺寸。
使用model.summary()
我可以看到,在通过带有内核(即 24 个过滤器和一半形状)的(47,47,3)
a 和 MaxPooling 传递我的输入后,我得到的输出形状为.Conv2D(24)
(2,2)
(24, 24, 24)
现在,如果我尝试通过使用(2,2)
内核(形状加倍)进行 UpSampling 来反转它并再次卷积,我会得到一个(48,48,3)
整形输出。这比需要的多一排和一列。
对此我认为“没问题,只需选择一个内核大小,在上采样时为您提供所需的 47 像素”,但鉴于 47 是质数,在我看来,没有内核大小可以做到这一点。
有什么方法可以绕过这个不涉及将我的输入尺寸更改为非素数的问题?也许我在我的方法中遗漏了一些东西,或者 Keras 有一些我忽略的功能在这里可以提供帮助。