PyToch Basic
우선 파이토치에서는 Tensor의 구조를 사용한다. 그리고 numpy 기능들을 거의 다 지원한다.
Tensor
numpy의 ndarray와 비슷하다.
import torch
t_array = torch.FloatTensor(n_array)
이외의 Data to Tensor, ndarray to tensor방법 등이 있다.
GPU 사용
~.device를 하면 cpu인지 gpu 사용중인지 알 수 있다.
if torch.cuda.is_available():
data_cuda = data.to('cuda')
data_cuda.device
위의 코드로 gpu사용 가능하면 gpu로 바꾸도 아니라면 cpu를 그대로 출력한다.
Tensor Handling
view
reshape과 비슷하고 tensor의 shape 변환해준다.
a= torch.zeros(3,2)
b= a.view(2,3)
a.fill_(1)
a= torch.zeros(3,2)
b= a.t().reshape(2,3)
a.fill_(1)
reshape과 약간의 차이가 있는데,
위의 두 코드 이후 각 a,b를 출력해보면 b의 출력이 다르다.
view에서의 b는 모두 1로 채워져있지만 아래의 b는 0 그대로이다.
view 변환을 보장해주고 reshape은 보장 안해준다.
squeeze, unsqueeze
squeeze : 차원의 개수가 1인 차원을 삭제 (압축)
unsqueeze : 차원의 개수가 1인 차원을 추가
(2,2) → unsqueeze(0) ⇒ (1,2,2)
→ unsqueeze(1) ⇒ (2,1,2)
→ unsqueeze(2) ⇒ (2,2,1)
행렬곱
mm vs dot vs matmul
둘다 벡터일 때는 dot을 사용하고
행렬간 연산은 mm을 사용한다.
matmul은 브로드 캐스팅을 지원해주고 dot은 지원하지 않는다.
nn.functional
자주 사용하는 것 함수이다.
- F.softmax
- F.one_hot
AutoGrad
파이토치에서 backward 시에는 자동미분,AutoGrad를 한다.
requires_grad = True로 하면 미분의 대상이 된다.
그래서 만약 Freezing을 할 대는 requires_grad = False로 설정한다.
w= torch.tensor(2.0, requires_grad=True)
y= w**3
z= 10*y + 25
z.backward()
w.grad
# 120
'AI' 카테고리의 다른 글
PyTorch Monitoring tools | 학습과정 쉽게 그래프로 살펴보기 (0) | 2024.01.12 |
---|---|
PyTorch | Model save, checkpoints, freezing (0) | 2024.01.12 |
PyTorch | Dataset & DataLoader (0) | 2024.01.12 |
PyTorch | nn.Module, Parameter, Backward (0) | 2024.01.12 |
PyTorch vs Tensorflow | PyTorch✋ (0) | 2024.01.12 |