我使用Pytorch创建了卷积自动编码器,我正在尝试对其进行改进。
对于编码层,我使用来自ResNet 18 model
的前4层经过预先训练的torchvision.models.resnet
。
我的中间层只有一个Convolutional layer
,输入和输出通道大小为512。对于解码层,我先使用Convolutional layers
,然后激活BatchNorm
和ReLU
功能。
解码层减少512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 3
每一层的信道,并通过插值提高图像分辨率,以匹配编码部分中相应层的尺寸。对于最后一层,我使用sigmoid
而不是ReLu
。
所有Convolutional layer
是:
self.up = nn.Sequential(
nn.Conv2d(input_channels, output_channels,
kernel_size=5, stride=1,
padding=2, bias=False),
nn.BatchNorm2d(output_channels),
nn.ReLU()
)
输入图像缩放到[0, 1]
范围,形状为224x224x3
。样本输出为(第一个来自训练集,第二个来自测试集):
任何想法为何输出模糊?使用160 epochs
优化器的~16000
优化器,使用Adam
图像围绕lr=0.00005
训练了提供的模型。我正在考虑在上面给出的Convolutional
中再添加一个self.up
层。这将增加模型的复杂性,但是我不确定这是否是改进模型的正确方法。