2017-09-07 26 views
2

Iは、入力として3つの異なる以下のようにレイアウトされた機能の50のステップのシーケンス用いLSTMモデルを訓練してい次従属変数LSTM KerasのAPI予測複数の出力

#y_train 
[a50, a51, a52, ... a99] 
を使用

#x_train 
[[[a0,b0,c0],.....[a49,b49,c49]], 
    [a1,b1,c1]......[a50,b50,c50]], 
    ... 
    [a49,b49,c49]...[a99,b99,c99]]] 

以下のコードは、ちょうどaを予測するために働いていますが、どのタイムスタンプで[a、b、c]のベクトルを予測して返すのですか?

def build_model(): 
model = Sequential() 

model.add(LSTM(
    input_shape=(50,3), 
    return_sequences=True, units=50)) 
model.add(Dropout(0.2)) 

model.add(LSTM(
    250, 
    return_sequences=False)) 
model.add(Dropout(0.2)) 

model.add(Dense(1)) 
model.add(Activation("linear")) 

model.compile(loss="mse", optimizer="rmsprop") 
return model 
+0

ラベルを[[a50、b50、c50]、[a51、b51、c51]、... [a99、b99、c99]]に変更しようとしましたか? – txizzle

+0

txizzle、私はあなたが何を意味するか分からない、ax、bx、cxは離散的なtimeseriesデータポイントのために私が使用したちょうどプレースホルダです。 –

答えて

1

各レイヤの出力は、それが持つセル/ユニット/フィルタの数に基づいています。

Dense(1...)にはセルが1つしかないため、出力には1つの機能があります。

Dense(3...)にするだけで問題は解決します。あなたは出力が入力として時間ステップ数が同じにしたい場合は


さて、あなたはすべてのあなたのLSTM層にreturn_sequences = Trueをオンにする必要があります。

LSTMの出力は次のようになります。

  • (バッチサイズ、単位) - 次に、使用return_sequences=True

と - return_sequences=False

  • (バッチサイズ、時間ステップ、単位)と次のレイヤーにレイヤラッパーを配置して、あたかもタイムステップを持っているかのように動作させます(基本的には中間の次元を保持します)。

    def build_model(): 
        model = Sequential() 
    
        model.add(LSTM(
         input_shape=(50,3), 
         return_sequences=True, units=50)) 
        model.add(Dropout(0.2)) 
    
        model.add(LSTM(
         250, 
         return_sequences=True)) 
        model.add(Dropout(0.2)) 
    
        model.add(TimeDistributed(Dense(3))) 
        model.add(Activation("linear")) 
    
        model.compile(loss="mse", optimizer="rmsprop") 
        return model 
    
  • +0

    素晴らしい、それはそれをやった! TimeDistributedラッパーについて興味がありますが、最終出力にタイムステップ全体を戻すためのユースケースは何ですか?入力データセットで予測を実行しているのと同じではないでしょうか? –

    +0

    それはあなたが何をしたいかによって異なります。あなたが映画を通じて何を感じるかを判断しようとしている場合を想像してみてください。各ムービーフレームはタイムステップであり、すべてのステップを分類して、時間をかけて人の気分を変えたいと思っています。しかし、1つのフレームから個別に感情を推測することはできません。それはLSTM層の役割であり、各時間ステップを分析し、何が起こっているのかを把握します。 –

    関連する問題