如何构建一个从输出到下一个输入的大额外循环的 RNN 模型?
Posted
技术标签:
【中文标题】如何构建一个从输出到下一个输入的大额外循环的 RNN 模型?【英文标题】:How to build an RNN model with a large extra loop from its output to its next input? 【发布时间】:2018-07-26 07:48:27 【问题描述】:我的目标是在 Keras/TensorFlow 中构建一个 RNN,它由多层循环单元(GRU、LSTM 等)以及从网络底部到顶部的循环组成,以添加注意力机制或特殊的内存类型。我不熟悉符号循环,所以首先我尝试按照以下思路构建展开模型:
据我所知,我需要做的是一个带有两个输入张量和两个输出张量的 RNN 层,因为我需要自己“路由”RNN 层(绿色)的内部输入/输出到在大循环(蓝色)的同时展开这些连接。
我可以处理使用 concat 层和自定义拆分层 (https://github.com/keras-team/keras/issues/890) 来实现展开的大循环,但是对于 RNN 层我遇到了一个问题,因为我似乎无法使用更多来模拟它们原始层(密集、激活等)。在重新实现它们(包括反向传播步骤)之前,我可以指定单独的张量作为它们的外部输入和内部输入,有没有更好的方法来做到这一点,可能通过某种方式重用现有代码?
【问题讨论】:
【参考方案1】:https://github.com/csirmaz/superloop 的项目允许实现具有如此大循环的 RNN。它似乎使用自己的RNN层实现来获得两个输入和两个输出。
【讨论】:
以上是关于如何构建一个从输出到下一个输入的大额外循环的 RNN 模型?的主要内容,如果未能解决你的问题,请参考以下文章