【问题标题】:What is the rule to know how many LSTM cells and how many units in each LSTM cell do you need in Keras?知道 Keras 中需要多少个 LSTM 单元以及每个 LSTM 单元中有多少个单元的规则是什么?
【发布时间】:2020-03-23 03:48:41
【问题描述】:

我知道一个 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 来解决同样的问题。

【问题讨论】:

  • 没有这样的规则,这些是你必须通过反复试验来调整的超参数

标签: python tensorflow keras lstm recurrent-neural-network


【解决方案1】:

没有“规则”,但有指导方针;在实践中,您可以尝试深度与宽度,每种方法的工作方式不同:

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

通常,width 提取更多特征,而 depth 提取更丰富的特征 - 但如果从给定数据中提取的特征不多,则应减小宽度 -数据/问题越“简单”,合适的层数就越少。然而,最终最好不要进行广泛的分析并尝试每种组合的不同组合——请参阅this SO了解更多信息。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 2023-03-06
    • 1970-01-01
    • 2020-03-20
    • 2020-03-08
    • 2019-07-03
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多