如何选择 LSTM Keras 参数?
How to choose LSTM Keras parameters?
我有多个时间序列输入,我想正确构建一个 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)
我想了解每一行输入参数的含义以及如何选择这些参数。
其实我对代码没有任何问题,但我需要清楚地理解参数才能获得更好的结果。
非常感谢!
keras.io 文档的 part 非常有用:
LSTM Input Shape: 3D tensor with shape (batch_size, timesteps, input_dim)
这里还有一张图片可以说明这一点:
我也会解释你例子中的参数:
model.add(LSTM(hidden_nodes, input_shape=(timesteps, input_dim)))
model.add(Dropout(dropout_value))
hidden_nodes = 这是LSTM的神经元数量。如果你有更高的数字,网络会变得更强大。然而,要学习的参数数量也在增加。这意味着需要更多时间来训练网络。
timesteps = 您要考虑的时间步数。例如。如果你想对一个句子进行分类,这就是一个句子中的单词数。
input_dim = features/embeddings 的尺寸。例如。句子中单词的向量表示
dropout_value = 为了减少过拟合,dropout层只是随机取一部分可能的网络连接。此值是每个 epoch/batch.
所考虑网络连接的百分比
如您所见,无需指定 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.
我有多个时间序列输入,我想正确构建一个 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)
我想了解每一行输入参数的含义以及如何选择这些参数。
其实我对代码没有任何问题,但我需要清楚地理解参数才能获得更好的结果。
非常感谢!
keras.io 文档的 part 非常有用:
LSTM Input Shape: 3D tensor with shape (batch_size, timesteps, input_dim)
这里还有一张图片可以说明这一点:
我也会解释你例子中的参数:
model.add(LSTM(hidden_nodes, input_shape=(timesteps, input_dim)))
model.add(Dropout(dropout_value))
hidden_nodes = 这是LSTM的神经元数量。如果你有更高的数字,网络会变得更强大。然而,要学习的参数数量也在增加。这意味着需要更多时间来训练网络。
timesteps = 您要考虑的时间步数。例如。如果你想对一个句子进行分类,这就是一个句子中的单词数。
input_dim = features/embeddings 的尺寸。例如。句子中单词的向量表示
dropout_value = 为了减少过拟合,dropout层只是随机取一部分可能的网络连接。此值是每个 epoch/batch.
所考虑网络连接的百分比如您所见,无需指定 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.