728x90
구체적인 훈련 방법에 대해 알아보자. 가장 먼저 필요한 절차가 optimizer.zero_grad() 메서드를 이용하여 기울기를 초기화하는 것이다. 파이토치는 기울기 값을 계산하기 위해 loss.backward() 메서드를 이용하는데, 이것을 사용하면 새로운 기울기 값이 이전 기울기 값에 누적하여 계산된다.
이 방법은 순환 신경망 모델을 구현할 때 효과적이지만 누적 계산이 필요하지 않은 모델에 대해서는 불필요하다. 따라서 기울기 값에 대해 누적 계산이 필요하지 않을 때는 입력 값을 모델에 적용하기 전에 optimizer.zero_grad() 메서드를 호출하여 미분 값이 누적되지 않게 초기화해 주어야 한다.
딥러닝 학습 절차 | 파이토치 학습 절차 |
모델, 손실 함수, 옵티마이저 정의 | 모델, 손실 함수, 옵티마이저 정의 |
optimizer.zero_grad( ): 전방향 학습, 기울기 초기화 |
|
전방향 학습 (입력 -> 출력 계산) | output = model(input) : 출력 계산 |
손실 함수로 출력과 정답의 차이 계산 | loss = loss_fn(output, target) : 오차 계산 |
역전파 학습 | loss.backward( ) : 역전파 학습 |
기울기 업데이트 | optimizer.step( ) : 기울기 업데이트 |
다음은 loss.backward() 메서드를 이용하여 기울기를 자동 계산한다. loss_backward()는 배치가 반복될 때마다 오차가 중첩적으로 쌓이게 되므로 매번 zero_grad()를 사용하여 미분 값을 0으로 초기화한다.
다음은 모델을 훈련시키는 예시 코드이다.
for epoch in range(100):
yhat = model(x_train)
loss = criterion(yhat, y_train)
optimizer.zero_grad()
loss.backward()
optimizer.step()
728x90
'딥러닝 > Pytorch' 카테고리의 다른 글
Pytorch nn.Embedding() (0) | 2022.05.30 |
---|---|
Pytorch 기본 문법 - 모델 평가 (0) | 2022.05.25 |
Pytorch 기본 문법 - 파라미터 정의 (0) | 2022.05.23 |
Pytorch 기본 문법 - 모델 정의 (0) | 2022.05.23 |
Pytorch 기본 문법 - 데이터 준비 (1) | 2022.05.18 |