Tensor.size() is the original function. Tensor.shape was added to be nicer to numpy users. Both are exactly the same.
Tensor.reshape() and Tensor.view() though are not the same.
- Tensor.view() works only on contiguous tensors and will never copy memory. It will raise an error on a non-contiguous tensor.
- Tensor.reshape() will work on any tensor and can make a clone if it is needed.
They are similar but different. For example, if you want to change the result inplace and expect the change to reflect on the original Tensor, then you have to use view(). On the other hand, if you don’t need this behaviour, you can use reshape so that you don’t have to worry that the input has to be contiguous.
답변 해석 :
tensor.shape과 tensor.size는 기능이 같다. size라는 torch의 오리지널 함수이 있지만 shape는 numpy user를 위해 더해진 것
하지만 reshpae view는 차이가 있다.
tensor.view()는 contiguous tensors에서만 동작하고 절대 메모리를 카피하지 않는다.
만약 non-contiguous tensor에서 view를 쓰려고하면 에러가 난다.
tensor.reshape()는 반면 어떤 tensor에서든지 사용 가능하며, 만약 필요하다면 새로 메모리를 할당해서 만든다.
비슷하지만 다른 두 함수.
만약 기존 오리지널 배열의 값이 바뀌었을 때 참조했던 값도 모두 바뀌길 원한다면 view를 써야한다.
(SQL에서 view랑 비슷하다고 생각하면 될 듯)
만약 이 동작을 원하지 않고 독립적으로 값을 참조하길 원한다면 reshape를 써야한다.
view를 쓰라고 권장하는 경우, 오리지널 값을 따라가길 원한다는 의미에서 말한거고
reshape를 쓰라고 권장하는 경우, view와 독립적 패턴을 유지하길 원하는 의미에서 말한듯.
'Boostcamp AI tech 3기 > 개념 이해' 카테고리의 다른 글
unable to display MLflow UI... -> mlruns 폴더가 있는 경로에서 하자. (1) | 2022.02.16 |
---|---|
torch Tensor 크기 구하기 torch.numel() (0) | 2022.01.26 |
torch.range is deprecated warning -> torch.arange (0) | 2022.01.25 |
텐서 함수 조금 정리. 생성, 타입, select, cat, stack (0) | 2022.01.25 |
[Week02] Pytorch - 3강 Pytorch 기본 환경 세팅 : colab에서 ssh 연결해 vscode 실행하기 (0) | 2022.01.24 |
[Week02] Pytorch - 1강 Introduction to Pytorch (0) | 2022.01.24 |
[Week01] AI Math - 경사하강법과 알고리즘 (0) | 2022.01.20 |
[Week01] AI Math - 행렬과 역행렬 그리고 무어-펜로즈 역행렬 (0) | 2022.01.20 |