Tensorflow RNN是否完全实现了Elman网络?

时间:2017-05-08 04:21:22

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

问:是否实施了Tensorflow RNN以输出Elman Network的隐藏状态?

enter image description here enter image description here

cells  = tf.contrib.rnn.BasicRNNCell(4) 
outputs, state = tf.nn.dynamic_rnn(cell=cells, etc...)


我对TF的RNN很陌生,对输出和状态的意义很好奇。 我正在关注斯坦福的张量流教程,但似乎没有详细的解释,所以我在这里问。 经过测试,我认为序列计算后state是隐藏状态,outputs是每个时间步后的隐藏状态数组。

所以我想说清楚。输出和状态只是隐藏的状态向量所以为了完全实现Elman网络,我必须在图像中制作V矩阵并再次进行矩阵乘法。我对么?

1 个答案:

答案 0 :(得分:0)

我相信你问的是中间状态和输出的输出是什么。

根据我的理解,状态将是卷积/序列计算后的中间输出并被隐藏,因此您的理解是正确的方向。

输出可能会因您决定实施网络模型的方式而有所不同,但在一般情况下,它是一个数组,其中已应用任何操作(卷积,序列计算等),之后激活&已应用下采样/池化,以专注于该层的可识别特征。

来自Colah的博客(http://colah.github.io/posts/2015-08-Understanding-LSTMs/):

最后,我们需要决定我们要输出的内容。此输出将基于我们的单元状态,但将是过滤版本。首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分。然后,我们将单元状态通过tanhtanh(将值推到-1-1和11之间)并将其乘以sigmoid门的输出,这样我们只输出我们决定的部分。

对于语言模型示例,由于它只是看到一个主题,它可能想要输出与动词相关的信息,以防接下来会发生什么。例如,它可能输出主语是单数还是复数,以便我们知道动词应该与什么形式共轭,如果接下来的话。

希望这会有所帮助。 谢谢