0

一般化されたバッチ正規化関数をTensorflowに構築しようとしています。バッチ正規化の次元

私は非常に親切なこのarticleのバッチ正規化を学びます。

Iはスケールベータ変数の大きさに問題がある:私の場合のバッチにおける正規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

ある場合、私は知らない。

、分散を意味オフセットとスケールのすべてに期待されています2つのうちの1つである 図形:

すべての一般性において、それらは同じxxxと同じ次元を持つことができます。で規格化されていない寸法( '深さ'寸法)でない寸法、および標準化されている の寸法1に対して、xとしてesを指定します。この場合の平均および分散は、一般に、学習中のtf.nn.moments(...、keep_dims = True) の出力、または推論中のその平均の実行である。 「深さ」寸法が 入力テンソルXの最後の次元であり、それらは「深さ」寸法と同じ大きさ の一次元テンソルであってもよい 共通場合

。これは、完全に接続されたレイヤーの[[バッチ、デプス]レイアウトの一般的な例と、畳み込みの[バッチ、高さ、 の幅と深さ]の場合です。この場合の平均および分散は、 トレーニング中のtf.nn.moments(...、keep_dims = False)の出力、または推論中のその平均の実行であることが通常はあります。

値(スケール= 1.0およびオフセット= 0)を使用すると、値Noneを指定することもできます。

関連する問題