web-dev-qa-db-ja.com

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)

各行について、入力パラメーターの意味とそれらを選択する方法を理解したいと思います。

実際、コードに問題はありませんが、より良い結果を得るには、パラメーターを明確に理解する必要があります。

どうもありがとう!

7
Alessandro

Keras.ioドキュメントのこの part は非常に役立ちます:

LSTM入力形状:形状のある3Dテンソル(batch_sizetimestepsinput_dim

これを説明する写真もあります: enter image description here

また、例のパラメーターについても説明します。

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=バッチごとに更新される重みの量を示します。

decay= learning_reateが時間の経過とともにどれだけ減少するか。

運動量=運動量の割合。より高い値は、極小値を克服し、学習プロセスをスピードアップするのに役立ちます。 詳細説明

nesterov= nesterovの運動量を使用する必要がある場合。 ここに良い説明があります。

26
Alex