본 포스팅은 다음 과정을 정리 한 글입니다.
Custom Models, Layers, and Loss Functions with TensorFlow
www.coursera.org/specializations/tensorflow-advanced-techniques
지난 시간 리뷰
안녕하세요 지난 시간에는 custom layer를 class로 만드는 방법에 대해서 배웠습니다.
바로 아래 코드가 그 예제였는데요!
MNIST 기본 모델에서 tf.keras.layers.Dense를 SimpleDense로 구현하고 activation='relu'를 Lambda layer에 구현된 my_relu함수를 넣어서 모델을 구현하였습니다.
아래 class 작성하는 방법도 기억하시죠?!
꼭 반드시 init, build, call 함수를 작성하셔야 합니다!!
이번에는 lambda layer로 구현했던 activation을 custom layer에 통합시키는 방법에 대해 알아보려고 합니다.
Layer의 기본 클래스의 상속 관리를 포함하여 레이어의 초기 설정을 수행하는 것이 init method 작업입니다. activation기능을 사용하려면 여기에서 설정을 해야 합니다.
설정은 간단합니다. 일단 init함수의 매개변수로 activation을 추가하면 됩니다.
activation함수는 함수의 이름이 포함된 문자열이거나 활성화 개체의 인스턴스일 수 있습니다.
매개변수를 받지 못하면 activation기능을 사용하지 않도록기본 값을 none으로 설정하였습니다.
그리고 그 activation을 self.activation에 대입하는데 tf.keras.activations.get이라는 api를 호출하고 거기에 activation을 인자로 넣어줍니다.
실제 Computation이 일어날 때 기존에 tf.matmul(inputs, self.w) + self.b만 리턴하던 것을 그 값을 그대로 self.activation의 인자로 넣어줍니다.
이제 모델 아키텍처를 다시 살펴봅시다.
우리는 아래와 같이 SimpleDense의 매개변수로 'relu' 이름을 넣어 RELU함수에 의해 활성화되는 128개의 뉴런이 있는 Dense Layer를 구현하였습니다.
이번 시간에는 Custom Layer에 activation function을 구현하는 방법에 대해 알아보았습니다.
한번 직접 구현해 보시고 학습도 해보시기 바랍니다.
감사합니다.
댓글