Ah, that was easy, thanks. It does little to improve the performance though:
...
Truth:  tensor([ 1.,  0.,  0.,  0.])
Output:  tensor([[ 0.5666],
        [ 0.5650],
        [ 0.5653],
        [ 0.5655]])
[2,    85] loss: 0.703
Truth:  tensor([ 1.,  0.,  0.,  1.])
Output:  tensor([[ 0.5657],
        [ 0.5688],
        [ 0.5657],
        [ 0.5668]])
[2,    86] loss: 0.702
Truth:  tensor([ 0.,  1.,  1.,  0.])
Output:  tensor([[ 0.5679],
        [ 0.5672],
        [ 0.5660],
        [ 0.5657]])
[2,    87] loss: 0.768
Truth:  tensor([ 1.,  0.,  0.,  0.])
Output:  tensor([[ 0.5679],
        [ 0.5659],
        [ 0.5667],
        [ 0.5656]])
Finished Training

Hmm. In the tutorial where I started from, 3-channel (RGB) images are categorized into ten classes. Now I have 21 channels and two classes. I guess the net architecture must be changed further…?
I’ve trained an SVM with this same data and achieved about 95% accuracy.