Thanks for the code!
It looks like you are not flattening the activation before feeding it to the linear layer, which would be the usual use case.
Currently dim1 and dim2 are treated as “additional features” which is probably not your use case.
Add the number if input features of your last linear layer to:
self.fc1 = nn.Linear(16*56*56, 2)

and add this flattening operation in your forward:
output = self.drop2D(output)
output = output.view(output.size(0), -1)
output = self.fc1(output)
return F.log_softmax(output, 1)  # add the dim argument to log_softmax