知道在 Keras 中需要多少个 LSTM 单元以及每个 LSTM 单元中有多少个单元的规则是什么?

Asu*_*nda 2 python lstm keras tensorflow recurrent-neural-network

我知道 LSTM 单元内部有许多 ANN。

但是在为同一问题定义隐藏层时,我看到有些人只使用 1 个 LSTM 单元,而其他人则使用 2、3 个 LSTM 单元,如下所示 -

model = Sequential()
model.add(LSTM(256, input_shape=(n_prev, 1), return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(128, input_shape=(n_prev, 1), return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(64, input_shape=(n_prev, 1), return_sequences=False))
model.add(Dropout(0.3))
model.add(Dense(1))
model.add(Activation('linear'))
Run Code Online (Sandbox Code Playgroud)
  1. 关于您应该使用多少个 LSTM 单元,是否有任何规则?或者它只是手动实验?
  2. 紧随其后的另一个问题是,您应该在 LSTM 单元中使用多少个单元。对于同样的问题,有些人需要 256,有些人需要 64。

Ove*_*gon 5

没有“规则”,但有指导方针;在实践中,你会试验深度与宽度,每个都不同:

  • RNN 宽度由 (1) # 输入通道定义;(2) 单元过滤器的数量(输出通道/单元)。与 CNN 一样,每个 RNN 过滤器都是一个独立的特征提取器:更多适用于更高复杂度的信息,包括但不限于:维度、模态、噪声、频率。
  • RNN 深度由 (1) # 堆叠层数定义;(2) # 时间步长。细节会因架构而异,但从信息的角度来看,与 CNN 不同,RNN 是密集的:每个时间步长都会影响一层的最终输出,因此影响下一层的最终输出——所以它又不是“更非线性”那么简单; 堆叠 RNN 利用空间和时间信息。

一般来说,宽度提取更多特征,而深度提取更丰富的特征——但如果从给定数据中提取的特征不多,宽度应该减少——数据/问题越“简单”,层越少是合适的。然而,最终,最好不要进行广泛的分析并尝试每个的不同组合——有关更多信息,请参阅此 SO

最后,避免Dropout并使用LSTM(recurrent_dropout=...)(参见链接的 SO)。