다음은 인덱스 조작에 대한 결과입니다.
tensor(1.) tensor(2.) tensor(7.) ------------------------ tensor([3., 4., 5.]) tensor([5., 6.])
텐서 연산 및 차원 조작
텐서는 넘파이의 ndarray처럼 다양한 수학 연산이 가능하며, GPU를 사용하면 더 빠르게 연산할 수 있습니다. 참고로 텐서 간의 타입이 다르면 연산이 불가능합니다. 예를 들어 FloatTensor와 DoubleTensor 간에 사칙 연산을 수행하면 오류가 발생합니다.
다음과 같이 벡터 두 개를 생성하여 사칙 연산을 할 수 있습니다.
v = torch.tensor([1, 2, 3]) ------ 길이가 3인 벡터 생성 w = torch.tensor([3, 4, 6]) print(w - v) ------ 길이가 같은 벡터 간 뺄셈 연산
다음은 벡터 간 뺄셈 연산에 대한 결과입니다.
tensor([2, 2, 3])
이번에는 텐서의 차원을 조작해 보겠습니다. 텐서의 차원에 대한 문제는 신경망에서 자주 다루어지므로 상당히 중요합니다.
텐서의 차원을 변경하는 가장 대표적인 방법은 view를 이용하는 것입니다. 이외에도 텐서를 결합하는 stack, cat과 차원을 교환하는 t, transpose도 사용됩니다. view는 넘파이의 reshape과 유사하며 cat은 다른 길이의 텐서를 하나로 병합할 때 사용합니다. 또한, transpose는 행렬의 전치 외에도 차원의 순서를 변경할 때도 사용됩니다.