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
中的stateful
和recurrent_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的顺序不能被打乱。
20
相似问题