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

What is the rule to know how many LSTM cells and how many units in each LSTM cell do you need in Keras?

我知道一个 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'))
  1. 对于应该使用多少个 LSTM 单元有什么规定吗?或者它只是手动试验?
  2. 接下来的另一个问题是,你应该在一个 LSTM 单元中取多少个单元。就像有些人拿 256,有些人拿 64 一样的问题。

没有"rules",但有指南;在实践中,您将试验深度与宽度,每一种都有不同的作用:

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

一般来说,width 提取更多的特征,而 depth 提取更丰富的特征——但是如果没有太多的特征可以提取给定数据,宽度应该减小 - "simpler" data/problem,层数越少越好。然而,最终,最好不要进行广泛的分析,而是尝试对每种分析进行不同的组合——有关详细信息,请参阅 this SO

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