210728 FUNDAMENTAL 18. TF2 API

시에나 Sienna·2021년 7월 28일
0

AIFFEL

목록 보기
18/66
post-custom-banner
  • Tensorflow : 딥러닝 프레임 워크(ex. Tensorflow V2 API, Keras)
  • pyTorch
    • 특징 : 철저한 파이써닉, 직관적인 API 설계, 쉬운 사용법

1. Tensorflow V2

  • V1 대비 차별화된 장점
    • Ease of use(사용하기 쉬움)
    • Eager Execution(즉시 실행)
    • Model Building and deploying made easy(설계 구현 용이성)
    • The Data pipeline simplified(데이터 파이프라인 단순화)
  • TensorFlow2에서 딥러닝 모델을 작성하는 방법
    • Sequential
    • Functional : Sequential의 일반화된 개념
    • Model Subclassing : 클래스로 구현된 기존의 모델을 상속받아 자신만의 모델을 만들어나가는 방식

1) TensorFlow2 Sequential Model

  • 반드시 입력 1가지, 출력 1가지를 전제로 함
  • 장점 : 초보자가 접근하기 매우 쉬움
  • 단점 : 입출력이 여러개인 경우 적합하지 않는 모델링 방식
import tensorflow as tf
from tensorflow import keras

model = keras.Sequential()
model.add(__넣고싶은 레이어__)
model.add(__넣고싶은 레이어__)
model.add(__넣고싶은 레이어__)

model.fit(x, y, epochs=10, batch_size=32)

2) TensorFlow2 Functional API

  • 입력(inputs)과 출력(outputs)을 규정함으로써 모델 전체를 규정
  • keras.Model을 사용 ⇨ ∴ Sequential 보다 더 일반적인 접근/자유로운 모델링 진행
  • 장점 : 다중입력/출력을 가지는 모델을 구성 가능
import tensorflow as tf
from tensorflow import keras

inputs = keras.Input(shape=(__원하는 입력값 모양__))
x = keras.layers.__넣고싶은 레이어__(관련 파라미터)(input)
x = keras.layers.__넣고싶은 레이어__(관련 파라미터)(x)
outputs = keras.layers.__넣고싶은 레이어__(관련 파라미터)(x)

model = keras.Model(inputs=inputs, outputs=outputs)
model.fit(x,y, epochs=10, batch_size=32)

3) TensorFlow2 Subclassing

  • 장점 : 제일 자유로운 모델링 진행
  • 단점 : 각 레이어에 대한 깊은 이해가 필요하여 초심자에게 어려움
import tensorflow as tf
from tensorflow import keras

class CustomModel(keras.Model):
    def __init__(self):
        super(CustomModel, self).__init__()
        self.__정의하고자 하는 레이어__()
        self.__정의하고자 하는 레이어__()
        self.__정의하고자 하는 레이어__()
    
    def call(self, x):
        x = self.__정의하고자 하는 레이어__(x)
        x = self.__정의하고자 하는 레이어__(x)
        x = self.__정의하고자 하는 레이어__(x)
        
        return x
    
model = CustomModel()
model.fit(x,y, epochs=10, batch_size=32)

2. GradientTape의 활용

  • Numpy만 가지고 딥러닝 구현하는 방법

    1. Forward Propagation 수행 및 중간 레이어값 저장
    2. Loss값 계산
    3. chain rule 방식의 Backward Propagation 수행(중간 레이어값 및 Loss를 활용)
    4. 학습 파라미터 업데이터
  • 1~4까지의 기능이 TF2 API에서 model.fit() 메소드 한 줄로 수행

  • tf.GradientTape

    • 순전파(forward pass) 로 진행된 모든 연산의 중간 레이어값을 tape에 기록
      gradient를 계산한 후 tape를 폐기하는 기능을 수행
    • 지도학습 방식과 다른 강화학습 또는 GAN(Generative Advasarial Network)의 학습을 위해서는 train_step 메소드의 재구성이 필수적

tf.GradientTape()의 활용법을 꼭 숙지!!✨(중요)

post-custom-banner

0개의 댓글