Spaces:
Sleeping
Sleeping
import torch | |
from torch import nn | |
class NeuralNetwork(nn.Module): | |
def __init__(self): | |
super().__init__() | |
self.conv = nn.Sequential( | |
nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1), | |
nn.BatchNorm2d(64), | |
nn.ReLU(), | |
nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, stride=2, padding=1), | |
nn.Dropout2d(p=0.3), | |
nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, stride=1, padding=1), | |
nn.BatchNorm2d(128), | |
nn.ReLU(), | |
nn.Conv2d(in_channels=128, out_channels=128, kernel_size=3, stride=2, padding=1), | |
nn.Dropout2d(p=0.3), | |
nn.Conv2d(in_channels=128, out_channels=256, kernel_size=3, stride=1, padding=1), | |
nn.BatchNorm2d(256), | |
nn.ReLU(), | |
nn.Conv2d(in_channels=256, out_channels=256, kernel_size=3, stride=2, padding=1), | |
nn.Dropout2d(p=0.4), | |
nn.Conv2d(in_channels=256, out_channels=256, kernel_size=3, stride=1, padding=1), | |
nn.BatchNorm2d(256), | |
nn.ReLU(), | |
nn.Conv2d(in_channels=256, out_channels=256, kernel_size=3, stride=2, padding=1), | |
) | |
self.flatten = nn.Flatten() | |
self.fc = nn.Sequential( | |
nn.Linear(256*4*4, 256), | |
nn.BatchNorm1d(256), | |
nn.ReLU(), | |
nn.Dropout(p=0.5), | |
nn.Linear(256, 151), | |
) | |
def forward(self, x): | |
out = self.conv(x) | |
out = self.flatten(out) | |
out = self.fc(out) | |
return out | |