私は1025643エントリと72個の機能/属性のテストデータを持っています。私は、形状(245,30,72)の入力データtrainXと形状(245、)のtrainYを持つlstmを訓練しました。また、私は30回戻って(245,30,72)形のtrainXになるようにルックバックを指定しました。私はlstmモデルのOutput_shape
model.output_shape
をすれば
は今モデルを訓練した後、出力は次のようになります。
私は理解して何を(なし、1)
は、それが与えるということではありませんテストセットの1ステップ予測。しかし、テストセットのすべての行について、予測の30行(将来のステップごとに1つ)が必要です。(出力が私の場合は(1025643,30,1)になるはずです)。データシェイプではどのような変更を行う必要がありますか?テンソルフローバックエンドとPython 3.6でkeras lstmを使用しています。私のモデルの
コードは次のとおりです。
model = Sequential()
model.add(LSTM(100, return_sequences=True, input_shape = (trainX.shape[1], trainX.shape[2])))
model.add(LSTM(100, return_sequences = False))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
model.fit(trainX, trainY, epochs=50, shuffle=False, verbose=1)
ありがとう:)モデルがそうするように頼んでいるので、今度は、テストデータの各サンプルについて、30のタイムステップをシェイプ(None、30、1)にする必要がありますか?もし私が単一の行だけを提供したいのであれば、モデルは30行(30のタイムステップを順番に)出力します。私のテストデータにはまだ形状(1025643,72)があり、結果には形状(1025643,30,1)があります。 –
私が正しく理解していれば、1回の入力ステップを提供し、次の30回の出力ステップを生成したいと考えています。 LSTMには、各タイムステップの入力が必要です。 1つの入力から30のタイムステップを生成するには、各タイムステップで最初の入力を複製するか、次のタイムステップの入力としてLSTMの出力を使用します(LSTMの入力ディメンションは出力と一致しません。後者のオプションはあなたのアーキテクチャでは不可能です)。 –
ええ、複製という考え方が理にかなっています。ありがとうございました :) –