@Veril transpose only applies to 2 axis, while permute can be applied to all the axes at the same time.
For example
a = torch.rand(1,2,3,4)
print(a.transpose(0,3).transpose(1,2).size())
print(a.permute(3,2,1,0).size())

BTW, permute internally calls transpose a number of times 1.0k