Outline
-
Pytorch Tutorial
- Pytorch란?
- Pytorch Tudorial
- Autograd
- Gradient
Pytorch Tutorial
[1/4] Pytorch란?
- pytorch는 파이썬 기반의 오픈소스 머신러닝 라이브러리로, Torch를 기반으로 하고 자연어 처리와 같은 애플리케이션을 위해 사용된다. 페이스북 인공지능 연구집단에 의해 개발되었다. 간결하고 구현이 빠르며 텐서플로우보다 익히기 쉽다.
[2/4] Pytorch Tutorial
empty
- tensor는 자료형의 단위이다.
- torch.empty는 초기화 되지 않은 행렬으로, 그 시점에 할당된 메모리에 존재하던 값이 초기값으로 나타난다.
- type(x)를 출력해보면 자료형이 torch.tensor라고 나온다.
random
- rand 는 0,1 사이에 균등분포에서 랜덤으로 값을 가져와 행렬을 만든다
zeros
- 0 으로 채워진 행렬을 생성
- dtype은 자료형을 지정할 수 있다. (ex. torch.long, torch.int …)
tensor
new ones
randn_like
- dtype을 오버라이드한다.
- randn_like는 사이즈를 튜플로 입력하지 않고 기존의 텐서로 정의한다.
size
덧셈
- torch에서의 덧셈연산이다.
- + 연산자와 torch.add()로 연산이 가능하다.
- 아래와 같은 방식도 가능하다.
- 결과를 빈 tensor에 넣어 출력을 한다.
- in place 방식이며, 바꿔치기 방식이라고 한다.
indexing
- 아래와 같은 indexing은 전체 행에서 1번째 열만 가져오는 코드이다.
- x tensor를 같이 출력해보면 1번째 열만 출력된 것을 볼 수 있다.
view
- torch.view는 tensor의 크기와 모양을 변경해 준다.
- 4x4로 선언된 x tensor를 view를 사용해 크기를 변경해 주었다.
- view에서 -1은 자동으로 모양을 채워준다.
item
- tensor의 내부 값만 가져온다.
- int형으로 반환해 준다.
numpy와의 호환성
[3/4] Autograd
requires_grad
- requires_grad의 속성을 True로 하면, 해당 tensor에서 이뤄진 모든 연산을 추적하기 시작한다.
- requires_grad 는 기존의 값을 바꿔치기 하여 tensor 를 변경한다.
- requires_grad의 속성을 명시하지 않으면 기본적으로 True가 된다.
grad_fn
- grad_fn은 연산의 결과로 생성된 것이라는 표시이다.
[4/4] Gradient
grad
- out은 위의 z.mean()의 값과 같다.
- grad를 이용해 변화도를 출력한다.
야코비안 행렬
- gradient는 스칼라 함수에 대한 일차 미분이지만, 야코비안 행렬은 다변수 벡터 함수에 대한 일차 미분이다.
- 아래 식은 야코비안 행렬을 정의한 것이다.
torch.autograd
- torch.autograd는 벡터-야코비안 곱을 계산한다.
- 벡터 v = (v1 v2 … vm)T에 대해 vT * J을 연산한다.