9

我用TensorFlow构建了一些神经网络,比如基本MLP和卷积神经网络。现在我想继续学习递归神经网络。然而,我在自然语言处理方面没有经验。因此,针对RNN的TensorFlow NLP教程对我来说并不容易阅读(也不是很有趣)。

基本上,我想从简单的东西开始,而不是LSTM。

如何在TensorFlow中构建一个简单的递归神经网络,如Elman网络?

我只能找到TensorFlow的GRU或LSTM RNN示例,主要是针对NLP的。有人知道TensorFlow的一些简单递归神经网络教程或示例吗?

此图显示了一个基本的Elman网络,通常简称为SRN(简单递归网络):

elman网络示例

1答案1

重置为默认值

一种选择是使用位于张量流/python/ops/rnn-cell.py.

如果您不想这样做,可以创建自己的RNN。RNN将通过时间反向传播进行训练。尝试将网络展开固定数量的步骤,例如考虑长度为10的输入序列。然后你可以用python编写一个循环,为网络的每一步进行所有矩阵乘法。每次你都可以从上一步中获得输出,并将其与该步的输入连接起来。这将不会有太多的代码行来实现。

  • 我曾尝试用RNN Cell构建一些东西,但没有真正成功。我总是以raise TypeError(“输入必须是列表”)TypeError:不可损坏的类型:“list”当我提供numpy数组或列表时。此外,到底什么是状态为了?我认为它是上下文层之外的最新向量,但为什么需要显式的带形状的2D张量[batch_size x self.state_size]然后(根据文件)?你能举个例子吗? 评论 2016年4月27日5:56
  • 1
    是的,状态是最近的上下文向量。通常,您在一批中一起处理多个序列。因此,2d张量是批次中每个序列的状态向量。
    – 亚伦
    评论 2016年4月27日6:28
  • github.com/rajarsheem/playing-with-RNNs/blob/master/…看看这个。如果你需要解释,在那里创建一个问题。 评论 2016年6月17日11:04

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问自己的问题.