データ再形成:
再形成操作は、Keras が想定する LSTM 入力形式 ([サンプル、タイム ステップ、特徴]) に準拠するために必要です。この場合、サンプルはデータセット内のシーケンスの数を表し、タイム ステップは各シーケンスの長さを示し、特徴量は各タイムステップの入力変数の数を示します。データを再形成することで、LSTM がシーケンス情報を適切に処理できるようになります。
ステートフル LSTM:
ステートフル LSTM は、トレーニング中に複数のバッチにわたって内部状態を保持します。これにより、これまでに見た配列情報を「記憶」することができます。提供されている例では、batch_size が 1 に設定され、メモリはトレーニングの実行の間にリセットされます。これは、LSTM がステートフル機能を十分に活用していないことを意味します。ステートフルネスを利用するには、通常、1 より大きいバッチ サイズを使用し、バッチ間の状態のリセットを避けます。これにより、LSTM は複数のシーケンスにわたる長期的な依存関係を学習できるようになります。
時間ステップ:
時間ステップの数は、データセット内の各シーケンスの長さを示します。あなたが共有したイメージでは、可変長シーケンスが 1 つの出力に凝縮される多対 1 のケースを考慮しています。ピンクのボックスの数は、入力シーケンスのタイム ステップ数に対応します。
特徴:
特徴の数は、それぞれの特徴の入力変数の数を指します。タイムステップ。複数の金融銘柄を同時にモデル化するなど、多変量系列では、タイム ステップごとに複数の特徴があり、予測されるさまざまな変数を表します。
図内の赤いボックスは、は隠れた状態を表し、緑色のボックスはセルの状態を表します。これらは視覚的には同じですが、LSTM では別個の要素です。 LSTM のステートフルな動作は、これらの状態が後続のタイム ステップおよびバッチに引き継がれることを意味します。ただし、この例のトレーニング実行間の状態のリセットにより、真のステートフル性が妨げられることに注意することが重要です。
単一レイヤーでの多対多:
単一 LSTM レイヤーで多対多の処理を実現するには、return_sequences=True を使用します。これにより、出力形状に時間次元が含まれるようになり、シーケンスごとに複数の出力が可能になります。
単一レイヤーによる多対 1:
多対 1 の処理の場合は、return_sequences=False を設定します。これは、LSTM 層に最後のタイム ステップのみを出力し、それ以前のシーケンス情報を効果的に破棄するように指示します。
Repeat Vector を使用した 1 対多:
1 対多の構成では、RepeatVector レイヤーを使用して入力を複数のタイム ステップに複製できます。これにより、単一の観測を LSTM 層にフィードし、複数の出力を取得できます。
ステートフル LSTM による 1 対多:
を達成するためのより複雑なアプローチ1 対多の処理には、stateful=True の使用が含まれます。シーケンスを手動で繰り返し、各タイム ステップの出力を入力として次のタイム ステップに入力すると、単一のステップのみを入力するだけで一連の出力を生成できます。これはシーケンス生成タスクによく使用されます。
複雑な構成:
LSTM をさまざまな構成でスタックして、複雑なアーキテクチャを作成できます。たとえば、オートエンコーダーは多対 1 エンコーダーと 1 対多デコーダーを組み合わせて、モデルがシーケンスのエンコードとデコードの両方を学習できるようにすることができます。
以上がKeras のステートフル LSTM は従来の LSTM とどのように違うのでしょうか?また、それぞれのタイプをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。