It is good to know that the order is kept.
Originally, I would have N x 1 tensor as an output of the network, and I would take a softmax over this tensor.  Now, with an input of (batch_size x N, 3, 64, 64), I now have a tensor of size batch_size*N x 1 and must take a softmax over every N elements (batch_size times).  I can only think of accomplishing this using a loop.  Is there a better way to do this, since looping this way is slow?  Even with looping is faster because of loading more data initially (batch_size x N samples) instead of just N samples.  But with typical batch training, no looping is required at all with DataLoader.