import torch.nn as nn import torch import torch.nn.functional as F class Conv_Neural_Network_Model(nn.Module): def __init__(self, num_classes=5,hidden_layer1 = 512,hidden_layer2 = 256): super(Conv_Neural_Network_Model, self).__init__() self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, stride=1, padding=1) self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2, padding=0) self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, stride=1, padding=1) self.fc1 = nn.Linear(64*25*25,hidden_layer1) self.fc2 = nn.Linear(hidden_layer1,hidden_layer2) self.out = nn.Linear(hidden_layer2,num_classes) def forward(self, x): x = self.pool1(F.relu(self.conv1(x))) x = self.pool1(F.relu(self.conv2(x))) x = x.view(-1, 64*25*25) #<----flattening the image x = self.fc1(x) x = torch.relu(x) x = self.fc2(x) x = torch.relu(x) x = self.out(x) return F.log_softmax(x, dim=-1)