There are also a lot of potential differences in the code you haven’t published, the training/validation loops, dataset handling, image preprocessing, etc.
You’ve got a log_softmax on the output of your pytorch model. I assume you are using NLLLoss and not CrossEntropy (which includes the log softmax like Chainer’s SoftmaxCrossEntropy)?