torch.tensor reshape
25 Jan 2022
tensor reshape할때 사용하는 method인 view, squeeze, unsqueeze, transpose, permute와 관련된 포스트입니다.
-
Tensor.view
(shape) : shape (torch.Size or int…) – the desired sizeview()는 reshaping 또는 squeezing 하는 것을 통해 tensor를 reshape합니다. 기본적으로 numpy에서의 reshape과 같은 역할을 합니다. matrix에 대해 row의 개수는 모르지만, column의 개수는 알고있는 상황에서 tensor.view(-1,number of columns)와 같이 -1 인자를 사용할 수 있습니다. 또한 -1은 하나의 axis에만 사용할 수 있습니다.
-
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해줍니다.
-
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]])
-
torch.transpose
(input, dim0, dim1)주어진 input에 대해 dim0과 dim1을 swap해 줍니다.
torch.transpose
의 2D version이torch.t
입니다. -
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])