And*_*sen 38 neural-network lstm keras tensorflow
普通Dense
层中的第一个参数也是units
,并且是该层中的神经元/节点的数量.然而,标准LSTM单元如下所示:
(这是" 理解LSTM网络 " 的重写版本)
在Keras,当我创建这样的LSTM对象LSTM(units=N, ...)
时,我实际上是在创建N
这些LSTM单元吗?或者它是LSTM单元内"神经网络"层的大小,即W
公式中的?或者是别的什么?
对于上下文,我正在基于此示例代码工作.
以下是文档:https://keras.io/layers/recurrent/
它说:
units:正整数,输出空间的维数.
这让我觉得它是Keras LSTM"图层"对象的输出数量.意味着下一层将有N
输入.这是否意味着N
LSTM层中实际存在这些LSTM单元,或者可能只运行一个 LSTM单元用于N
迭代输出N
这些h[t]
值,例如,从h[t-N]
多达h[t]
?
如果只定义了输出的数量,这是否意味着输入尚可,说,只是一个,还是我们必须手动创建滞后输入变量x[t-N]
来x[t]
,一个由定义的每个LSTM单位units=N
的说法?
在我写这篇文章的时候,我发现了论证的return_sequences
作用.如果设置为True
所有N
输出都传递到下一层,而如果设置为False
它,则只将最后一个h[t]
输出传递给下一层.我对吗?
Van*_*Van 26
您可以查看此问题以获取更多信息,尽管它基于Keras-1.x API.
基本上,这unit
意味着LSTM中内部单元的尺寸.因为在LSTM中,内部单元的维度(图中的C_t和C_ {t-1}),输出掩码(图中的o_t)和隐藏/输出状态(图中的h_t)应该具有相同的维度,因此您输出的维度也应该是 unit
-length.
而LSTM
在Keras只有准确定义一个LSTM块,其细胞是unit
-长度.如果你设置return_sequence=True
,它将返回一些形状:(batch_size, timespan, unit)
.如果false
,那么它只返回形状的最后一个输出(batch_size, unit)
.
至于输入,您应该为每个时间戳提供输入.基本上,形状就像(batch_size, timespan, input_dim)
,在哪里input_dim
可以不同于unit
.如果您只想在第一步提供输入,则可以在其他时间步骤使用零填充数据.
Keras 循环神经网络的“单位”参数的正确直观解释是,units=1
如果您获得教科书中描述的 RNN,并且units=n
您获得一个由此n
类 RNN的独立副本组成的层- 它们将具有相同的结构,但是由于它们将使用不同的权重进行初始化,因此它们会计算出不同的东西。
或者,您可以认为在 LSTM 中,units=1
键值 (f, i, C, h) 是标量;并且units=n
它们将是 length 的向量n
。
这是否意味着在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)
Run Code Online (Sandbox Code Playgroud)
如果计划使用1个单元创建简单的LSTM层,则将以以下内容结束:
这就是您的模型。
N=1
model = Sequential()
model.add(LSTM(N))
Run Code Online (Sandbox Code Playgroud)
小智 5
“直观地”就像一个具有 100 个暗淡 (Dense(100)) 的密集层将有 100 个神经元。同样,LSTM(100) 将是由 100 个“智能神经元”组成的层,其中每个神经元都是您提到的图形,输出将是 100 维向量
归档时间: |
|
查看次数: |
13015 次 |
最近记录: |