Hi, I am working on a classification CNN model with CIFAR10 dataset. My net looks like this:
self.conv1 = Conv2d(in_channels=num_channels, out_channels=16, kernel_size=(5, 5))
self.bn1 = nn.BatchNorm2d(num_features=16) # Corrected the argument here
self.relu1 = ReLU()
self.maxpool1 = MaxPool2d(kernel_size=(2, 2), stride=(2, 2))
self.conv2 = Conv2d(in_channels=16, out_channels=32, kernel_size=(5, 5))
self.bn2 = nn.BatchNorm2d(num_features=32) # Ensure this matches the output channels of conv2
self.relu2 = ReLU()
self.maxpool2 = MaxPool2d(kernel_size=(2, 2), stride=(2, 2))
self.fc1 = Linear(in_features=3255, out_features=120) # fully connected layer
self.relu3 = ReLU()
self.fc2 = Linear(in_features=120, out_features=84) # fully connected layer 2
self.relu4 = ReLU()
self.fc3 = Linear(in_features=84, out_features=num_classes) # fully connected layer 3
self.logSoftmax = LogSoftmax(dim=1) # softmax activation function
I have 10 epochs, the learning rate is 0.001 with 32 batch size and ADAM optimizer.
I get an accuracy of around 50% and I am not really sure, what should my next steps be to improve the models accuracy.
edit: I added batch normalization and accuracy went to 70%, how can I improve acc even more?
Thanks