双向RNN单元-是否共享?

时间:2018-08-06 19:29:48

标签: tensorflow neural-network keras pytorch recurrent-neural-network

我应该使用相同的权重来计算双向RNN中的正向和反向传递,还是应该独立学习这些权重?

3 个答案:

答案 0 :(得分:1)

应该独立。请参阅expected_hidden_size might be not yet supported

答案 1 :(得分:1)

除非您有palindromes,否则他们应该独立学习,因为他们学习不同的模式。实际上,这是Keras的Bidirectional包装器中的默认设置:

self.forward_layer = copy.copy(layer)
config = layer.get_config()
config['go_backwards'] = not config['go_backwards']
self.backward_layer = layer.__class__.from_config(config)

在上面的source code中,相反的方向是副本,其权重与原始方向无关。

答案 2 :(得分:1)

就个人而言,我没有见过经常使用相同的权重集来进行正向和反向传递,而我发现直观地使用相同的权重集可用于正向和反向传递计数器。

因为双向RNN的想法是每个输入都有两个隐藏状态,从而给出有关当前输入之前(或应该)以及当前输入之后(或应该)的信息。如果您使用相同的共享权重集,那么输入就不能有两种不同的状态。