As the title clearly describes, the `accuracy`

of my `CNN`

stays the same when the `criterion`

is selected as `CrossEntropyLoss`

. I especially selected `CrossEntropyLoss`

since only it achieves the `test loss`

close to the `training loss`

. No issues at all for the other loss functions.

Here is the overview of the constructed `CNN`

model:

```
MyNet(
(activation_fn): ReLU(inplace)
(conv1): Sequential(
(0): Conv2d(3, 16, kernel_size=(5, 5), stride=(1, 1))
(1): ReLU(inplace)
(2): Dropout2d(p=0.5)
)
(conv2): Sequential(
(0): Conv2d(16, 32, kernel_size=(5, 5), stride=(1, 1))
(1): ReLU(inplace)
(2): Dropout2d(p=0.5)
(3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(conv3): Sequential(
(0): Conv2d(32, 64, kernel_size=(5, 5), stride=(1, 1))
(1): ReLU(inplace)
(2): Dropout2d(p=0.5)
)
(conv4): Sequential(
(0): Conv2d(64, 128, kernel_size=(5, 5), stride=(1, 1))
(1): ReLU(inplace)
(2): Dropout2d(p=0.5)
)
(conv5): Sequential(
(0): Conv2d(128, 256, kernel_size=(5, 5), stride=(1, 1))
(1): ReLU(inplace)
(2): Dropout2d(p=0.5)
(3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(fc1): Sequential(
(0): Linear(in_features=4096, out_features=1600, bias=True)
(1): Dropout2d(p=0.5)
)
(fc2): Sequential(
(0): Linear(in_features=1600, out_features=400, bias=True)
(1): Dropout2d(p=0.5)
)
(fc3): Sequential(
(0): Linear(in_features=400, out_features=100, bias=True)
(1): Dropout2d(p=0.5)
)
(fc4): Sequential(
(0): Linear(in_features=100, out_features=8, bias=True)
)
)
```

Here is my `test`

function:

```
def test():
model.eval()
test_loss = 0
correct = 0
with torch.no_grad():
for data, target in test_loader:
data, target = data.to(device), target.to(device)
output = model(data)
output = output.to(device)
test_loss += criterion(output, target).item()
_, predicted = torch.max(output.data, 1)
correct += (predicted == target).sum().item()
test_loss /= math.ceil((len(test_loader.dataset) / test_batch_size))
test_losses.append(test_loss)
acc = 100. * correct / len(test_loader.dataset)
print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.2f}%)\n'.format(
test_loss, correct, len(test_loader.dataset), acc))
```