TensorFlow:简单的循环神经网络
Posted
技术标签:
【中文标题】TensorFlow:简单的循环神经网络【英文标题】:TensorFlow: simple recurrent neural network 【发布时间】:2016-08-18 06:17:04 【问题描述】:我已经使用 TensorFlow 构建了一些神经网络,例如基本的 MLP 和卷积神经网络。现在我想继续讨论循环神经网络。但是,我在自然语言处理方面没有经验。因此,RNN 的 TensorFlow NLP 教程对我来说并不容易阅读(也不是很有趣)。
基本上我想从简单的东西开始,而不是 LSTM。
如何在 TensorFlow 中构建简单的循环神经网络,例如 Elman 网络?
我只能找到用于 TensorFlow 的 GRU 或 LSTM RNN 示例,主要用于 NLP。有谁知道 TensorFlow 的一些简单的循环神经网络教程或示例?
此图显示了一个基本的 Elman 网络,通常简称为 SRN(简单循环网络):
【问题讨论】:
【参考方案1】:一种选择是使用位于tensorflow/python/ops/rnn_cell.py 的内置RNNCell。
如果您不想这样做,您可以制作自己的 RNN。 RNN 将使用反向传播随着时间的推移进行训练。尝试将网络展开固定数量的步骤,例如考虑长度为 10 的输入序列。然后,您可以在 python 中编写一个循环来为网络的每个步骤执行所有矩阵乘法。每次您都可以获取上一步的输出并将其与该步骤的输入连接起来。完成这项工作不会有太多的代码行。
【讨论】:
我尝试使用 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]
然后(根据文档)?你能举个例子吗?
是的,状态是最近的上下文向量。通常,您会批量处理多个序列。所以二维张量是批次中每个序列的状态向量。
github.com/rajarsheem/playing-with-RNNs/blob/master/… 看看这个。如果您需要解释,请在此处创建问题。以上是关于TensorFlow:简单的循环神经网络的主要内容,如果未能解决你的问题,请参考以下文章
深度学习(08)_RNN-LSTM循环神经网络-03-Tensorflow进阶实现
机器学习与Tensorflow——循环神经网络长短时记忆网络