[부스트캠프 AI-Tech] Day 7

4. AutoGrad & Optimizer

  • torch.nn.Module
    • 딥러닝을 구성하는 Layer의 base class
    • input, output, forward, backward 정의
    • 학습의 대상이 되는 parameter(tensor) 정의

  • nn.Parameter

    • Tensor 객체의 상속 객체
    • nn.Module 내에 attribute가 될 때는 required_grad=True로 지정되어 학습 대상이 되는 Tensor
    • 직접 쓸일은 많지 않음 (대부분의 layer에는 weight 값들이 지정되어 있음)
  • Backward

    • Layer에 있는 Parameter들의 미분을 수행
    • Forward의 결과값(model의 ouput = 예측치)과 실제값 간의 차이(loss)에 대해 미분을 수행
    • 해당 값으로 paremeter 업데이트
    • 실제 backward는 module 단계에서 직접 지정가능



5. Pytorch datasets & dataloaders

  • Data Flow

  • Dataset 클래스
    • 데이터 입력 형태를 정의하는 클래스
    • 데이터를 입력하는 방식의 표준화
    • Image, Text, Audio 등에 따른 다른 입력정의
    • 모든 것을 데이터 생성 시점에 처리할 필요는 없음 (image, Tensor 변화는 학습에 필요한 시점에 변환)
    • 최근에는 HuggingFace등 표준화된 라이브러리 사용
import torch
from torch.utils.data import Dataset

class CustomDataset(Dataset):
		def __init__(self, text, labels):  # 초기 데이터 생성 방법을 지정
				self.labels = labels
				self.data = text
		
		def __len__(self):
				return len(self.labels)  # 데이터 전체 길이

		def __getitem__(self, idx):  # idx 값을 주었을 때 반환되는 데이터의 형태
				label = self.labels[idx]
				text = self.text[idx]
				sample = {"Text": text, "Class": label}
				return sample
  • DataLoader 클래스
    • Data의 Batch를 생성해주는 클래스
    • 학습직전(GPU feed전) 데이터의 변환을 책임
    • Tensor로 변환 + Batch 처리가 메인 업무
    • 병렬적인 데이터 전처리 코드의 고민 필요

좋은 웹페이지 즐겨찾기