| import torch.nn as nn | |
| class Decoder(nn.Module): | |
| def __init__(self): | |
| super().__init__() | |
| self.layer = nn.Sequential( | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(512, 256, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.Upsample(scale_factor=2, mode='nearest'), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(256, 256, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(256, 256, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(256, 256, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(256, 128, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.Upsample(scale_factor=2, mode='nearest'), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(128, 128, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(128, 64, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.Upsample(scale_factor=2, mode='nearest'), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(64, 64, kernel_size=3), | |
| nn.ReLU(inplace=True), | |
| nn.ReflectionPad2d(1), | |
| nn.Conv2d(64, 3, kernel_size=3) | |
| ) | |
| def forward(self, x): | |
| return self.layer(x) | |