Are you also using nn.CrossEntropyLoss() 1 as in the tutorial? It uses softmax (log softmax to be more precise) inside the loss, so there is no need for a softmax at the end of your model.
Therefore, the output of your model is a nn.Linear layer, which can produce unbounded negative and positive numbers.
When computing accuracy later on, you can use argmax (torch.max() returns indices as well as values) or torch.topk() to get the prediction(s).