To get the class predictions torch.argmax or torch.max should be called with the dim argument specifying the “class dimension”, i.e. the dimension which is set to the number of classes and contains the logits for each class.
In your training code you are using dim=0. Are you sure the class dimension is in dim0, not the batch dimension?
The last code snippet iterates the predslist and calls argmax again on dim=0, which will return zeros for a single sample in the batch.
For a vanilla classification use case your output would have the shape [batch_size, nb_classes] and you should therefore call torch.argmax(output, dim=1) as shown in my example.
PS: the usage of .data is not recommended, as it might have unwanted side effects.