class AutoEncoder(nn.Module): def __init__(self): super(AutoEncoder, self).__init__() self.encoder = nn.Sequential( nn.Conv2d(1,16,3,stride=3,padding=1), # b, 16, 10, 10, N=[(input_size-kernel_size+2*padding)/stride]+1,(向下取整) nn.ReLU(inplace=True), # 产生的计算结果不会有影响。利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间。但是会对原变量覆盖,只要不带来错误就用。 nn.MaxPool2d(2, stride=2), # b,16, 5, 5,N = [(input_size-kernel_size)/stride]+1,(向下取整) nn.Conv2d(16, 8, 3, stride=2, padding=1), # b,8,3,3 nn.ReLU(inplace=True), nn.MaxPool2d(2, stride=1) # b,8,2,2 ) self.decoder = nn.Sequential( nn.ConvTranspose2d(8, 16, 3,stride=2), # b, 16, 5, 5 ,按住ctrl,鼠标点击ConvTranspose2d可查看形状计算公式 nn.ReLU(inplace=True), nn.ConvTranspose2d(16, 8, 5,stride=3, padding=1), # b, 8, 15, 15 nn.ReLU(inplace=True), nn.ConvTranspose2d(8, 1, 2,stride=2, padding=1), # b, 1, 28, 28 nn.Tanh() ) def forward(self, x): x = self.encoder(x) x = self.decoder(x) return x
时间: 2023-06-18 17:03:56 浏览: 204
Autoencoder_Code.rar_Autoencoder_Code_autoencoder_code Autoencod
这是一个基本的自编码器模型,用于图像压缩和重建。它包括一个编码器和一个解码器,其中编码器将输入图像压缩到低维度表示,解码器将低维度表示还原成原始图像。具体来说,该模型的编码器包括两个卷积层和两个最大池化层,用于从输入图像中提取特征并将其压缩到低维度表示。解码器包括三个转置卷积层和一个 Tanh 激活函数,用于将低维度表示还原成原始图像。整个模型的目标是最小化输入图像和重建图像之间的重构误差。
阅读全文