[Pytorch] Tensor 의 .view()메소드 / .reshape()메소드

2021. 5. 24. 15:46Deep Learning/framework

728x90

tensor의 shape를 변경해줌

  • view는 기존의 데이터와 같은 메모리 공간을 공유하며 stride 크기만 변경하여 보여주기만 다르게 합니다.
    • 그래서 contigious해야만 동작하며, 아닌 경우 에러가 발생합니다.
  • reshape은 가능하면 input의 view를 반환하고, 안되면 contiguous한 tensor로 copy하고 view를 반환합니다.
  • view는 메모리가 기존 Tensor와 동일한 메모리를 공유하는게 보장되지만 reshape은 그렇지 않습니다.

 

  • 안전하게 형태만 바꾸고 싶다 reshape
  • 메모리가 공유되어 업데이트에 대한 보장이 이뤄진다 view (단 continguous하지 않은 경우 에러 발생 가능)
>>> x = torch.randn(4, 4)
>>> x.size()
# torch.Size([4, 4])
>>> y = x.view(16)
>>> y.size()
# torch.Size([16])
>>> a = torch.arange(4.)
>>> torch.reshape(a, (2, 2))
# tensor([[ 0.,  1.],
#         [ 2.,  3.]])

>>> b = torch.tensor([[0, 1], [2, 3]])
>>> torch.reshape(b, (-1,))
# tensor([ 0,  1,  2,  3])

 

728x90

'Deep Learning > framework' 카테고리의 다른 글

[Pytorch] nn.ReflectionPad2d  (0) 2021.06.16
[Pytorch] Initializer (torch.nn.init)  (0) 2021.06.15
[Pytorch] torch.sort  (0) 2021.05.22
[Pytorch] torch.no_grad  (0) 2021.05.22
[PyTorch] tensor 부등호 연산 (?), list와 차이점  (0) 2021.05.13