2016-04-25 138 views
5

我已经用TensorFlow构建了一些神经网络,就像基本的MLP和卷积神经网络一样。现在我想转向循环神经网络。但是,我在自然语言处理方面没有经验。因此,针对RNN的TensorFlow NLP教程对我来说不容易阅读(并且也不是很有趣)。TensorFlow:简单循环神经网络

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

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

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

此图显示了一个基本的Elman神经网络,这是常常被简称SRN(简单循环网络):

elman network example

回答

1

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

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

+0

我试图建立与RNN细胞的东西,但我没有真正成功。当我提供一个numpy数组或列表时,我总是以'raise TypeError(“输入必须是一个列表”)或'TypeError:unhashable type:'list''结束。另外,“状态”究竟是什么?我认为这是上下文层中最新的矢量,但为什么这需要一个明确的'2D张量与形状[batch_size x self.state_size]'然后(根据文档)?你能举一个例子吗? – daniel451

+1

是的,国家是最近的情境向量。通常你一起处理多个序列。所以二维张量是批次中每个序列的状态向量。 – Aaron

+0

https://github.com/rajarsheem/playing-with-RNNs/blob/master/int_seq.ipynb 看看这个。如果您需要解释,请在那里创建问题。 –