My LSTM didn’t learn when I input this way into the criterion - when I stacked the batches, it worked…
                outputs = outputs.view(outputs.shape[1]*outputs.shape[0], outputs.shape[2]).cpu()
                target = target.view(target.shape[0]*target.shape[1],)
                loss = criterion(outputs, target)