-
[Pytorch] reshape / view[Study] Data Science/Python 라이브러리 2022. 3. 17. 22:28
Pytorch에서 reshape와 view는 공통적으로 tensor의 모양을 변경하는데 사용할 수 있다.
각각의 차이를 알아보기 위해 아래와 같이 임의의 t를 설정했다.
0~11사이의 값을 reshape 했기 때문에, 2*3 matrix가 빠짐없이 채워지므로, 결과적으로 2*2*3형태의 numpy array가 생성될 것이다.
t = np.arange(12).reshape(-1,2,3) t
t를 텐서형태로 변환하여, shape을 확인해보면 torch.size([2,2,3]) 결과가 나온다.
floatT = torch.FloatTensor(t) floatT.shape #torch.Size([2, 2, 3])
텐서형태로 변환된 floatT에 대해 view함수를 취해보면 기존의 3차원에서 2차원으로 변경되는 것을 알 수 있다. view를 취했을 때의 shape을 출력해보면, torch.size([4,3])임을 확인할 수 있으며, 결국 view는 floatTensor형태를 (x, 3)의 크기로 변경하는 것이다. 해당 케이스에서는 x자리에 -1을 넣었기 때문에, 열의 개수는 3개이되 행은 주어진 데이터의 수를 가지고 빠짐없이 정렬된다고 이해하면 될 것이다.
floatT.view([-1,3]) """tensor([[ 0., 1., 2.], [ 3., 4., 5.], [ 6., 7., 8.], [ 9., 10., 11.]])"""