I don’t really work with PyTorch that often and it’s usually just basic stuff. And the first question is always: Do I really need view() or reshape(). And as an NLP working with RNNs, the answer is  basically always No. The only exception is if I need to resolve the output of a, say, GRU, where the hidden state h_n has a shape of (num_layers * num_directions, batch, hidden_size) and I need to “dissolve” num_layers and num_directions with
h_n = h_n.view(num_layers, num_directions, batch, hidden_size) 

But this is well document and I trust the the PyTorch people are smart.
I once had to use it to flatten and unflatten an LSTM/GRU hidden state for an (Variational) Autoencoder. There the important part was to ensure that the tensor for flattening and after unflattening was indeed the same, which I double-checked with a toy tenser to simplify testing. Again, the Github code I found to help did it incorrectly, i.e., the tensor looked different after unflattening.
That’s the problem: once the shapes are correct, the network throws no errors. And even if then tensor is messed up, the network still might learn something.