[3주차] 8.18 수

William JO·2021년 8월 18일
0

✏️AutoGrad & Optimizer

  • DL model architecture는 여러 *layer의 반복과 연속(block)

torch.nn.Module

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

torch.nn.Parameter

  • Tensor 객체의 상속 객체
  • nn.Module 내에 attribute가 될 때는 required_grad=True로 지정되어 학습 대상이 되는 Tensor → AutoGrad
  • 우리가 직접 지정할 일은 잘 없음
    -> 대부분의 layer에는 weights 값들이 지정되어 있음

Backward

  • layer에 있는 parameter들의 미분을 수행
  • forward의 결과값 (model의 output = 예측치)과 실제값 간의 차이(loss)에 대해 미분을 수행
  • 해당 값으로 parameter 업데이트

Backward from the scratch

  • 실제 backward는 Module 단계에서 직접 지정가능 → AutoGrad
  • Module에서 backward와 optimizer오버라이딩
  • 사용자가 직접 미분 수식을 써야함
    -> 쓸 일은 없지만 순서는 이해할 필요가 있음

🔗Image Reference


✏️Dataset & Dataloaders

  • transform을 통해서 Dataset에서 정의해준 data들이 toTensor가 된다.

Dataset 클래스

  • 데이터 입력 형태를 정의하는 클래스
  • 데이터를 입력하는 방식의 표준화
  • 최근에는 HuggingFace등 표준화된 라이브러리 사용
  • 유의점
    • 모든 것을 데이터 생성 시점에 처리할 필요 X
      ex) image의 tensor 변화는 학습에 필요한 시점에 변환
    • Image, Text, Audio 등 데이터 종류에 따른 다른 입력정의

DataLoader 클래스

  • Data의 Batch를 생성해주는 클래스
  • 학습직전 (GPU feed전) 데이터 변환을 책임 → to tensor
  • tensor로 변환 + batch 처리가 메인 업무
  • 병렬적인 데이터 전처리 코드 고민 필요

🔗Reference


📕특강 - Unit Test

  • debugging을 잘 하는 것이 코딩을 잘 하는 것이다
  • 오류가 바로 눈에 보일 수 있게 코딩하는 것이 더 좋다 → TDD Unit Test (자동화 테스트)

ATDD & TDD

  • Unit Test
    • dependency가 존재하지 않고, method 단위로 test
    • 빠르게 내가 작성한 코드의 문제점을 찾을 수 있다.
  • Integration Test
    • dependency가 존재하는 통합 test
    • unit test 후에 하고, 어디서 문제가 일어났는지 찾기 힘들다.

TDD 작성법

  1. Write a failing unit test
  2. Write production code to make test pass
  3. Remove duplication and improve design (Refactoring)

ML Unit Test

  • ML Engineer들은 한 function에 다 몰아넣는 경향이 있다 → function은 작게, cohesive하게 (기능 하나만 구현) 작성되어야 유지보수, 테스트에 용이하다.
  • Compose method pattern
  • Extract method
  • training이 잘 되는 것인지 먼저 확인해라!
    -> 작은 dataset부터 점검 ex) 3일동안 걸린 학습 결과가 아무것도 없다..?

0개의 댓글

관련 채용 정보