我读了一些关于自动编码器的文章,并从$\mathbb{R}^{N\times D}\rightarrow\mathbb{R}^{N \times D}$$空间中读取了编码器转换数据。我写了CNN自动编码器,例如有一层像这样:
self.conv1 = nn.Conv2d(1, 1, 5)
但当我应用x = F.relu(self.conv1(x))
时,我当然会得到一个尺寸较小的图像(如果我一开始有尺寸torch.Size([1, 400, 1024])
(术后出现CCD_ 3。
很明显,卷积降低了图像的维数(这很清楚:(,但我感兴趣的是,是否有一种方法可以保持特征的数量,然后用零填充其他特征,如果这是朝着正确的方向迈出的一步,那么问题就来了,用零填充哪些特征
P.S.我只使用一个通道,因为我希望最终结果在2d矩阵中,而且我的图像无论如何都是灰度级的。
我认为您需要添加padding="me">选项
self.conv1 = nn.Conv2d(1, 1, 5, padding='same')
这是确保输出尺寸不会缩小的常用方法当应用卷积层时。它填充之前的原始图像应用卷积,默认情况下使用零,而不是填充结果。
(如果这是Tensorflow,我可以肯定,但它看起来像火炬一样同样的方式。https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html)