如何构建一个从输出到下一个输入有大量额外循环的 RNN 模型?

How to build an RNN model with a large extra loop from its output to its next input?

我的目标是在 Keras/TensorFlow 中构建一个 RNN,它由循环单元层(GRU、LSTM 等)以及从网络底部到顶部的循环组成,以添加注意机制或特殊的记忆类型。我不熟悉符号循环,所以首先我尝试按照以下方式构建一个展开的模型:

据我所知,我需要做的是一个具有两个输入张量和两个输出张量的 RNN 层,因为我需要 "route" RNN 的内部 input/output层(绿色)我自己在大循环(蓝色)的同时展开这些连接。

我可以处理使用 concat 层和自定义拆分层 ( https://github.com/keras-team/keras/issues/890 ) 实现展开的大循环,但是使用 RNN 层我 运行 遇到了问题,因为我似乎没有能够使用更多原始层(密集层、激活层等)来模拟它们。在以一种我可以指定单独的张量作为它们的外部输入和内部输入的方式重新实现它们(包括反向传播步骤)之前,是否有更好的方法来做到这一点,可能通过某种方式重用现有代码?

https://github.com/csirmaz/superloop 的项目允许实现具有如此大循环的 RNN。它似乎使用自己的 RNN 层实现来获得两个输入和两个输出。