PyTorch | nn.Module, Parameter, Backward

bolim·2022년 1월 26일
0

PyTorch

목록 보기
3/8
post-thumbnail

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 업데이트
profile
나는야 호기심 많은 느림보🤖

0개의 댓글