正常的第一个参数Dense
层也是units
,是该层中神经元/节点的数量。然而,标准 LSTM 单元如下所示:
(这是“的修改版本”了解 LSTM 网络 http://colah.github.io/posts/2015-08-Understanding-LSTMs/")
在 Keras 中,当我创建这样的 LSTM 对象时LSTM(units=N, ...)
,我实际上是在创造吗?N
这些 LSTM 单元?或者是 LSTM 单元内“神经网络”层的大小,即W
是在公式中吗?或者是别的什么?
对于上下文,我正在基于这个示例代码 https://github.com/fchollet/keras/blob/master/examples/stateful_lstm.py.
以下是文档:https://keras.io/layers/recurrent/ https://keras.io/layers/recurrent/
It says:
单位:正整数,输出空间的维数。
这让我认为这是 Keras LSTM“层”对象的输出数量。意味着下一层将有N
输入。这是否意味着确实存在N
LSTM 层中这些 LSTM 单元的数量,或者也许正是如此oneLSTM 单元的运行时间为N
迭代输出N
这些h[t]
价值观,来自,说,h[t-N]
up to h[t]
?
如果它只定义输出的数量,这是否意味着输入仍然可以是,比如说one,或者我们是否必须手动创建滞后输入变量x[t-N]
to x[t]
,每个 LSTM 单元由units=N
争论?
当我写这篇文章时,我突然想到这个论点是什么return_sequences
做。如果设置为True
一切N
输出被向前传递到下一层,而如果设置为False
它只通过了最后一个h[t]
输出到下一层。我对吗?
你可以检查这个问题 https://stackoverflow.com/questions/38714959/understanding-keras-lstms/38737941#38737941了解更多信息,尽管它基于 Keras-1.x API。
基本上,unit
表示 LSTM 中内部单元的维度。因为在 LSTM 中,内部单元的维度(图中的 C_t 和 C_{t-1})、输出掩码(图中的 o_t)和隐藏/输出状态(图中的 h_t)应该具有SAME尺寸,因此您输出的尺寸应该是unit
- 长度也是如此。
And LSTM
在 Keras 中只定义了一个 LSTM 块,其单元为unit
-长度。如果你设置return_sequence=True
,它将返回具有形状的东西:(batch_size, timespan, unit)
. If false
,那么它只返回形状中的最后一个输出(batch_size, unit)
.
至于输入,您应该为每个时间戳提供输入。基本上,形状就像(batch_size, timespan, input_dim)
, where input_dim
可以不同于unit
。如果您只想在第一步提供输入,则只需在其他时间步骤用零填充数据即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)