关于初始化的问题

来源:8-19 计算图构建-rnn结构实现、损失函数与训练算子实现

wxz123

2019-05-28

scale = 1.0 / math.sqrt(hps.num_embedding_nodes + hps.num_lstm_nodes[-1]) / 3.0
lstm_init = tf.random_uniform_initializer(-scale, scale)
with tf.variable_scope(‘lstm_nn’, initializer=lstm_init):
cells = []
for i in range(hps.num_lstm_layers):
cell = create_rnn_cell(hps.num_lstm_nodes[i], hps.cell_type)
cell = dropout(cell, keep_prob)
cells.append(cell)
cell = tf.contrib.rnn.MultiRNNCell(cells)

第一行中scale = 1.0 / math.sqrt(hps.num_embedding_nodes + hps.num_lstm_nodes[-1]) / 3.0 的这个 3.0是任何情况下进行初始化时一个固定的常数,还是它有什么具体的含义(不同的情况变成不同的值吗)

写回答

1回答

正十七

2019-06-09

同学你好,很细心你能发现这个问题,这里的initializer的实现其实我是想实现glorot或者he initializer。但是我没有实现对,公式应该是 sqrt(6/(fan_in + fan_out)), 或者可以使用tf.glorot_uniform_initializer.

这里的3.0没有具体意义哈。

0
1
wxz123
非常感谢!
2019-07-06
共1条回复

深度学习之神经网络(CNN/RNN/GAN)算法原理+实战

深度学习算法工程师必学,深入理解深度学习核心算法CNN RNN GAN

2617 学习 · 935 问题

查看课程