在Keras中,当我用N个单位创建有状态的LSTM层时,我到底要配置什么?
keras
lstm
neural-network
tensorflow
9
0

正常Dense层中的第一个参数也是units ,是该层中神经元/节点的数量。但是,标准的LSTM单位如下所示:

在此处输入图片说明

(这是“ 了解LSTM网络 ”的修订版)

在Keras中,当我创建一个LSTM对象(例如LSTM(units=N, ...) ,实际上是在创建N个这些LSTM单元吗?还是LSTM单位内的“神经网络”层的大小,即公式中的W ?或者是别的什么?

对于上下文,我基于此示例代码进行工作

以下是文档: https : //keras.io/layers/recurrent/

它说:

单位:正整数,输出空间的维数。

这让我认为这是Keras LSTM“层”对象的输出数量。意味着下一层将具有N输入。是否意味着有实际存在N在LSTM层这些LSTM单元,或也许这恰好一个 LSTM单元被运行N迭代输出N这些的h[t]值,从,比如说, h[tN]高达h[t]

如果仅定义输出数量,是否意味着输入仍然只能是一个 ,或者我们是否必须手动创建滞后的输入变量x[tN]x[t] ,所以对于每个LSTM单位定义一个units=N参数?

在撰写本文时,我想到了return_sequences参数的作用。如果设置为True所有N输出都将传递到下一层,而如果将其设置为False则仅将最后的h[t]输出传递到下一层。我对吗?

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

尽管它基于Keras-1.x API,但您可以检查此问题以获取更多信息。

基本上, unit是指LSTM中内部unit的尺寸。因为在LSTM中,内部单元的尺寸(图中的C_t和C_ {t-1}),输出掩码(图中的o_t)和隐藏/输出状态(图中的h_t)应具有SAME尺寸,因此您输出的尺寸也应为unit长度。

LSTM中的LSTM仅定义一个LSTM块,其unit长度为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) 

如果计划使用1个单元创建简单的LSTM层,则将以以下内容结束: 在此处输入图片说明这就是您的模型。

N=1
model = Sequential()
model.add(LSTM(N))

对于其他模型,您需要N> 1 在此处输入图片说明

收藏
评论

有多少个“ LSTM链”实例

Keras递归神经网络对'units'参数的正确直观解释是, units=1您会获得教科书中所述的RNN,而units=n您会得到一个包含n独立RNN副本的层-它们具有相同的结构,但是由于它们将使用不同的权重进行初始化,因此它们将计算出不同的值。

或者,您可以考虑在units=1的LSTM中,键值(f,i,C,h)是标量; units=n它们将是长度为n向量。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号