Truncated Normal Distribution とNeural Network(ニューラルネットワーク)の初期化(Initialization)
Tensorflowを利用してもらった初めてに、どうしてもニューラルネットワークの初期化を迷っていることが避けない。
実はルールがあります、そしてやり方は簡単し、ご注意のところが薄がって、なんの困りがありませんはずだ。
まずコードの欠片を見せてください!
import tensorflow as tf
def get_conv_weights(w, h, chn_in, chn_out):
dim = [w, h, chn_in, chn_out]
init_op = tf.truncated_normal(dim, mean=0.0, stddev=0.1)
return tf.get_variable(
name='weights',
initializer=init_op) def get_fc_weights(chn_in, chn_out):
dim = [chn_in, chn_out]
init_op = tf.truncated_normal(dim, mean=0.0, stddev=0.1)
return tf.get_variable(
name='weights',
initializer=init_op)
dim = [w, h, chn_in, chn_out]
init_op = tf.truncated_normal(dim, mean=0.0, stddev=0.1)
return tf.get_variable(
name='weights',
initializer=init_op) def get_fc_weights(chn_in, chn_out):
dim = [chn_in, chn_out]
init_op = tf.truncated_normal(dim, mean=0.0, stddev=0.1)
return tf.get_variable(
name='weights',
initializer=init_op)
ここに書いてあるものはパラメーターの初期化です。stddevはその一番重要なセットだ。普通には0.1ー0.2に限定している。この範囲以外のセットはダメだ。
なぜダメだろうか、実際に運転すればすぐ分かるぞ。
とくにsoftmax-cross-entrophy lossとのお使い場合には立派な程度で役に立つ。