이번에는 텐서(Tensor) 인덱싱, 슬라이싱, 합치기를 알아보겠습니다.
주피터 노트북으로 실습하기
In [1] :
import torch
def describe(x):
print("타입: {}".format(x.type()))
print("크기: {}".format(x.shape))
print("값: \n{}".format(x))
- 라이브러리를 불러옵니다.
- 결과 확인을 위한 간단한 함수를 정의합니다.
In [2] :
x = torch.arange(9).view(3,3)
describe(x)
- 실습을 위해서 .arange() 함수와 .view()함수를 사용해 3*3 텐서를 만듭니다.
In [3] :
describe(x[:2, :3])
In [4] :
describe(x[1, 2])
- x[:2, :3] 기존의 파이썬과 같이 슬라이싱이 가능하다는 것을 확인할 수 있습니다.
- x[1, 2] 를 입력하여 1행 2열의 값인 5를 인덱싱 했습니다.
In [5] :
index = torch.LongTensor([0, 2])
describe(torch.index_select(x, dim=1, index=index))
- 연속적이지 않은 위치를 참조하는 방법입니다.
- index 변수로 LongTensor를 선언하여 torch.index_select() 함수를 사용해 지정한 인덱스를 참조했습니다.
- dim 매개변수로 차원 변경 가능(2D 텐서는 행을 차원 0, 열을 차원 1로 표현합니다.)
In [6] :
index = torch.LongTensor([0, 0, 1, 1])
describe(torch.index_select(x, dim=0, index=index))
- 위와 마찬가지로 LongTensor 선언 후 같은 방법으로 참조를 진행했습니다.
- 이번에는 dim 매개변수 값을 0으로 지정한 결과입니다.
In [7] :
x = torch.arange(9).view(3,3)
describe(x)
- 텐서 병합(연결)을 위해서 x 변수를 재정의 했습니다.
In [8] :
describe(torch.cat([x, x], dim=0))
- torch.cat() 함수를 사용해 텐서의 병합(연결)을 진행한 결과입니다.
- 마찬가지로 dim 매개변수로 차원을 설정할 수 있습니다.
In [9] :
describe(torch.cat([x, x], dim=1))
- dim 매개변수의 값만 변경하여 위와 같은 코드로 진행한 결과입니다.
In [10] :
describe(torch.stack([x, x]))
- torch.stack() 함수를 사용한 텐서 합치기(연결) 결과입니다.
- 단어의 의미처럼 텐서가 쌓아지는 모양으로 합쳐진 것을 확인할 수 있습니다.
도움이 되셨다면 아래 광고 한 번만 클릭해주세요 감사합니다!
'머신러닝 & 딥러닝 > 자연어처리' 카테고리의 다른 글
NLP 기초 - KoNLPy를 활용한 한국어 형태소 토크나이징(Komoran, Kkma, Okt) (0) | 2021.12.03 |
---|---|
자연어처리(NLP)에 쓰이는 13가지 기초 용어 알아보기 (0) | 2021.11.29 |
파이토치 기초 텐서(Tensor) 연산 및 유용한 함수 - torch.add(), arange(), view(), sum(), transpose() (0) | 2021.11.27 |
파이토치 기초 텐서(Tensor) 타입 - float, long, double (0) | 2021.11.27 |
파이토치 기초 텐서(Tensor) 다루기 - torch.Tensor(), rand(), randn(), zeros(), ones(), fill_(), from_numpy() (0) | 2021.11.27 |
댓글