일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 리눅스
- 티스토리
- 매틀랩
- MySQL
- Blog
- 서평
- matplotlib
- 딥러닝
- MATLAB
- 독후감
- Python
- 블로그
- 텐서플로
- Visualization
- Google Analytics
- 시각화
- Ga
- 통계학
- 서평단
- tensorflow
- SQL
- 파이썬
- Linux
- Tistory
- python visualization
- Pandas
- 한빛미디어서평단
- 월간결산
- 한빛미디어
- 파이썬 시각화
- Today
- Total
pbj0812의 코딩 일기
[PYTORCH] 06_pytorch with examples (nn module) 본문
Pytorch with examples (autograd 재정의) 코드 분석
- 아래 글은 파이토치 튜토리얼 중 nn module을 사용하는 부분을 재구성한 글입니다.
- 학습하기 위해 코드를 잘라서 설명하였기 때문에 전체 코드는 깃허브나 아래 링크 참조 바랍니다.
원본링크 : https://pytorch.org/tutorials/beginner/pytorch_with_examples.html
nn module
- PyTorch의 autograd 기능은 복잡한 연산자를 정의하고 유도해내는데 편하지만, 큰 뉴럴 네트워크에서는 구성하는데 어려움이 많다.
- TensorFlow에서는 이러한 어려움을 극복하기 위해 Keras, TensorFlow-Slim, TFLearn등을 사용한다.
- PyTorch에서는 동일한 기능을 위해 nn module를 구현하였다.
코드 프리뷰
하이퍼 파라미터 세팅
N, D_in, H, D_out = 64, 1000, 100, 10
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)
learning_rate = 1e-4
- 하이퍼 파라미터 세팅 부분이다.
- x와 y, learning_rate를 정의하였다.
시퀀스 모델 구성(nn module 사용)
model = torch.nn.Sequential(
torch.nn.Linear(D_in, H),
torch.nn.ReLU(),
torch.nn.Linear(H, D_out),
)
- torch.nn.Sequential 함수를 통해 모델을 구성하였다.
1) D_in의 데이터가 입력으로 들어와 H로 변환
2) H에 ReLU 적용
3) H를 입력으로 받고 출력물로 D_out 생성
loss 함수 정의
loss_fn = torch.nn.MSELoss(reduction='sum')
- loss 함수로는 MSE(Mean Squared Error)를 사용하였고, 출력값은 다 더하였다.(reduction='sum')
예측값 정의
y_pred = model(x)
- y_pred에 예측값을 지정해준다.
loss 계산
loss = loss_fn(y_pred, y)
- 위에서 정의한 loss 함수(loss_fn)에 입력값으로 y와 예측된 y(y_pred)를 주어 loss를 계산한다.
모델 초기화
model.zero_grad()
- 모델을 돌리기 전에 gradient를 초기화 하는 부분이다.
backward 진행
loss.backward()
- loss에 대한 backward를 진행한다.
gradient 갱신
with torch.no_grad():
for param in model.parameters():
param -= learning_rate * param.grad
- torch.no_grad()를 사용하여 연산의 추적을 피한다.
- 계산된 parameter들의 loss의 gradient에 learning_rate를 곱한 값을 현재의 가중치에서 빼줌으로 학습을 진행한다.
'인공지능 & 머신러닝 > PYTORCH' 카테고리의 다른 글
[PYTORCH] 05_pytorch with examples (TensorFlow) (0) | 2019.06.16 |
---|---|
[PYTORCH] 04_pytorch with examples (autograd 재정의) (0) | 2019.06.10 |
[PYTORCH] 03_pytorch with examples (autograd) (0) | 2019.05.31 |
[PYTORCH] 02_pytorch with examples (tensor) (0) | 2019.05.29 |
[PYTORCH] 01_pytorch with examples (numpy) (0) | 2019.05.26 |