Sub*_*rat 47 neural-network lstm tensorflow recurrent-neural-network
在MNIST LSTM示例中,我不明白"隐藏层"的含义.是否随着时间的推移代表展开的RNN时会形成虚构层?
为什么num_units = 128在大多数情况下?
我知道我应该详细阅读colah的博客来理解这一点,但在此之前,我只是希望得到一些代码来处理我所拥有的时间序列数据.
nob*_*bar 39
隐藏单元的数量直接表示神经网络的学习能力 - 它反映了学习参数的数量.该值128可能是任意或经验选择的.您可以通过实验改变值并重新运行程序,看看它是如何影响训练精度(你可以得到更好的超过90%的测试精度很多更少的隐藏单元).使用更多单位使得更有可能完美地记住完整的训练集(尽管需要更长时间,并且存在过度拟合的风险).
要理解的关键是,在着名的Colah博客文章中有点微妙(发现"每条线都带有一个完整的向量"),这X是一个数据数组(现在通常被称为张量) - 它并不意味着一个标值.例如,在显示tanh函数的情况下,意味着暗示函数在整个数组中广播(隐式for循环) - 而不是每个时间步骤简单地执行一次.
因此,隐藏单元表示网络内的有形存储,其主要表现在权重阵列的大小中.而且因为LSTM实际上确实有一些与学习模型参数分开的内部存储,它必须知道有多少单位 - 最终需要与权重的大小一致.在最简单的情况下,RNN没有内部存储 - 因此它甚至不需要事先知道它应用了多少"隐藏单元".
旁注:这种表示法在统计学和机器学习中很常见,而其他领域使用通用公式处理大批量数据(3D图形是另一个例子).对于那些希望for明确地看到他们的循环写出来的人来说,需要一些习惯.
Oli*_*rot 28
这个论点n_hidden的BasicLSTMCell是LSTM隐藏单元的数量.
正如你所说,你应该真正阅读Colah的博客文章,了解LSTM,但这里有点提醒.
如果你有一个输入x形状的[T, 10],你将喂LSTM与值序列从t=0至t=T-1,各尺寸的10.
在每个时间步,您将输入与形状矩阵相乘[10, n_hidden],并得到一个n_hidden向量.
你的LSTM在每个时间步都获得t:
h_{t-1},大小n_hidden(at t=0,之前的状态是[0., 0., ...])n_hiddenh_t的大小状态n_hidden如果您只想让代码正常工作,请继续使用n_hidden = 128,您就可以了.
这个术语num_units或num_hidden_units有时nhid在实现中使用变量名称表示,意味着 LSTM 单元的输入是维度向量nhid(或者对于批处理实现,它是形状batch_sizex的矩阵nhid)。因此,输出(来自 LSTM 单元)也将具有相同的维度,因为 RNN/LSTM/GRU 单元不会改变输入向量或矩阵的维度。
如前所述,该术语是从前馈神经网络 (FFN) 文献中借用的,在 RNN 的上下文中使用时会引起混淆。但是,这个想法是,即使是 RNN 也可以在每个时间步被视为FFN。在这个视图中,隐藏层确实包含num_hidden如下图所示的单元:
资料来源:了解 LSTM
更具体地说,在下面的示例中,num_hidden_unitsornhid将是3,因为隐藏状态(中间层)的大小是一个3D 向量。
由于我在合并来自不同来源的信息时遇到一些问题,因此创建了下图,该图显示了博客文章(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)和(https://jasdeep06.github.io/posts/Understanding-LSTM-in-Tensorflow-MNIST/),我认为图形很有帮助,但在解释number_units时出错。
几个LSTM单元形成一个LSTM层。如下图所示。由于您主要处理的是非常广泛的数据,因此不可能将所有内容都整合到模型中。因此,数据被分成小批,然后依次处理,直到读入包含最后一部分的批。在图的下部,您可以看到输入(深灰色),在该输入中读取了批从批次1到批次batch_size的一个接一个。上面的LSTM单元1到LSTM单元time_step的单元代表所描述的LSTM模型的单元(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)。像元数等于固定时间步数。例如,如果您使用总共150个字符的文本序列,则可以将其分为3(batch_size),并且每批的长度为50(time_steps的数目,因此是LSTM单元的数目)。如果随后对每个字符进行一次编码,则每个元素(输入的深灰色框)将代表一个向量,该向量具有词汇表的长度(特征数量)。这些向量将流入各自细胞中的神经元网络(细胞中的绿色元素),并将其尺寸更改为隐藏单元数(number_units)的长度。)。因此,输入具有维度(batch_size x time_step x功能)。长时存储器(单元状态)和短时存储器(隐藏状态)具有相同的尺寸(batch_size x number_units)。由细胞产生的浅灰色块具有不同的维数,因为神经网络(绿色元素)中的转换是借助隐藏单位(batch_size x time_step x number_units)进行的。可以从任何单元返回输出,但是大多数情况下只有最后一个块(黑色边框)中的信息才是相关的(并非在所有问题中都是如此),因为它包含了先前时间步长中的所有信息。
| 归档时间: |
|
| 查看次数: |
30044 次 |
| 最近记录: |