cells = tf.contrib.rnn.BasicRNNCell(4)
outputs, state = tf.nn.dynamic_rnn(cell=cells, etc...)
我对TF的RNN很陌生,对输出和状态的意义很好奇。
我正在关注斯坦福的张量流教程,但似乎没有详细的解释,所以我在这里问。
经过测试,我认为序列计算后state
是隐藏状态,outputs
是每个时间步后的隐藏状态数组。
所以我想说清楚。输出和状态只是隐藏的状态向量所以为了完全实现Elman网络,我必须在图像中制作V矩阵并再次进行矩阵乘法。我对么?
答案 0 :(得分:0)
我相信你问的是中间状态和输出的输出是什么。
根据我的理解,状态将是卷积/序列计算后的中间输出并被隐藏,因此您的理解是正确的方向。
输出可能会因您决定实施网络模型的方式而有所不同,但在一般情况下,它是一个数组,其中已应用任何操作(卷积,序列计算等),之后激活&已应用下采样/池化,以专注于该层的可识别特征。
来自Colah的博客(http://colah.github.io/posts/2015-08-Understanding-LSTMs/):
最后,我们需要决定我们要输出的内容。此输出将基于我们的单元状态,但将是过滤版本。首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分。然后,我们将单元状态通过tanhtanh(将值推到-1-1和11之间)并将其乘以sigmoid门的输出,这样我们只输出我们决定的部分。
对于语言模型示例,由于它只是看到一个主题,它可能想要输出与动词相关的信息,以防接下来会发生什么。例如,它可能输出主语是单数还是复数,以便我们知道动词应该与什么形式共轭,如果接下来的话。
希望这会有所帮助。 谢谢