【问题标题】:Keras LSTM parameter explanationKeras LSTM 参数说明
【发布时间】:2021-12-21 03:00:46
【问题描述】:

我有这个神经网络模型来创建异常检测模型。我从一个教程网站复制了这个模型

def autoencoder_model(X):
  inputs = Input(shape=(X.shape[1], X.shape[2]))
  L1 = LSTM(16, activation='relu', return_sequences=True, kernel_regularizer = regularizers.l2(0.00))(inputs)
  L2 = LSTM(4, activation = 'relu', return_sequences=False)(L1)
  L3 = RepeatVector(X.shape[1])(L2)
  L4 = LSTM(4, activation='relu', return_sequences=True)(L3)
  L5 = LSTM(16, activation = 'relu', return_sequences=True)(L4)
  output = TimeDistributed(Dense(X.shape[2]))(L5)
  model = Model(inputs=inputs, outputs=output)
  return model

我知道 16 或 4 是感知器的数量。但我不知道 return_sequences 的含义以及为什么 L2 和 L3 必须为 False。而且我不知道 kernel_regularizer 是什么意思。我已经阅读了文档,但我仍然不明白

【问题讨论】:

    标签: python tensorflow keras neural-network lstm


    【解决方案1】:

    你是对的,16、4...是 LSTM 单元的数量。关于返回序列,这里需要了解什么是 LSTM 输入。 LSTM 输入具有形状时间步长、特征(我在这里不假设批量维度)。

    也许示例会更好地解释,假设您想根据过去几个小时和湿度预测下一小时的平均温度。所以你的数据看起来像(只是概念,没有真正的交易价值)

    [[32, 10],
    [27, 12],
    [26, 10],
    [25, 11],
    [27, 10]]
    

    所以我们有 5 小时的湿度和温度。我们把这个块给 LSTM 层,他处理它。 LSTM 按顺序工作,因此需要 [32, 10] 进行计算并给出一些结果。 LSTM 给出了每个温度湿度对的结果,因此对于我们的示例,如果层有 4 个单元,我们期望输出 5 x 4(因为我们有 5 对和 4 个单元)。返回序列所做的是给你选项说 LSTM 我不关心对每一对的响应,只是给了我一些最终结果,所以如果你将它设置为 False(默认值),而不是 5 x 4 输出你得到 1 x 4 输出(只是处理所有 5 对的最终值)。

    关于正则化器,我认为它超出了这种问答格式的范围。因此,可以说正则化器根据损失函数将项添加到梯度计算中,以避免过度拟合。我也给你指点this(我相信它作为介绍很不错)。

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 1970-01-01
      • 2018-05-12
      • 2018-06-29
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多