반응형
PyTorch Basics¶
- Numpy + AutoGrad 라는 장점이 있다.
- Numpy operation이 torch에도 거의 적용된다.
- Numpy의 ndarray가 파이토치의 tensor와 동일하다고 보면 된다.
In [1]:
import torch
import numpy as np
In [2]:
data = [[3,5], [10,5]]
x_data = torch.tensor(data)
x_data
Out[2]:
In [7]:
data = [[[1,2],[3,4]], [[1,2],[3,4]]]
x_data = torch.tensor(data)
x_data
Out[7]:
In [10]:
torch.matmul(x_data, x_data)
Out[10]:
reshape 대신에 view를 쓰면 된다.¶
- 동작은 거의 비슷하다
- 메모리 주소를 그대로 가져오냐 아니냐의 차이인듯
In [4]:
tensor_ex = torch.rand(size=(2,3,2))
tensor_ex
Out[4]:
In [8]:
print(tensor_ex.view([-1,6]))
print(tensor_ex.reshape([-1,6]))
In [6]:
tensor_ex.reshape([-1,6])
Out[6]:
In [11]:
a = torch.zeros(3,2)
b = a.view(2,3)
# b에도 1이 들어간 형태로 바뀜
print(a.fill_(1))
print(b)
squeeze & unsqueeze¶
In [21]:
tensor_ex = torch.rand(size=(2,1,2))
print(tensor_ex.squeeze())
print(tensor_ex.squeeze().shape)
In [24]:
tensor_ex = torch.rand(size=(2,2))
print(tensor_ex.unsqueeze(0).shape)
print(tensor_ex.unsqueeze(1).shape)
print(tensor_ex.unsqueeze(2).shape)
행렬 곱셈 연산은 dot이 아닌 mm 또는 matmul을 사용함¶
- 파이토치에서는 둘을 구분한다.
- 스칼라 또는 벡터에서 내적 구할 때는 dot을 쓰지만, 행렬 연산에는 mm을 쓰자
In [28]:
n1 = np.arange(10).reshape(2,5)
t1 = torch.FloatTensor(n1)
n2 = np.arange(10).reshape(5,2)
t2 = torch.FloatTensor(n2)
print(t1.mm(t2))
print(t1.matmul(t2))
matmul은 broadcasting을 지원한다¶
- mm은 브로드캐스팅 지원 안 함.
In [35]:
a = torch.rand(5,2,3)
b = torch.rand(3)
# print(a.mm(b)) ### error 뜸
In [36]:
a = torch.rand(5,2,3)
b = torch.rand(3)
a.matmul(b)
Out[36]:
argmax, argmin¶
- dim = 0, dim = 1을 axis = 0, axis = 1처럼 사용
- 원핫인코딩에 사용 가능
In [50]:
import torch.nn.functional as F
y = torch.randint(5, (10,5))
y
Out[50]:
In [51]:
print(y.argmax(dim=0))
print(y.argmax(dim=1))
In [52]:
F.one_hot(y.argmax(dim=1))
Out[52]:
AutoGrad (자동 미분)¶
In [53]:
w = torch.tensor(2.0, requires_grad = True)
y = w**2
z = 10*y + 2
z.backward()
w.grad
Out[53]:
In [2]:
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:98% !important; }</style>"))
반응형
'Study' 카테고리의 다른 글
파이토치 CNN, RNN 개념과 역전파 (0) | 2022.02.23 |
---|---|
파이썬 중급, 고급 문법 (0) | 2022.02.03 |
미국주식 보통주 클래스 A, B의 차이와 의미를 알아보자 (0) | 2022.01.29 |
스팩주? 기업 인수 목적 회사란 무엇인가? (0) | 2022.01.28 |
[해외기업 재무제표] 시가총액, Market Capitalization (0) | 2022.01.27 |
댓글