[Tensorflow] 2.8 Batch Normalization

Batch Normalization


  model에 data가 input될 때 각 레이어에 들어가는 input데이터들을 살펴보자


  학습이 시작될 때 Normalization과정을 거치고 넣는다고해도 layer2의 input으로 들어가는 data는 그림에서 보이듯이 정규화된 데이터에서 점점 멀어지게되는 nternal Convariate Shift 현상이 발생하고 이를 보완하기 위해 Batch Normalization을 해야한다.

Batch Normalization을 통하면 아래의 수식을 통해 data의 batch들의 분산과 평균이 항상 일정하게 유지된다.


x hat을 다음 layer의 input data로 넣어주면 된다. 

  • 코드


1
2
def batch_norm():
    return tf.keras.layers.BatchNormalization
cs

그리고 keras model을 구성하는 코드 부분에서는 다음내용을 추가해준다

1
2
self.model.add(batch_norm())
self.model.add(relu())
cs



dropout 사용시에는 relu()를 먼저 add 한 후 사용했는데 batch_norm()은 먼저 사용하는 이유 *
보통으로 사용하는 순서로는 다음이 있다.

  1. layer
  2. norm
  3. activation
그 외에 아래와 같은 순서도 사용하지만 위의 순서가 더 보편적으로 사용됨을 알아두자 
  1. norm
  2. activation
  3. layer




No comments:

Powered by Blogger.