提问者:小点点

如何选择LSTM Keras参数?


我有多个时间序列的输入,我想正确地建立一个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)

我想了解每一行输入参数的含义以及如何选择这些参数。

实际上,我对代码没有任何问题,但我需要清楚地理解参数,以便获得更好的结果。

非常感谢!


共1个答案

匿名用户

这部分是喀拉山脉。io文档非常有用:

LSTM输入形状:具有形状的3D张量(batch_size,时间步长,input_dim)

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

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

hidden_nodes=这是LSTM的神经元数量。如果你有一个更高的数字,网络会变得更强大。然而,需要学习的参数数量也在增加。这意味着需要更多的时间来训练网络。

TimeStase=要考虑的时间步数。例如,如果你想对一个句子进行分类,这将是一个句子中的字数。

input_dim=特征/嵌入件的尺寸。例如,句子中单词的向量表示

dropout_value=为了减少过度拟合,dropout层只是随机地获取一部分可能的网络连接。此值是每个历元/批所考虑的网络连接的百分比。

如您所见,无需指定批处理大小。Keras会自动处理它。

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

learning_rate=表示每批更新的权重。

衰减=随着时间的推移,学习过程减少的程度。

动量=动量的速率。较高的值有助于克服局部极小值,从而加快学习过程。进一步解释。

nesterov=如果应该使用nesterov动量。这里有一个很好的解释。