[Tensorflow 2.0] Subclassing 구현
- TensorFlow 2.0으로 베우는 딥러닝 입문 강의를 들으며 공부한 내용입니다.
복습 겸 입문 강의를 쭉 훑으면서 기초를 다시 다져보려 한다. Subclassing 코딩스타일을 익혀보자.
강의에 사용된 예제 코드는 이전에 다뤄본 MNIST 숫자분류 코드로 깃헙 주소는 아래와 같다. -> 여기!
1 | # tf.keras.Model을 이용해서 Softmax Regression 모델을 정의합니다. |
- 케라스 서브클래싱 방식을 사용한 코드패턴이다.
- tf.keras.Model을 상속받는 클래스를 하나 정의해준다.
- 생성자 init과 호출부 call 로직을 정의해준다. 생성자에서는 super 메서드를 통해 tf.keras.model의 생성자를 상속받는 형태로 정의해준다.
- 클래스 변수로 원하는 모델 구조의 API를 선언해준다.
- 클래스 호출부 call 메서드에서는 인자값으로 input data x를 받고 생성자 부분에서 정의했던 클래스 변수들(softmax_layer)을 순차적으로 호출한다 => 전체 모델 구조의 output 반환값을 계산(logits).
1 | # 최적화를 위한 function을 정의합니다. |
- GradientTape에 대한 공식문서
- GradientTape은 자동으로
context 내에서 실행된 모든 연산을 tape에 기록
한다. 이후, tape.gradient(z, y) 를 호출하면 GradientTape에 포함된 리소스가 해제되면서 y에 대한 도함수를 계산한다.