ChangHyeon Nam's Blog notes and thoughts

torch.tensor reshape

Comments

tensor reshape할때 사용하는 method인 view, squeeze, unsqueeze, transpose, permute와 관련된 포스트입니다.


  1. Tensor.view(shape) : shape (torch.Size or int…) – the desired size

    view()는 reshaping 또는 squeezing 하는 것을 통해 tensor를 reshape합니다. 기본적으로 numpy에서의 reshape과 같은 역할을 합니다. matrix에 대해 row의 개수는 모르지만, column의 개수는 알고있는 상황에서 tensor.view(-1,number of columns)와 같이 -1 인자를 사용할 수 있습니다. 또한 -1은 하나의 axis에만 사용할 수 있습니다.

  2. torch.squeeze(input, dim=None, , out=None)

    dim 인자값이 주어지지 않은경우, input dimension의 dim중 1인 값을 제거합니다. $(A×1×B×C×1×D)$ -> $(A×B×C×D)$

    만약 dim이 주어졌다면, 해당 dim이 1일 경우 squeeze해줍니다.

  3. torch.unsqueeze(input, dim)

    주어진 dim에 대한 dimenstion size를 하나 추가한 데이터를 반환합니다.

     x = torch.tensor([1, 2, 3, 4])
     torch.unsqueeze(x, 0)
     # tensor([[ 1,  2,  3,  4]])
     torch.unsqueeze(x, 1)
     # tensor([[1],
     #         [2],
     #         [3],
     #         [4]])
    
  4. torch.transpose(input, dim0, dim1) 

    주어진 input에 대해 dim0과 dim1을 swap해 줍니다. torch.transpose의 2D version이 torch.t입니다.

  5. torch.permute(input, dims)

    dims로 주어진 dim값들에 대해, view를 적용합니다.

    • input (Tensor) – the input tensor.
    • dims (tuple of python:ints) – The desired ordering of dimensions
     x = torch.randn(2, 3, 5)
     x.size()
     # torch.Size([2, 3, 5])
     torch.permute(x, (2, 0, 1)).size()
     # torch.Size([5, 2, 3])
    

reference

  1. Pytorch Docs