正常 Dense
层中的第一个参数也是 units
,并且是该层中神经元/节点的数量。然而,标准 LSTM 单元如下所示:
https://i.stack.imgur.com/aTDpS.png
(这是“Understanding LSTM Networks”的修改版本)
在 Keras 中,当我创建像 LSTM(units=N, ...)
这样的 LSTM 对象时,我实际上是在创建这些 LSTM 单元的 N
吗?还是 LSTM 单元内的“神经网络”层的大小,即公式中的 W
?或者是别的什么?
对于上下文,我基于 this example code 工作。
以下是文档:https://keras.io/layers/recurrent/
它说:
单位:正整数,输出空间的维度。
这让我觉得这是 Keras LSTM“层”对象的输出数量。这意味着下一层将有 N
个输入。这是否意味着在 LSTM 层中实际存在 N
个这些 LSTM 单元,或者可能恰好 一个 LSTM 单元运行 N
次迭代,输出这些 h[t]
值中的 N
个,从 h[t-N]
到 h[t]
?
如果它只定义输出的数量,这是否意味着输入仍然可以,比如说,只是 一个,还是我们必须手动创建滞后输入变量 x[t-N]
到 x[t]
,一个用于units=N
参数定义的每个 LSTM 单元?
在我写这篇文章时,我想到了参数 return_sequences
的作用。如果设置为 True
,则所有 N
输出都将传递到下一层,而如果设置为 False
,它只会将最后一个 h[t]
输出传递到下一层。我对吗?
您可以查看 this question 以获取更多信息,尽管它基于 Keras-1.x API。
基本上,unit
表示 LSTM 中内部单元的维度。因为在 LSTM 中,内部单元的维度(图中的 C_t 和 C_{t-1})、输出掩码(图中的 o_t)和隐藏/输出状态(图中的 h_t)应该具有 SAME< /strong> 维度,因此您输出的维度也应该是 unit
-length。
而 Keras 中的 LSTM
只定义了一个 LSTM 块,其单元的长度为 unit
。如果您设置 return_sequence=True
,它将返回形状为 (batch_size, timespan, unit)
的东西。如果是 false
,那么它只返回形状 (batch_size, unit)
中的最后一个输出。
至于输入,您应该为每个时间戳提供输入。基本上,形状类似于 (batch_size, timespan, input_dim)
,其中 input_dim
可以不同于 unit
。如果您只想在第一步提供输入,您可以简单地在其他时间步用零填充您的数据。
这是否意味着在 LSTM 层中实际上存在 N 个这些 LSTM 单元,或者可能恰好一个 LSTM 单元运行 N 次迭代,输出这些 h[t] 值中的 N 个,例如从 h[tN] 到 h [t]?
首先是真的。在那个 Keras LSTM 层中有 N 个 LSTM 单元或单元。
keras.layers.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0, implementation=1, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False)
https://i.stack.imgur.com/xLZCK.png
N=1
model = Sequential()
model.add(LSTM(N))
https://i.stack.imgur.com/PQs02.png
one-to-one
模型中使用 lstm?
N
是蓝色单元格的数量吗?
(batch size, time step, features)
的 (2,1,24)
,那么这将只有 1 个蓝色单元格。
“LSTM 链”有多少个实例
对 Keras 循环神经网络的“单位”参数的正确直观解释是,使用 units=1
,您将获得教科书中描述的 RNN,而使用 units=n
,您将获得一个包含 n
个此类 RNN 的独立副本的层- 它们将具有相同的结构,但由于它们将使用不同的权重进行初始化,它们将计算出不同的东西。
或者,您可以考虑在具有 units=1
的 LSTM 中,键值 (f, i, C, h) 是标量;并且使用 units=n
,它们将是长度为 n
的向量。
“直观地”就像一个有 100 个暗淡的密集层 (Dense(100)) 将有 100 个神经元。同样,LSTM(100) 将是一层 100 个“智能神经元”,其中每个神经元都是您提到的图形,输出将是 100 维的向量
不定期副业成功案例分享
unit
表示每个时间步长 LSTM 单元输出的向量的大小。但是,Keras 怎么知道这些 LSTM 单元中有多少要使用 OR 来训练数据呢?我的意思是,很容易找出不。输入所需的 LSTM 单元数(在timespan
中指定),但是,如何找出编号。输出中需要多少个 LSTM 单元?