0

일반화 된 일괄 정규화 함수를 작성하려고합니다. Tensorflow.치수 일괄 정규화

나는 매우 친절한이 article에서 일괄 정규화를 배웁니다.

는 I은 스케일베타 변수의 측정에 문제가 내 케이스 배치 정상화 내가 컨벌루션 층을의 출력으로 여태 경우 각 컨벌루션 층 각각의 활성화에 적용 크기 tersor :

[57,57,96] 

난 올바른 스케일 및 베타는 길쌈 출력 층과 동일한 치수를 가질 것을 필요? 여기

내 기능, 프로그램 작품입니다 만 tf.nn.batch_normalization의 문서에서

def batch_normalization_layer(batch): 
    # Calculate batch mean and variance 
    batch_mean, batch_var = tf.nn.moments(batch, axes=[0, 1, 2]) 

    # Apply the initial batch normalizing transform 
    scale = tf.Variable(tf.ones([batch.get_shape()[1],batch.get_shape()[2],batch.get_shape()[3]])) 
    beta = tf.Variable(tf.zeros([batch.get_shape()[1],batch.get_shape()[2],batch.get_shape()[3]])) 

    normalized_batch = tf.nn.batch_normalization(batch, batch_mean, batch_var, beta, scale, 0.0001) 

    return normalized_batch 

답변

1

맞는지 모르겠어 :

는 평균, 분산은, 오프셋 및 스케일이 모든 예상된다 두 가지 중 하나 여야합니다 도형 :

모든 일반성에서 동일한 크기의 입력 x 인 과 동일한 치수를 가질 수 있습니다이 표준화 된 차원 ('깊이'차원)이 아닌 차원의 경우 x는 es, x는 0으로, 표준화되는 차원은 의 차원 1입니다. 이 경우의 평균 및 분산은 일반적으로 tf.nn.moments (..., keep_dims = True) 의 출력이거나, 추론 중 평균을 실행하는 동안 입니다. '깊이'측정 기준이 입력 텐서 (X)의 최종 치수 인 일반적인 경우

그들은 "깊이"사이즈와 동일한 크기의 일차원 텐서 수있다. 예를 들어 완전히 연결 한 레이어의 일반적인 [배치, 깊이] 레이아웃은 이고 컨볼 루션의 경우 [배치, 높이, 폭, 깊이]입니다. 이 경우의 평균 및 분산은 일반적으로 훈련 중에 tf.nn.moments (..., keep_dims = False)의 출력이되거나 추론 중에 평균을 실행하는 것입니다.

값 (배율 = 1.0 및 오프셋 = 0)을 사용하면 값 None을 제공 할 수도 있습니다.