2017-07-03 24 views
1

現在、テンソルフローでCNNを構築しています。私はHeを使ってウェイト行列を初期化しています。しかし、私は自分のバイアス値をどのように初期化するべきかは不明です。私はReLUを各畳み込み層の間の活性化関数として使用しています。バイアス値を初期化するための標準的な方法はありますか?バイアスを初期化ニューラルネットワークの初期バイアス値

# Define approximate xavier weight initialization (with RelU correction described by He) 
def xavier_over_two(shape): 
    std = np.sqrt(shape[0] * shape[1] * shape[2]) 
    return tf.random_normal(shape, stddev=std) 

def bias_init(shape): 
    return #??? 

答えて

3

バイアスをゼロに初期化することは可能ですが、アシンメトリの破損は重み内の小さな乱数 によって提供されるためです。 ReLUの非線形性については、一部の はすべてのバイアスの0.01などの小さな定数値を使用することを好みます。 これにより、すべてのReLUユニットが最初に起動し、したがって が確実に取得され、しかし、これが一貫した改善をもたらす場合は、 が明らかではありません(実際には、結果が悪化することを示すために と思われます)。 0バイアス初期化を使用するのが一般的です。

ソース:私が探していたまさにhttp://cs231n.github.io/neural-networks-2/

+0

ありがとう! –

関連する問題