Week2 - PyTorch 구조 학습하기

nayeoniee·2022년 2월 6일
0

Boostcamp AI Tech

목록 보기
3/10
post-thumbnail

4강. AutoGrad & Optimizer

  • torch.nn.Module: 딥러닝을 구성하는 Layer의 base class으로 input, output, forward, backward를 정의함, 학습의 대상이 되는 parameter(tensor)를 정의한다.
  • nn.Parameter: 학습의 대상이 되는 weight를 정의한다.
    • Tensor객체의 상속 객체
    • nn.Module 내에서 attribute가 될 때는 required_grad = True로 설정해 학습의 대상의 되는 Tensor
    • 대부분의 layer에서는 weights 값들이 지정되어 있어 직접 지정할 일은 별로 없음
  • Backward
    • 실제 backward는 Module단계에서 직접 지정 가능
    • Module에서 backward와 optimizer 오버라이딩

5강. Dataset & DataLoader

데이터셋에 전처리를 수행한 후에 Tensor로 변환한다.

Dataset

  • Dataset 클래스: 데이터 입력 형태를 정의하는 클래스, 데이터를 입력하는 방식을 표준화 함, image/text/audio에 따라 다른게 정의된다.
    • init() : 초기 데이터 생성 방법을 지정
    • len() : 데이터의 전체 길이
    • getitem() : map-style로 index 값이 주어졌을 때 반환되는 데이터의 형태(X, y)
  • Dataset 클래스 생성 시 유의점
    • 데이터 형태에 따라 함수를 다르게 정의
    • 데이터 생성 시점에 모든걸 처리할 필요는 없음, image의 Tensor 변화는 학습에 필요한 시점에 변환(transform 함수 사용)
    • 최근에는 HuggingFace 등 표준화된 라이브러리 사용

DataLoader

  • DataLoader: 데이터를 모델에 어떻게 feeding할지, Data의 배치를 생성하는 클래스

    • 학습 직전 데이터의 변환을 책임
    • Tensor로 변환 + 배치 처리가 주된 업무/기능
    • 데이터 전처리 코드는 병렬적으로 작성해야 함
  • MNIST 데이터셋 직접 다운받고 dataloader 등 사용하기: pytorch datasets & dataloader tutorial

6강. 모델 불러오기

  • model.save(): 학습의 결과를 저장하는 함수로 architecture와 parameter를 저장한다.
  • checkpoints: 학습의 중간 결과를 저장해 최선의 결과를 선택, 일반적으로 epoch, loss, metric을 함께 저장한다.
  • Transfer Learning: 다른 데이터셋으로 만든 모델을 현재 데이터에 적용, 대용량 데이터셋으로 만들어진 모델의 성능이 좋음, backbone architecture가 잘 학습된 모델에서 일부분만 변경해 학습을 수행한다.
  • NLP는 huggingface가 표준으로 사용된다.

7강. Monitoring tools for PyTorch

1. tensorboard

  • 텐서플로우의 프로젝트로 만들어진 시각화 도구로 학습 그래프, metric, 학습 결과의 시각화를 지원한다. PyTorch에도 연결 가능하다.
  • scalar: metric 등 상수 값의 epoch을 표시
  • graph: 모델의 computational graph 표시
  • histogram: weight 등 값의 분포를 표현
  • image: 예측 값과 실제 값을 비교 표시
  • mesh: 3D 형태의 데이터를 표현하는 도구

2. weight & biases

  • 머신러닝 실험을 원활히 지원하기 위한 상용 도구(MLOps의 대표적인 툴)
  • 협업, code versioning, 실험 결과 기록 등을 제공
profile
개발노트

0개의 댓글

관련 채용 정보