사용이유: 훈련시에 internal covariate shift
훈련모드: 레이어가 미니배치 단위로 mean, std을 현재 미니배치단위마다 얻어와 각 채널별로 정규화해준다.
추론모드: 추론모드는 2가지 방법으로 사용될 수 있다.
- model.evaluate() 또는 prdict
- layer, model이 training=False인 경우
추론모드에서는 각 훈련모드에서 얻어진 평균과 std을 moving averrage하여 번환한다.
- moving_mean = moving_mean * momentum + mean(batch) * (1 - momentum)
- moving_var = moving_var * momentum + var(batch) * (1 - momentum)
ma * (batch - self.moving_mean) / sqrt(self.moving_var + epsilon) + beta.
따라서, 추론모드는 이미 훈련모드에서 훈련된 상황에서만 사용할 수 있고, 훈련데이터가 추론데이터가 유사한 상황에서 사용될 수 있다. 따라서, 훈련모드와 추론모드에서 둘다 BN(Batch normalization)이 시행된다.
self.moving_mean_initializer = initializers.get(moving_mean_initializer)
self.moving_variance_initializer = initializers.get(moving_variance_initializer)
self.moving_mean = self.add_weight(
name='moving_mean',
shape=param_shape,
dtype=self._param_dtype,
initializer=self.moving_mean_initializer,
synchronization=tf_variables.VariableSynchronization.ON_READ,
trainable=False,
aggregation=tf_variables.VariableAggregation.MEAN,
experimental_autocast=False)
self.moving_variance = self.add_weight(
name='moving_variance',
shape=param_shape,
dtype=self._param_dtype,
initializer=self.moving_variance_initializer,
synchronization=tf_variables.VariableSynchronization.ON_READ,
trainable=False,
aggregation=tf_variables.VariableAggregation.MEAN,
experimental_autocast=False)
output, mean, variance = control_flow_util.smart_cond(training, train_op, _fused_batch_norm_inference)
def mean_update():
"""Update self.moving_mean with the most recent data point."""
if use_fused_avg_updates:
return self._assign_new_value(self.moving_mean, mean)
else:
return self._assign_moving_average(self.moving_mean, mean, momentum,
input_batch_size)
reference: https://keras.io/api/layers/normalization_layers/batch_normalization/
반응형
'Best Paper review > Others' 카테고리의 다른 글
자연어처리의 고전 BERT, 5분 컷 이해 (0) | 2021.10.25 |
---|---|
ICLR 2018: FEW-SHOT LEARNING WITH Graph 풀이 (0) | 2021.06.22 |
2019 best paper: Ordered Neurons 해석 (0) | 2021.06.21 |
ICLR2018: Graph Attention networks (GATs) (0) | 2021.06.17 |
Transformer (트랜스포머) 해석 (0) | 2021.05.13 |