TensorFlow:简单循环神经网络

9

我使用TensorFlow构建了一些神经网络,例如基本的MLP和卷积神经网络。现在我想转向循环神经网络。然而,我并没有自然语言处理方面的经验。因此,用于RNN的TensorFlow NLP教程对我来说不容易阅读(甚至也不是很有趣)。

基本上,我想先从简单的东西开始,不要用LSTM。

如何在TensorFlow中构建一个简单的循环神经网络,比如Elman网络?

我只能找到GRU或LSTM RNN的TensorFlow示例,大多数是用于NLP。是否有人知道一些TensorFlow的简单循环神经网络教程或示例?

这张图片展示了一个基本的Elman网络,通常被简称为SRN(simple recurrent network):

elman network example

1个回答

3

一种选择是使用位于tensorflow/python/ops/rnn_cell.py中的内置RNNCell。

如果您不想这样做,您可以自己制作RNN。 RNN将通过时间反向传播进行训练。尝试展开固定数量的步骤,例如考虑长度为十的输入序列。然后,您可以编写一个循环来执行网络的每个步骤的所有矩阵乘法。每次您都可以取出上一步的输出并将其与该步骤的输入连接起来。不需要太多代码即可使其正常工作。


我尝试使用RNN Cell构建一些东西,但并不成功。当我提供numpy数组或列表时,我总是遇到raise TypeError("inputs must be a list")TypeError: unhashable type: 'list'。另外,state到底是什么?我认为它是上下文层中最新的向量,但是根据文档,为什么需要一个显式的2D Tensor with shape [batch_size x self.state_size]呢?你能提供一个例子吗? - daniel451
1
是的,状态是最近的上下文向量。通常,您会批处理多个序列。因此,二维张量是批处理中每个序列的状态向量。 - Aaron
看看这个。 如果需要解释,请在那里创建一个问题。 - Rajarshee Mitra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接