Hi,
The thing is that view is not transposition. It just looks at data differently. When you do .view(4, batch_size, ...), then the data from different samples in your batch are mixed (which most certainly confuses the learning a lot):
>>> import torch
>>> batch_size = 3
>>> seq_len = 2
>>> inp = torch.arange(batch_size).unsqueeze(-1).expand(batch_size, 4*seq_len).contiguous()
>>> print(inp)
tensor([[ 0,  0,  0,  0,  0,  0,  0,  0],
        [ 1,  1,  1,  1,  1,  1,  1,  1],
        [ 2,  2,  2,  2,  2,  2,  2,  2]])

>>> print(inp[0])
tensor([ 0,  0,  0,  0,  0,  0,  0,  0])

>>> print(inp.view(batch_size, 4, seq_len))
tensor([[[ 0,  0],
         [ 0,  0],
         [ 0,  0],
         [ 0,  0]],

        [[ 1,  1],
         [ 1,  1],
         [ 1,  1],
         [ 1,  1]],

        [[ 2,  2],
         [ 2,  2],
         [ 2,  2],
         [ 2,  2]]])

>>> print(inp.view(batch_size, 4, seq_len)[0])
tensor([[ 0,  0],
        [ 0,  0],
        [ 0,  0],
        [ 0,  0]])

>>> print(inp.view(4, batch_size, seq_len))
tensor([[[ 0,  0],
         [ 0,  0],
         [ 0,  0]],

        [[ 0,  0],
         [ 1,  1],
         [ 1,  1]],

        [[ 1,  1],
         [ 1,  1],
         [ 2,  2]],

        [[ 2,  2],
         [ 2,  2],
         [ 2,  2]]])

>>> print(inp.view(4, batch_size, seq_len)[:, 0])
tensor([[ 0,  0],
        [ 0,  0],
        [ 1,  1],
        [ 2,  2]])