Spaces:
Sleeping
Sleeping
| import torch | |
| import torch.nn as nn | |
| import torch.optim as optim | |
| from torch.utils.data import DataLoader | |
| import torchvision.transforms as transforms | |
| from torchvision.datasets import ImageFolder | |
| # Define the autoencoder architecture | |
| class Autoencoder(nn.Module): | |
| def __init__(self): | |
| super(Autoencoder, self).__init__() | |
| # Encoder layers | |
| self.encoder = nn.Sequential( | |
| nn.Conv2d(3, 16, kernel_size=3, stride=2, padding=1), # 3x256x256 -> 16x128x128 | |
| nn.LeakyReLU(inplace=True), | |
| nn.Conv2d(16, 32, kernel_size=3, stride=2, padding=1), # 16x128x128 -> 32x64x64 | |
| nn.LeakyReLU(inplace=True), | |
| nn.Conv2d(32, 64, kernel_size=3, stride=2, padding=1), # 32x64x64 -> 64x32x32 | |
| nn.LeakyReLU(inplace=True) | |
| ) | |
| # Decoder layers | |
| self.decoder = nn.Sequential( | |
| nn.ConvTranspose2d(64, 32, kernel_size=3, stride=2, padding=1, output_padding=1), # 64x32x32 -> 32x64x64 | |
| nn.LeakyReLU(inplace=True), | |
| nn.ConvTranspose2d(32, 16, kernel_size=3, stride=2, padding=1, output_padding=1), # 32x64x64 -> 16x128x128 | |
| nn.LeakyReLU(inplace=True), | |
| nn.ConvTranspose2d(16, 3, kernel_size=3, stride=2, padding=1, output_padding=1), # 16x128x128 -> 3x256x256 | |
| nn.Tanh() | |
| ) | |
| def forward(self, x): | |
| x = self.encoder(x) | |
| x = self.decoder(x) | |
| return x | |