如何选择LSTM Keras参数?

ej83mcc0  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(184)

我有多个时间序列输入,我想正确地建立一个LSTM模型。
我真的很困惑如何选择参数。我的代码:

model.add(keras.layers.LSTM(hidden_nodes, input_shape=(window, num_features), consume_less="mem"))
model.add(Dropout(0.2))
model.add(keras.layers.Dense(num_features, activation='sigmoid'))

optimizer = keras.optimizers.SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)

我想了解每一行的输入参数的含义以及如何选择这些参数。
实际上,我没有任何问题的代码,但我需要了解清楚的参数,以获得更好的结果。
多谢了!

cczfrluj

cczfrluj1#

www.example.com文档的这一部分keras.io非常有用:
LSTM输入形状:带形状的3DTensor(批次大小时间步长输入尺寸
这里还有一张图片可以说明这一点:

我还将解释示例中的参数:

model.add(LSTM(hidden_nodes, input_shape=(timesteps, input_dim)))
model.add(Dropout(dropout_value))

hidden_nodes=这是LSTM的神经元数目。如果数目越大,网络的功能越强。然而,需要学习的参数数目也会增加。这意味着需要更多的时间来训练网络。
timesteps=您要考虑的时间步数。例如,如果您要对句子进行分类,这将是句子中的单词数。
input_dim=特征/嵌入的维度。例如,句子中单词的向量表示
dropout_value=为了减少过度拟合,丢弃层仅随机选取可能网络连接的一部分。此值是每个时段/批次所考虑的网络连接的百分比。

正如您所看到的,不需要指定batch_size。Keras会自动处理它。

optimizer = keras.optimizers.SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)

learning_rate=表示每批更新的权重。
衰减= learning_reate随时间减少的量。
momentum=动量的比率。较高的值有助于克服局部最小值,从而加快学习过程。Further explanation.
nesterov=如果应使用nesterov动量。Here is a good explanation.

相关问题