In pytorch 0.4, I get the same result for the input
input = torch.Tensor(2, 4, 3)
with
print(input.view(1, 2, 4, 3).size())
and
print(input.unsqueeze(0).size())
There are no difference between unsequeeze() and view(), if the both are used correctly.
They do not change the data storage in tensor (.storage());
they have the same id as well ( print(id(input.unsqueeze(0).storage)) ).
It seems to me that the two (unsqueeze, view) change only the representation of a tensor.