[부스트캠프 AI tech Pytorch Basic] week02 (2022.01.25)

04강 AutoGrad & Optimizer(colab)

강의 소개

이번 강의에선 Pytorch의 Module, Parameter와 Backward 과정 - Optimizer에 대해 학습합니다. nn.Module을 통해 기본적으로 PyTorch에 구현되어 있는 네트워크 텐서 모듈들을 살펴보고 nn.Parameter이 Module 내부에서 어떤 역할을 하는지 학습합니다. 마지막으로 Backward 함수가 작동하는 방식을 확인해 직접 구현해보는 시간을 가집니다.

Further Question

1 epoch에서 이뤄지는 모델 학습 과정을 정리해보고 성능을 올리기 위해서 어떤 부분을 먼저 고려하면 좋을지 같이 논의해보세요
optimizer.zero_grad()를 안하면 어떤 일이 일어날지 그리고 매 batch step마다 항상 필요한지 같이 논의해보세요

nn.parameter

self.weights = nn.Parameter(torch.randn(in_features, out_features))

  • Tensor 객체의 상속객체
  • nn.Module 내에 attribute가 될 때는 required_grad=True로 지정되어 학습대상이 되는 Tensor
  • 대부분의 레이어에는 weights 값들이 지정되어 있음

AutoGrad

for epoch in range(epochs):
	...
    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward() # gradient 계산
    optimizer.step() # 가중치 갱신

05 Dataset & Dataloader(colab)

Dataset 클래스

  • 데이터 입력형태를 정의하는 클래스
  • 데이터를 입력하는 방식의 표준화
  • 모든 것을 데이터 생성 시점에 처리할 필요는 없음
  • CPU: 텐서 변환 / GPU: 학습

DataLoader 클래스

  • Batch를 생성해주는 클래스
  • 학습직전(GPU feed 전) 데이터의 변환을 책임
  • Tensor로 변환 + Batch 처리가 메인업무
  • 병렬적인 데이터 전처리 코드의 고민 필요
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, 
batch_sampler=None, num_workers=0, cllate_fn=None,
pin_memory=False, drop_last=False, timeout=0,
worker_init_fn=None, *, prefetch_factor=2,
persistent_workers=False)
  • sampler
  • batch_sampler
  • collate_fn: input의 길이가 다를 때

좋은 웹페이지 즐겨찾기