1 of 18

Trainer pattern

​

허지완

KAIST Statistical Inference and

Information Theory Lab

2 of 18

목차

  • Introduction
  • Trainer를 이용한 Keras 코드 작성
    • MNIST dataset
    • Classification Code
  • Generative Adversarial Network(GAN) 설명
  • Trainer를 이용한 GAN 코드

3 of 18

Introduction

  • Target
    • 딥러닝을 이용한 개발, 연구를 시작한 지 얼마 되지 않으신 분들!

​

  • 딥러닝 실험, 개발
    • 모델 정의, 데이터 전처리 및 불러오기, 학습, loss 계산, optimizing, etc...
    • 여러 파트를 맞물려 작성하다 보면 코드가 복잡해짐
    • 사람마다 코딩 스타일이 달라 팀 작업시 작업 분배, 코드 이해가 느려짐

​

4 of 18

Introduction

  • High-level의 추상화된 코드를 제공하는 딥러닝 라이브러리의 등장
    • 정돈된 코드 스타일
    • 최소한의 코드 수정으로 개발 가능
    • 코드를 처음 보는 사람도 정형화된 패턴을 알고 있으면 빠르게 코드 이해가 가능

​

​

​

5 of 18

Introduction

  • Pytorch VS Pytorch Lightning

​

모델 정의

데이터셋 준비

Optimizer

Loss

Train loop

Main.py

Main.py

6 of 18

Introduction

  • Pytorch VS Pytorch Lightning
    • PL, Keras: modul화를 통한 정돈된 코드

​

7 of 18

Trainer를 이용한 Keras 코드 작성

네트워크 구조 정의

  • model_a.py
  • model_b.py

​

Model.py

Trainer.py

학습 방법 정의 (method)

main.py

실행 코드 + hyper parameter

Loss.py

손실 함수 정의

​

Utils.py

기타 함수들 정의

Dataloader.py

데이터 로더 정의

  • MNIST.py
  • CIFAR10.py
  • CustomData.py

8 of 18

Introduction

  • StyleGAN2 main code

​

​

​

9 of 18

Introduction

  • StyleGAN2 main code

​

​

​

...

10 of 18

Introduction

  • StyleGAN2 Training code

​

​

​

...

..

11 of 18

Trainer를 이용한 Keras 코드 작성

  • Task: Classification
  • Dataset: MNIST
    • 0~9로 이루어진 hand-writing dataset
    • Size: 28x28 (Gray scale)

​

​

MNIST Dataset

12 of 18

Trainer를 이용한 Keras 코드 작성

데이터셋 정의 및 Preprocessing

Model 정의

13 of 18

Trainer를 이용한 Keras 코드 작성

Compile & fit 🡪 더 하위 level의 control?

14 of 18

Trainer를 이용한 Keras 코드 작성

15 of 18

Trainer를 이용한 Keras 코드 작성

Trainer 객체 생성

compile & fit

16 of 18

Generative Adversarial Network (GAN)

생성자 (Generator)와 판별자 (Discriminator)가 동시에 학습

 

17 of 18

Generative Adversarial Network (GAN)

Code

18 of 18

Thank you!

​

허지완

KAIST Statistical Inference and

Information Theory Lab