普通Dense
图层中的第一个参数也是units
,是该图层中神经元/节点的数量。然而,标准LSTM单元如下所示:
(这是“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单元,或者可能是{em>一个 LSTM单元运行N
迭代输出N
这些h[t]
值,例如h[t-N]
到h[t]
?
如果它只定义输出的数量,这是否意味着输入仍然可以是 one ,或者我们是否必须手动创建滞后的输入变量x[t-N]
到{ {1}},由x[t]
参数定义的每个LSTM单元一个?
当我写这篇文章时,我发现了units=N
论证的内容。如果设置为return_sequences
,则所有True
输出都会传递到下一个图层,而如果设置为N
,则只会将最后False
个输出传递到下一个图层。我是对的吗?
答案 0 :(得分:21)
您可以查看this question以获取更多信息,但它基于Keras-1.x API。
基本上,unit
表示LSTM中内部单元的维度。因为在LSTM中,内部单元的维度(图中的C_t和C_ {t-1}),输出掩码(图中的o_t)和隐藏/输出状态(图中的h_t)应该具有 SAME < / strong>维度,因此输出的维度应该是unit
- 长度。
Keras中的LSTM
只定义了一个LSTM块,其单元格为unit
- 长度。如果您设置return_sequence=True
,它将返回形状为(batch_size, timespan, unit)
的内容。如果false
,则它只返回形状(batch_size, unit)
中的最后一个输出。
对于输入,您应该为每个时间戳提供输入。基本上,形状类似于(batch_size, timespan, input_dim)
,其中input_dim
可以与unit
不同。如果您只想在第一步提供输入,则可以在其他时间步骤使用零填充数据。
答案 1 :(得分:2)
这是否意味着在LSTM层中实际上存在N个LSTM单元,或者是说正好运行一个LSTM单元进行N次迭代,从例如h [tN]输出这些h [t]个值中的N个高达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)
如果计划使用1个单元创建简单的LSTM层,则将以以下内容结束: 这就是您的模型。
N=1
model = Sequential()
model.add(LSTM(N))
答案 2 :(得分:0)
对于Keras递归神经网络'units'参数的正确直观的解释是,使用units=1
您将获得教科书中所述的RNN,而使用units=n
您将获得一个包含{ {1}}此类RNN的独立副本-它们具有相同的结构,但是由于它们将使用不同的权重进行初始化,因此它们将计算出不同的值。
或者,您可以考虑在带有n
的LSTM中,键值(f,i,C,h)是标量;并以units=1
为长度units=n
的向量。
答案 3 :(得分:0)
“直观地”就像一个具有100个暗淡(Dense(100))的密集层将具有100个神经元。同样,LSTM(100)将是100个“智能神经元”的一层,其中每个神经元都是您提到的图形,输出将是100维的向量