[Pytorch] Tensor 의 .view()메소드 / .reshape()메소드
2021. 5. 24. 15:46ㆍDeep 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 |