【发布时间】:2021-03-11 09:08:06
【问题描述】:
我有一个简单的自动编码器,如下所示:
class Autoencoder(nn.Module):
def __init__(self):
super(Autoencoder, self).__init__()
self.channels = [3, 8, 16, 32]
self.encoder = nn.Sequential(
# layer 1
nn.Conv2d(self.channels[0], self.channels[1], 3, 1, 1),
nn.BatchNorm2d(self.channels[1]),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=4, stride=4),
# layer 2
nn.Conv2d(self.channels[1], self.channels[2], 3, 1, 1),
nn.BatchNorm2d(self.channels[2]),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=4, stride=4),
# layer 3
nn.Conv2d(self.channels[2], self.channels[3], 3, 1, 1),
nn.BatchNorm2d(self.channels[3]),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=2, stride=2)
)
self.decoder = nn.Sequential(
nn.Conv2d(self.channels[3], self.channels[2], 3, 1, 1),
nn.ReLU(inplace=True),
nn.Upsample(size=(15, 20), mode='bilinear', align_corners=False),
nn.Conv2d(self.channels[2], self.channels[1], 3, 1, 1),
nn.ReLU(inplace=True),
nn.Upsample(scale_factor=4, mode='bilinear', align_corners=False),
nn.Conv2d(self.channels[1], 1, 1),
nn.ReLU(inplace=True),
nn.Upsample(scale_factor=4, mode='bilinear', align_corners=False)
)
def forward(self, x):
h = self.encoder(x)
y = self.decoder(h)
return y
有人可以澄清解码器中的nn.Upsample(size=(15, 20)... 是否与将图像恢复到原始尺寸有关吗?我的输入图像(火炬张量)的大小为 240*320,网络应该将输入张量恢复到其原始大小。
此外,如果我向具有 64 个通道的编码器添加第四层,向解码器添加第四层(类似于上面的层),解码的第一层中的上采样大小应该是多少?
【问题讨论】:
-
欢迎来到 SO。请重新阅读What topics can I ask about here?,并注意要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题是关闭的SO主题(删除了您的最后一个问题,否则这将有资格作为资源请求关闭)。
标签: python deep-learning pytorch autoencoder