type(nums)
안녕하세요. 이제 파이토치로 딥러닝할 준비가 다 되었습니다.
이제 딥러닝을 하기 전에 파이토치 문법 구조에 대해서 알아보겠습니다.
텐서플로우는 numpyarray를 기본으로 텐서(3차 이상)를 사용한답니다.
우리들이 공부할 파이토치는 torch를 가지고 놉니다.
그냥 numpy = torch 이렇게 보시면 될 것 같습니다.
이번 시간에 파이토치의 기본인 torch는 데이터 전처리 과정이라고 볼 수 있습니다.
수천 수만 데이터를 다루기 위해서는 전처리 과정을 거쳐야 합니다.
모델을 구상하고, 반복, 학습만큼 데이터 전처리 과정은 상당히 중요합니다.
1. 기본 구조
import torch
import numpy as np
nums = torch.arange(9)
nums
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
nums.shape
torch.Size([9])
type(nums)
torch.Tensor
nums.numpy()
array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=int64)
nums.reshape(3,3) # 데이터 전처리하는데 가장 많이 사용
tensor([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
randoms = torch.rand((3,3))
randoms
tensor([[0.5127, 0.8462, 0.1646],
[0.1679, 0.7492, 0.1046],
[0.6169, 0.6014, 0.1144]])
zeros = torch.zeros((3,3))
zeros
tensor([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])
ones = torch.ones((3,3))
ones
tensor([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])
torch.zeros_like(ones)
tensor([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])
2. 연산
import torch
import numpy as np
nums = torch.arange(9)
nums * 3
tensor([ 0, 3, 6, 9, 12, 15, 18, 21, 24])
nums = nums.reshape((3,3))
nums + nums
tensor([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
result = torch.add(nums, 10)
array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18]], dtype=int64)
그 외 사칙연산은 이 방법과 전부 일치합니다.
하지만 조금 연산에 주의해야 하는 부분은 곱셈 쪽입니다.
torch는 하나의 행렬(1, 2차)이며, 텐서(3차, dim = 3, rank = 3)로 볼 수 있습니다.
- * : 스칼라 곱
- dot : 벡터 내적
- mv : 행렬과 벡터의 곱
- mm : 행렬과 행렬의 곱
- matmul : 인수의 종류에 따라서 자동으로 dot, mv, mm을 선택
곱셈의 종류가 상당합니다.
스칼라 곱, 행렬 곱은 우리들이 공부했던 고등수학에 나오는 것과 일치합니다.
하지만 dot은 어떻게 할까요?
dot은 2차에서는 행렬의 곱과 똑같으나 3차 이상에서는 계산이 많이 달라집니다.
수학적인 부분도 중요하나, 저는 코딩 쪽에 비중을 두면서 공부하도록 하겠습니다.
좀 정리하고 보니 별로네요..
코드블럭을 처음 써봤는데 이상하기도 하고,
다음 글은 좀 더 필요하고 유용한 필요한 부분만 써야할 것 같습니다.
'Python > Deep Learning' 카테고리의 다른 글
[딥러닝] RNN with PyTorch ( RNN 기본 구조, 사용 방법 ) (3) | 2020.04.28 |
---|---|
[딥러닝] 선형회귀 (Linear Regression) : Pytorch 구현 (2) | 2020.04.14 |
[딥러닝] 선형 회귀(Linear Regression) (1) | 2020.04.09 |
[딥러닝] 파이토치 step2:: 설치&준비 (0) | 2020.02.04 |
[딥러닝]인공지능 파이토치 step1::주피터 노트북 준비 (0) | 2020.02.03 |