[PyTorch] AutoGrad&Optimizer
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의 기울기를 자동적으로 구해줌)
딥러닝의 구조는 결국 여러가지 Layer(Blcok)들이 쌓이고 반복되는 구조를 갖는다.
이러한 것들을 만들기 위한 가장 기본적인 Torch의 구조는 torch.nn.Module이다.
딥러닝을 구성하는 Layer의 가장 base class 이다.
Input,Output,Foward,Backward를 정의 한다.
학습의 대상이 되는 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에서 잘구현된 자동 미분을 이용하자(?)!
Author And Source
이 문제에 관하여([PyTorch] AutoGrad&Optimizer), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimhwangdae/PyTorch-AutoGradOptimizer저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)