import torch
import torch.nn as nn


class NeuralNet(nn.Module):
    def __init__(self, input_size, hidden_size, num_classes):
        super(NeuralNet, self).__init__()
        self.l1 = nn.Linear(input_size, hidden_size) 
        self.l2 = nn.Linear(hidden_size, hidden_size) 
        self.l3 = nn.Linear(hidden_size, hidden_size)
        self.l4 = nn.Linear(hidden_size, num_classes)
        self.relu = nn.ReLU()
    
    def forward(self, x):
        out = self.l1(x)
        out = self.relu(out)
        out = self.l2(out)
        out = self.relu(out)
        out = self.l3(out)
        out = self.relu(out)
        out = self.l4(out)
        # no activation and no softmax at the end
        return out
[((8, 18, 8, 52), 'torch.nn.Linear', 'nn.Linear', ({(8, 28, 8, 38): 'input_size', (8, 40, 8, 51): 'hidden_size'}, {}), '(input_size, hidden_size)', True, 'import torch.nn as nn\n'), ((9, 18, 9, 53), 'torch.nn.Linear', 'nn.Linear', ({(9, 28, 9, 39): 'hidden_size', (9, 41, 9, 52): 'hidden_size'}, {}), '(hidden_size, hidden_size)', True, 'import torch.nn as nn\n'), ((10, 18, 10, 53), 'torch.nn.Linear', 'nn.Linear', ({(10, 28, 10, 39): 'hidden_size', (10, 41, 10, 52): 'hidden_size'}, {}), '(hidden_size, hidden_size)', True, 'import torch.nn as nn\n'), ((11, 18, 11, 53), 'torch.nn.Linear', 'nn.Linear', ({(11, 28, 11, 39): 'hidden_size', (11, 41, 11, 52): 'num_classes'}, {}), '(hidden_size, num_classes)', True, 'import torch.nn as nn\n'), ((12, 20, 12, 29), 'torch.nn.ReLU', 'nn.ReLU', ({}, {}), '()', True, 'import torch.nn as nn\n')]