私は100の長さの配列に切り分ける長さ1000の配列を持っています。だから私は長さ100の901シーケンスで終わる。最初の900をtrainX
とする。 trainY
は、これらのシーケンスの2番目から901番目です。1対1 LSTM
ケラスでは、次の画像モデルを作成したいと考えています。重要な機能は、$ X_1 $が$ X_2 $、$ X_2 $が$ X_3 $にマップされていることです。私はこれらの100単位を描いていないという事実を無視してください。
ケラスでは、$ X_1 $〜$ X_ {100} $が$ X_ {101} $にマッピングされるモデルを構築する方法を知っています。これは、次によって行われます。
batch_size = 1
time_steps = 100
model = Sequential()
model.add(LSTM(32, batch_input_shape=(batch_size, time_steps, 1), stateful=True))
model.add(Dense(1))
しかし、多くの場合に多くでは、次のようにエラーがチャック:
model = Sequential()
model.add(LSTM(32, batch_input_shape=(batch_size, time_steps, 1), stateful=True, return_sequences=True))
model.add(Dense(1))
私は100個の出力はreturn_sequences=True
を言って与えられているという事実を保存しよう。私はがbatch_size x hidden_nodes
サイズの行列を入力として期待しているのに対し、私の場合は出力するとbatch_size x time_steps x hidden_nodes
と出力されていることを考えると、エラーInput 0 is incompatible with layer dense_6: expected ndim=2, found ndim=3
が得られます。
私の質問はどのように私は画像に示すように動作するLSTMを取得するのですか?高密度レイヤーでは、現在のタイムステップの正面(またはその場面)の隠れたレイヤーを誤って参照していないことが重要です。
注:私はコードを実行しませんでした。私はちょうどそれを書いた。 – Nejla
このバージョンの予測を行う方法はすでにわかっています。私が望むモデルは、あなたが言及したものとは少し異なります。 "ケラスでは、$ X_1 $〜$ X_ {100} $が$ X_ {101} $にマッピングされるモデルを構築する方法を知っています(多くの場合から1つのケース)" –