2016-07-14 5 views
0

ケラスでLSTMを構築して時系列予測を行っていますが、hereのようにモデルをミニバッチ(ウィンドウ)でトレーニングして予測をオンラインにします。これは、一度に1つのデータレコードでデータがストリーミングされるためです。たとえば、ウィンドウサイズが500の場合、タイムステップ500でモデルはステップ1〜500で訓練され、501、次に502,503などを予測しようとします。モデルは時間ステップ1000まで再トレーニングされません。this plotに示すように、結果は奇数であり、予測値は各トレーニングウィンドウとともに増加します。ここで何が間違っているかについてのアイデアはありますか?各トレーニングバッチでLSTMの予測が増加する

私は小さなアーキテクチャを有する:

layers = {'input': inputDims, 'hidden1': 35, 'hidden2': 35, 'output': 1} 
model = Sequential() 
model.add(LSTM(
    input_length=self.sequenceLength, 
    input_dim=self.layers['input'], 
    output_dim=self.layers['hidden1'], 
    return_sequences=True) 
model.add(Dropout(0.2)) 
model.add(LSTM(
    self.layers['hidden2'], 
    return_sequences=False) 
model.add(Dropout(0.2)) 
model.add(Dense(output_dim=self.layers['output'])) 
self.model.add(Activation('linear')) 
model.compile(loss='mse', optimizer='rmsprop') 

答えて

0

これはあなたの特定の実装の問題ではなく、長い時系列でLSTMsの概念的問題の化身ではないかもしれません。良い出発点は、論文Learning to forget: Continual prediction with LSTMです。特に は、著者が

は[...]でもLSTMが正しく 適切な訓練サブ

に分割先験的ない特定の非常に長い または継続的な時系列を処理することを学ぶことができないことを確認します

その

[...]セルの状態は、多くの場合、時系列の プレゼンテーション中に直線的に成長する傾向があるSC [...]

+0

これは良い点です。ありがとうございます。モデルの状態をデータストリームのさまざまな場所でリセットしようとします。 Kerasを使ってstatefule LSTMモデルを構築することもできますが、ここでうまくいくかもしれません。 – BoltzmannBrain

関連する問題