stateful和recurrent_initializer参数

来源:7-8 文本生成实战之采样生成文本

wxz123

2019-12-28

keras.layers.SimpleRNN(units = rnn_units,
                               stateful = True,
                               recurrent_initializer = 'glorot_uniform',
                               return_sequences = True),

老师keras.layers.SimpleRNN中的statefulrecurrent_initializer参数有什么意义呢?官网的解释没怎么看懂

写回答

1回答

正十七

2020-01-04

keras.layers.SimpleRNNCell中的解释更为详细一些:https://www.tensorflow.org/api_docs/python/tf/keras/layers/SimpleRNNCell?version=stable

我们在讲循环神经网络的时候,会讲当前步状态的计算公式为:

new_s = f(w1*old_s + w2 * x)

其中w1就是循环核,w2就是核。对应到API中,recurrent_initializer就是w1的初始化方法,kernel_initializer就是w2的初始化方法。

然后stateful=true, 就意味着当前batch的输出状态会被当成下一个batch的初始化状态,这个操作一般在文本长度比较长时会比较有用。比如样本A,在batch1中,用了A中的第0-200个词语,在batch2中,要用A中的第200-400个词语。如果语料中有大量的长语句时。这个参数就有用。当然,这还需要batch的顺序不能被打乱。

2
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程