深度学习模型权重初始化问题

时间:2019-05-05 23:20:52

标签: optimization deep-learning initialization

我正在尝试在TensorFlow中创建一个模型。但是权重初始化似乎是错误的,但我不明白为什么。因此,我的模型有一个以Sigmoid作为激活函数的隐藏层,而输出层使用softmax。我也使用Xavier。因此,要初始化权重,我使用:

hidden_layer = tf.Variable(tf.random_normal([input_size, hid_size], stddev=0.01)) * np.sqrt(1./input_size)

output_layer = tf.Variable(tf.random_normal([hid_size, output_size], stddev=0.01)) * np.sqrt(1./hid_size)

给出标准偏差。

您看到有什么问题吗?

2 个答案:

答案 0 :(得分:0)

tensorflow将声明处理为图形,因此实际上没有像  * np.sqrt(1./input_size)

您可以删除尾部* np.sqrt(1./input_size)并添加新行

inputsqrt = tf.placeholder(tf.float) 

hidden = hidden_layer*inputsqrt

与输出相同的句柄

答案 1 :(得分:0)

如果您使用的是Xavier,则应考虑使用Xavier初始化程序,有关文档,请参见https://www.programiz.com/python-programming/methods/built-in/slice


hidden_layer  = tf.get_variable("w1", shape=[input_size, hid_size], initializer=tf.contrib.layers.xavier_initializer())

output_layer = tf.get_variable("w2", shape=[hid_size, output_size], initializer=tf.contrib.layers.xavier_initializer())