【问题标题】:Bidirectional RNN cells - shared or not?双向 RNN 单元 - 是否共享?
【发布时间】:2019-01-13 19:36:04
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    应该是独立的。见expected_hidden_sizehere

    【讨论】:

      【解决方案2】:

      他们应该独立学习,因为他们学习不同的模式,除非你有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 中,相反方向是一个副本,其权重与原始方向无关。

      【讨论】:

      • 不就是一个浅拷贝吗?而图层似乎是一个复合对象。
      【解决方案3】:

      就我个人而言,我没有经常看到前向和后向传递使用相同的权重集,而且我发现对前向和后向传播使用相同的权重集反直觉。

      因为双向 RNN 的想法是为每个输入提供两个隐藏状态,提供有关当前输入之前应该(或现在)以及当前输入之后应该(或现在)的信息。如果您使用相同的共享权重集,则输入不能有这样两种不同的状态。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-20
        • 2012-10-25
        相关资源
        最近更新 更多