backward 과정
for epoch in range(epochs):
...
# Clear gradient buffers because we don't want any gradient from previous epoch
optimizer.zero_grad()
# get output from the model, given the inputs
outputs = model(inputs) # y_hat
# get loss for the predicted output
loss = criterion(outputs, labels)
# get gradients w.r.t to parameters
loss.backward()
# update parameters
optimizer.step()
- optimizer.zero_grad()
이전 epoch에 학습했던 것이 영향을 미치지 않도록 gradient를 초기화한다.
- model(inputs)
모델 예측
- criterion(outputs, labels)
loss 연산
- loss.backward()
파라미터의 gradients 계산
- optimizer.step()
파라미터 업데이트