Pytorch는 현 META, 구 Facebook 에서 제공하는 딥러닝 프레임 워크입니다. 구글에서 제공하는 프레임워크인 Tensorflow와 쌍벽을 이루고 있습니다.
하지만, 최근 연구개발 분야에 한해서는 명령이 직관적이고 모델이 비교적 간결하게 구현되는 Pytorch가 선호되는 추세입니다.
무엇보다도, Python의 기본 프레임워크이자 가장 유용하게 사용되는 numpy와 유사한 문법구조를 가지고 있다는 점이 가장 큰 장점입니다.
📌 tensor, 텐서란
Tensor, 텐서는 흔히 행렬로 생각하기 쉽지만, 행렬보다는 사실 배열이 맞는 표현입니다. 텐서는 차원에 따라서 부르는 이름이 달라집니다. 흔히 numpy와 pandas에서 사용되기 때문에 이미 익숙하신 분들도 있을 것입니다.
텐서는 명칭이 혼용되는 경향이 있어, 정확하게 구분하기는 어렵지만 차원에 따라 나누어 이해해두면 도움이 됩니다. 흔히 0차원 텐서를 'scalar, 스칼라', 1차원 텐서를 'vector, 벡터', 2차원 텐서를 'matrix, 행렬' 3차원 텐서를 'tensor, 텐서'라고 호칭합니다.
4차원 텐서부터는 우리의 인지범위 밖으로 벗어나기 때문에 Four-tensor, Five-tensor와 같이 호칭합니다.
이를 시각적으로 이해하면 위 그림과 같습니다.
📌 tensor, 텐서 생성
이제, 텐서를 pytorch를 이용하여 구현하는 방법에 대해서 알아보겠습니다. 우선, torch 프레임워크를 불러옵니다.
import torch
1차원 텐서인 vector, 벡터부터 구현해보도록 하겠습니다.
D1_tensor = torch.tensor([0,1])
2차원 텐서인 matrix, 행렬을 구현해보겠습니다.
D2_tensor = torch.tensor([
[0,1],
[2,3]
])
줄 바꿈을 많이 사용하는 것은 시각적으로 알아보기 쉽게 하기 위함입니다. 위 2차원 텐서 행렬은 2개의 1차원 텐서 [0,1]과 [2,3]을 하나의 텐서로 가지고 있기때문에 2개의 대괄호를 이용해 [[0,1],[2,3]] 으로 나타낼 수 있습니다.
3차원 텐서, tensor를 구현해보겠습니다.
D3_tensor = torch.tensor([
[
[0,1],
[2,3]
]
[
[4,5],
[6,7]
]
])
3차원 텐서는 2개의 2차원 텐서 행렬을 하나의 텐서로 나타낸 것이기 때문에 위와 같이 3개의 대괄호를 이용해서 나타냅니다.