2주차 PyTorch 정리

kimkihoon·2022년 1월 24일
0

부스트캠프 AI

목록 보기
3/49

PyTorch

tensorflow와 함께 가장 많이 쓰이는 딥러닝 프레임워크
Dynamic Computation Graph : 역전파법을 쓸 때 사용하는 AutoGrad를 할 때 실행시점에서 그래프를 정리한다.(실행을 하면서 그래프를 생성하는 방식)
이런 방식으로 하면 즉시 확인이 가능하여 pythonic code에 큰 장점을 갖고 있다. 사용하기 편하다.
PyTorch는 numpy를 구주로 가지는 Tensor 객체로 배열을 표현한다. Autograd를 지원한다.

Tensor

numpy의 ndarray와 동일하다.
torch.tensor(array) 로 선언할 수 있다.
view : reshape 대신 view를 쓴다. reshape도 써도 되는 것 같긴한데 어떤 상황에서 view만 써야하는지 확인해봐야할 듯 (중요도 매우 높음, 어려움)
squeeze : 차원의 개수 1인 차원 삭제 (중요도 낮음)
unsqueeze : 차원의 개수 1인 차원 추가 (중요도 낮음)
tensor도 numpy와 마찬가지로 사칙연산이 가능
곱셈만 따로 mm()을 통해 계산한다.(dot x)

AutoGrad

PyTorch의 핵심인 자동미분으로 backward 함수를 통해 사용한다.
딥러닝의 구조는 큰 layer 혹은 블록의 연속이다.

torch.nn.Module

딥러닝을 구성하는 layer의 base class로 input,output,forward,backward로 정의할 수 있다.

학습의 대상이 되는 weight값들을 parameter라는 class에 정의해둔다.(=Tensor)
모듈 내에 attribute될 때 반드시 required_grad = True를 통해 자동미분을 활성화해줘야한다.

Backward

Layer에 있는 weight들의 미분을 수행하는데 우리가 넣어주는 Forward값들(예측값) 실제값(y)간의 차이를 구하고 그것에 대해 미분을 수행한다. 수행 후에는 weight값들을 갱신한다.

  • optimizer.zero_grad() : 이전의 grad 값이 현재에 영향을 주지 않게 하기위해 0으로 초기화한다.
  • optimizer.step() : 파라미터를 갱신한다.

PyTorch 프로젝트 구조

Module 구성

실행
설정
abstract module : data 호출 혹은 만드려는 model 구조 설정, trigger
data : data 저장 부분
model : metric, loss, 등 다양한 모델
저장소 : 로그 등을 저장해주는 곳
학습수행
로깅
유틸리티
로 구성된다.

PyTorch Dataset

모델에 데이터를 넣는 방법을 말한다.
어떤식으로든 모아둔 데이터를 dataset이라는 클래스를 가지고 하나의 데이터를 어떻게 반환해주는지 정의를 해준다. transform을 통해 데이터 전처리를 해준다. dataloader는 하나하나 처리된 데이터들을 묶어서 모델을 fitting 해준다.batch, shuffle 등을 수행한다.

Dataset

데이터 입력 방식을 표준화하고 정의하는 클래스이다. 하나의 데이터에 어떻게 적용할지 정의하고 그것을 모든 데이터에 적용시킨다. 데이터 형태에 따라 다른 입력을 정의한다.
데이터 형태에 따라 다른 함수를 정의해주어야 한다.
초기화를 하는 init 부분에서 모든 것을 다 처리할 필요가 없다. 이미지의 tensor변화같은 경우 학습이 필요한 시점에서 해주면 된다. CPU는 데이터를 변환하고 GPU에서는 데이터 학습을 하는 것을 병렬적으로 처리할 수 있기 때문이다.

DataLoader

index를 가지고 여러 개의 data를 한 번에 묶어서 모델에 준다. 데이터의 batch를 생성해주는 클래스이며 학습 직전의 데이터를 tensor로 변환한다. DataLoader의 parameter들 중 sampler는 data를 어떻게 뽑을지 index를 정하는 기법이다.

0개의 댓글