AI
PyTorch | nn.Module, Parameter, Backward
cstory-bo
2024. 1. 12. 14:37

AutoGrad & Optimizer
오늘은 PyTorch에서 AutoGrad와 Optimizer를 위해서 사용되는 객체과 함수들을 소개할 예정이다.
nn.Module
- 딥러닝을 구성하는 Layer의 base class이다.
- Input, Output, Forward, Backward 정의한다.
- 학습이 되는 Parameter로 정의가 된다.
그러면 이제 weight를 정의를 해야하는데 이는 nn.Parameter로 정의된다.
nn.Parameter
- Tensor 객체의 상속 객체이다.
- nn.Module 내에 attribute 가 될 때는 required_grad=True로 지정되어 학습의 대상이 되는 Tensor이다.
- 직접 설정하는 일은 잘 없다.
- 이 객체를 사용하지 않고 Tensor를 사용하면 자동미분이 되지 않는다.
Backward
- Layer에 있는 Parameter의 미분을 수행한다.
- Forward의 결과값(예측값)과 실제값 간의 차이(loss)에 대해 미분을 수행한다. AutoGrad로 자동미분으로 일어난다.
- 해당 값으로 Parameter를 업데이트한다.
for epoch in range(epochs): # epoch마다 발생
optimizer.zero_grad() # 이전의 grad가 영향을 주지 않도록 초기화
output = model(input) # pred_y
loss = criterion(output,label) # loss 계산
loss.backward() # loss에 대해서 모든 W값 미분해 grad구함
optimizer.step() # W 업데이트