Keras では、入力データは [サンプル、タイム ステップ、特徴] として整形されます。これは、データが特定の長さのシーケンスに編成され、各シーケンスに複数の特徴が含まれていることを意味します。
たとえば、3 つのタイム ステップ (ピンクのボックス) と 1 つの特徴 (青色のボックス) がある以下のビジュアライゼーションを考えてみましょう。 box):
[時間ステップを表す 3 つのピンクのボックスと特徴を表す 1 つの青いボックスの画像]
この場合、データの形状は (1, 3, 1) になります。ここで、
ステートフル LSTM とは?
ステートフル LSTM はバッチ全体で内部状態を維持します。これは、特定のタイム ステップでの出力が依存することを意味します。そのタイム ステップの入力だけでなく、その前の入力も同様です。これは、時系列予測や自然言語処理など、モデルが前の情報を記憶する必要があるタスクに役立ちます。
バッチ サイズがステートフル LSTM に与える影響
いつステートフル LSTM を使用すると、バッチ サイズによって一度に処理されるシーケンスの数が決まります。バッチ サイズが 1 の場合、モデルは各シーケンスを個別に処理し、その内部状態を維持します。これは、時系列予測など、シーケンスの順序が重要なタスクに役立ちます。
バッチ サイズが 1 より大きい場合、モデルは複数のシーケンスを並行して処理し、内部状態を共有します。彼ら。これにより、トレーニングの効率が向上しますが、特にシーケンスの順序が重要なタスクの場合、モデルの精度が低下する可能性があります。
ステートフル LSTM の使用例
ステートフル LSTM ネットワークを使用して時系列の次の値を予測するコード スニペットの例を次に示します。
<code class="python">model = Sequential() model.add(LSTM(4, batch_input_shape=(1, look_back, 1), stateful=True)) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') # Train the model for i in range(100): model.fit(trainX, trainY, nb_epoch=1, batch_size=1, verbose=2, shuffle=False) model.reset_states()</code>
この例では、モデルはバッチ サイズ 1 を使用してトレーニングされています。各シーケンスが個別に処理されること。 stateful=True 引数は、バッチ間で内部状態を維持するようにモデルに指示します。各シーケンスの処理後に内部状態をリセットするには、reset_states() 関数を使用します。
以上がKeras のステートフル LSTM に対するバッチ サイズの影響は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。