如何在 Keras 中构建自定义 RNN 层?

Mon*_*naj 7 deep-learning keras recurrent-neural-network

我正在尝试在 Keras 中实现自定义 RNN 层,并尝试遵循此链接中的说明,该链接基本上指示如何从现有 RNN 类继承。然而,我的公式中隐藏层的更新方程有点不同:h(t) = tanh(W.x + U.h(t-1) + V.r(t) + b)我有点困惑。在此方程中,r(t) = f(x, p(t))是 的函数x,即随时间分布的固定输入,也是 的函数p(t) = O(t-1).alpha + p(t-1),其中O(t)是每个 RNN 单元的 Softmax 输出。

我认为super(customRNN, self).step在调用继承的step函数后,标准h(t)应该被我的定义覆盖h(t)。但是我不确定如何修改statesandget_constants函数,以及是否需要修改 Keras 中的循环和 simpleRNN 类的任何其他部分。我的直觉是,该get_constants函数仅将丢失矩阵作为额外状态返回到阶跃函数,因此我猜测应该为我的方程中的丢失矩阵添加至少一个状态V

我最近刚刚开始使用 Keras,但找不到很多关于自定义 Keras 层定义的参考。抱歉,如果我的问题因大量参数而有点不知所措,我只是想确保我没有遗漏任何要点。谢谢!