It seems you are calculating the accuracy of each batch but are also scaling it with the batch size, which could yield values > 1. E.g. if your batch size is 10 and all samples are correctly predicted, accuracy would be 1. and train_acc would then accumulate 1 * 10 = 10. Here is a small example:
train_acc = 0
output = torch.randn(10, 10)
label = torch.randint(0, 10, (10,))
print(label)
# > tensor([3, 8, 1, 6, 8, 4, 9, 8, 1, 1])
pred = torch.argmax(output, dim=1)
print(pred)
# > tensor([9, 3, 7, 6, 0, 9, 6, 1, 6, 2])

correct_tensor = pred.eq(label)
print(correct_tensor)
# > tensor([False, False, False,  True, False, False, False, False, False, False])

accuracy = torch.mean(correct_tensor.type(torch.FloatTensor))
print(accuracy)
# > tensor(0.1000)

train_acc += accuracy.item() * output.size(0)
print(train_acc)
# > 1.0000000149011612

I might be missing something in your code so feel free to correct me.