Spaces:
Runtime error
Runtime error
| from pytorch_lightning import LightningModule, Trainer, seed_everything | |
| import torch | |
| import pandas as pd | |
| import numpy as np | |
| import torch.nn as nn | |
| from torch.nn import functional as F | |
| from torchvision import transforms | |
| from pytorch_lightning import LightningModule, Trainer, seed_everything | |
| class LitResnet(LightningModule): | |
| def __init__(self, lr=0.01, drop= 0.05, norm='BN',groupsize=1): | |
| super().__init__() | |
| self.save_hyperparameters() | |
| self.num_classes =10 | |
| self.lr = lr | |
| self.convblock1 = nn.Sequential( | |
| nn.Conv2d(in_channels=3, out_channels=64, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.ReLU(), | |
| self.user_norm(norm,64,groupsize), | |
| nn.Dropout(drop), | |
| nn.Conv2d(in_channels=64, out_channels=128, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.MaxPool2d(2,2), | |
| nn.ReLU(), | |
| self.user_norm(norm,128,groupsize), | |
| nn.Dropout(drop)) | |
| self.res1 = nn.Sequential( | |
| nn.Conv2d(in_channels=128, out_channels=128, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.ReLU(), | |
| self.user_norm(norm,128,groupsize), | |
| nn.Dropout(drop), | |
| nn.Conv2d(in_channels = 128, out_channels=128, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.ReLU(), | |
| self.user_norm(norm,128,groupsize), | |
| nn.Dropout(drop) | |
| ) | |
| # CONVOLUTION BLOCK 2 | |
| # Layer 2 | |
| self.convblock2 = nn.Sequential( | |
| nn.Conv2d(in_channels=128, out_channels=256, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.ReLU(), | |
| self.user_norm(norm,256,groupsize), | |
| nn.Dropout(drop), | |
| nn.MaxPool2d(2,2), | |
| nn.ReLU(), | |
| self.user_norm(norm,256,groupsize), | |
| nn.Dropout(drop) | |
| ) | |
| # CONVOLUTION BLOCK 3 | |
| self.convblock3 = nn.Sequential( | |
| nn.Conv2d(in_channels=256, out_channels=512, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.MaxPool2d(2,2), | |
| nn.ReLU(), | |
| self.user_norm(norm,512,groupsize), | |
| nn.Dropout(drop) | |
| ) | |
| self.res2 = nn.Sequential( | |
| nn.Conv2d(in_channels=512, out_channels=512, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.ReLU(), | |
| self.user_norm(norm,512,groupsize), | |
| nn.Dropout(drop), | |
| nn.Conv2d(in_channels = 512, out_channels=512, kernel_size=(3, 3), padding=1, bias=False), | |
| nn.ReLU(), | |
| self.user_norm(norm,512,groupsize), | |
| nn.Dropout(drop)) | |
| # CONVOLUTION BLOCK 4 | |
| self.convblock4 = nn.Sequential( | |
| nn.MaxPool2d(kernel_size=4), | |
| nn.Conv2d(in_channels=512, out_channels=10, kernel_size=(1, 1), padding=0, bias=False)) | |
| self.model = nn.Sequential(self.convblock1 ,self.convblock2, self.convblock3, self.convblock4) | |
| def user_norm(self, norm, channels,groupsize=1): | |
| if norm == 'BN': | |
| return nn.BatchNorm2d(channels) | |
| elif norm == 'LN': | |
| return nn.GroupNorm(1,channels) #(equivalent with LayerNorm) | |
| elif norm == 'GN': | |
| return nn.GroupNorm(groupsize,channels) #groups=2 | |
| def forward(self, x): | |
| x = self.convblock1(x) | |
| x = x + self.res1 (x) | |
| x = self.convblock2(x) | |
| x = self.convblock3(x) | |
| x = x + self.res2 (x) | |
| x = self.convblock4(x) | |
| x = x.view(-1, 10) | |
| return F.log_softmax(x, dim=-1) | |