Hi Ric,
for multi-class classification use cases, you could use nn.CrossEntropyLoss as the loss function. This criterion expects logits as the model output, which explains the missing softmax (or log_softmax) after the final layer in the torchvision models.
If you really want to apply a softmax on the output, you could use the following code:
import torch.nn.functional as F

output = model(data)
prob = F.softmax(output, 1)

However, as described, you should not pass the softmax to a loss function.
Alternatively to the raw logits, you could instead apply F.log_softmax(output, 1) and pass it to nn.NLLLoss, which is exactly, was nn.CrossEntropyLoss is doing internally.
Let me know, if that clarifies the question or if you need more information.