Keras LSTM参数解释
Keras LSTM parameter explanation
我有这个神经网络模型来创建异常检测模型。我从一个教程网站复制了这个模型
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 是什么意思。我已经阅读了文档,但我还是不明白
你是对的,16、4... 是 LSTM 单元的数量。关于return个序列,这里需要了解什么是LSTM输入。 LSTM 输入具有形状时间步长、特征(我这里不假设批量维度)。
也许例子会更好地解释,假设你想根据过去几个小时和湿度预测下一个小时的平均温度。所以你的数据看起来像(只是概念,没有真正的交易价值)
[[32, 10],
[27, 12],
[26, 10],
[25, 11],
[27, 10]]
所以我们有 5 小时的湿度和温度。我们把这个块交给 LSTM 层,他处理它。 LSTM 按顺序工作,因此它需要 [32, 10] 进行计算并给出一些结果。 LSTM 给出了每个温度湿度对的结果,因此如果我们的示例层有 4 个单元格,我们期望输出 5 x 4(因为我们有 5 个对和 4 个单元格)。 return sequences 做的是给你选项说 LSTM 我不关心对每一对的响应,只是给了我一些最终结果,所以如果你将它设置为 False(默认值),而不是 5 x 4输出你得到 1 x 4 输出(只是处理所有 5 对的最终值)。
关于regularizer我觉得不在本次问答范围内。因此,可以说正则化器根据损失函数将项添加到梯度计算中以避免过度拟合。我也给你指点this(我觉得作为介绍还是不错的)
我有这个神经网络模型来创建异常检测模型。我从一个教程网站复制了这个模型
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 是什么意思。我已经阅读了文档,但我还是不明白
你是对的,16、4... 是 LSTM 单元的数量。关于return个序列,这里需要了解什么是LSTM输入。 LSTM 输入具有形状时间步长、特征(我这里不假设批量维度)。
也许例子会更好地解释,假设你想根据过去几个小时和湿度预测下一个小时的平均温度。所以你的数据看起来像(只是概念,没有真正的交易价值)
[[32, 10],
[27, 12],
[26, 10],
[25, 11],
[27, 10]]
所以我们有 5 小时的湿度和温度。我们把这个块交给 LSTM 层,他处理它。 LSTM 按顺序工作,因此它需要 [32, 10] 进行计算并给出一些结果。 LSTM 给出了每个温度湿度对的结果,因此如果我们的示例层有 4 个单元格,我们期望输出 5 x 4(因为我们有 5 个对和 4 个单元格)。 return sequences 做的是给你选项说 LSTM 我不关心对每一对的响应,只是给了我一些最终结果,所以如果你将它设置为 False(默认值),而不是 5 x 4输出你得到 1 x 4 输出(只是处理所有 5 对的最终值)。
关于regularizer我觉得不在本次问答范围内。因此,可以说正则化器根据损失函数将项添加到梯度计算中以避免过度拟合。我也给你指点this(我觉得作为介绍还是不错的)