[PyTorch] AutoGrad&Optimizer

PangDae·2021년 8월 22일
0

PyTorch 란?

  • 딥런닝을 설계 할 때 필요한 도구들을 편리하게 제공해주는 일종의 패키지이다.

DeepLearning 이란?

  • 딥러닝의 구조는 결국 여러가지 Layer(Blcok)들이 쌓이고 반복되는 구조를 갖는다.

  • 이러한 것들을 만들기 위한 가장 기본적인 Torch의 구조는 torch.nn.Module이다.

torch.nn.Module이란?

  • 딥러닝을 구성하는 Layer의 가장 base class 이다.

  • Input,Output,Foward,Backward를 정의 한다.

  • 학습의 대상이 되는 Parameter를 정의 한다.

nn.Parameter

  • Tensor 객체의 상속 객체

  • nn.Module 내에 attribute가 될 때는 required_grad=True로 지정되어 학습 대상이 되는 Tensor 이다.( 여기서 Required_grad=True로 했을 시, 해당하는 attribute의 기울기를 자동적으로 구해줌)

※ Backwardpass에서 왼쪽에 보이는 수식 자동으로 구해준다고 이해하면 됨

[PyTorch] 선형회귀 예시

	for epoch in range(epochs):
    
    	optimizer.zero_grad()
        ## 이전에 구한 grad가 현재 grad에 영향을 주게 하지 않기 위한 초기화
        outputs=model(inputs)
		## model에 input을 넣어서 나온 결과값을 outputs에 저장
        loss=criterion(outputs,labels)
        ## 나온 아웃풋과 실제 결과값과 빼준 loss를 저장해줌
        loss.backward()
        ## 각 파라미터(웨이트)의 기울기가 구해짐
       	optimizer.step()
        ## 구해진 기울기로 각 파라미터를 업데이트 시켜줌
 

※ 여기서 보이는것과같이 backward에서 기울기가 구해지고 optimizer에서 각 Parameter들이 업데이트 된다.

※ backward에서는 사용자가 직접 backward에 오버라이딩해서 기울기를 구해줄 수 있지만 수식이 복잡해지면 어렵기 때문에 Pytorch에서 잘구현된 자동 미분을 이용하자(?)!

profile
개발이 하고싶습니다.

0개의 댓글