| import torch.nn as nn | |
| LATENT_DIM = 100 | |
| class Generator(nn.Module): | |
| def __init__(self, latent_dim=LATENT_DIM): | |
| super().__init__() | |
| self.latent_dim = latent_dim | |
| self.network = nn.Sequential( | |
| nn.ConvTranspose2d(latent_dim, 512, 4, 1, 0, bias=False), | |
| nn.BatchNorm2d(512), | |
| nn.ReLU(inplace=True), | |
| nn.ConvTranspose2d(512, 256, 4, 2, 1, bias=False), | |
| nn.BatchNorm2d(256), | |
| nn.ReLU(inplace=True), | |
| nn.ConvTranspose2d(256, 128, 4, 2, 1, bias=False), | |
| nn.BatchNorm2d(128), | |
| nn.ReLU(inplace=True), | |
| nn.ConvTranspose2d(128, 64, 4, 2, 1, bias=False), | |
| nn.BatchNorm2d(64), | |
| nn.ReLU(inplace=True), | |
| nn.ConvTranspose2d(64, 3, 4, 2, 1), | |
| nn.Tanh(), | |
| ) | |
| def forward(self, noise): | |
| if noise.ndim == 2: | |
| noise = noise[:, :, None, None] | |
| return self.network(noise) | |