인공지능/파이토치

파이토치 무작정 시작하기 2 - 패키지 구성 / 자동 미분 계산

해피밀세트 2020. 7. 9. 02:57
반응형

 

 

 

파이토치 패키지 구성

 

구성 내용 설명
torch 메인 네임스페이스로 텐서 등의 다양한 수학 함수가 이 패키지에 포함되어 있다. NumPy와 같은 구조를 가지고 있다.
torch.autograd 자동 미분을 위한 함수가 포함돼 있다. 자동 미분의 on/off를 제어하는 콘텍스트 매니저(enable_grade/no_grade)나 자체 미분 가능 함수를 정의할 때 사용하는 기반 클래스인 'Function' 등이 포함돼 있다.
torch.nn 신경망을 구축하기 위한 다양한 데이터 구조나 레이어 등이 정의돼 있다. 예를 들어 Convolution이나 LTSM, ReLU 등의 활성화 함수나 MSELoss 등의 손실 함수도 포함된다.
torch.optim 확률적 경사 하강법(SGD, Stochastic Gradient Descent)을 중심으로 한 파라미터 최적화 알고리즘이 구현돼 있다.
torch.utils.data SGD의 반복 연산을 실행할 때 사용하는 미니 배치용 유틸리티 함수가 포함돼 있다.
torch.onnx ONNX(Open Neural Network Exchange) 포맷으로 모델을 엑스포트(export)할 때 사용한다. ONNX는 서로 다른 딥러닝 프레임워크 간에 모델을 공유할 때 사용하는 새로운 포맷이다.

 


 

https://www.youtube.com/watch?v=_4gEHlsvSZ8

 

 

 

자동 미분 계산

 

# 라이브러리 불러오기

import torch
 

# 텐서 생성 / 변수 선언(+데이터 입력)
# requires_grad=True : x에 대해서 미분할 수 있도록 x에 관한 연산들을 모두 추적할 수 있게 한다.

 

x = torch.ones(2,2, requires_grad=True)

print(x)

# 텐서 연산 / 모델 내 연산 예측값 산출

y = x+1
print(y)
# 텐서 연산 / 손실함수 계산

z = 2*y**2
print(z)
# 결과값 / 손실 산출

res = z.mean()
print(res)
# res값을 미분하여 최적화

res.backward()
 
# x에 대한 미분값 확인

print(x.grad)

 

반응형