2017-11-09 7 views
0

私はTensorflowバックエンドでKerasを使用して複数のシーケンスのシーケンス予測を一度に1ステップずつ行います。つまり、それぞれにm個のタイムステップを持つn個のシーケンスがあり、それらをすべて1つのmodel.predict()コマンドでKerasにロードし、モデルはn個の要素のそれぞれについて予測された次のステップに対応する 'n'シーケンス。Kerasは相互配列相関を最大にします

私の目標は、Kerasがシーケンス間の相互相関を検出する能力を最大にすることです。例えば、シーケンスaがシーケンスbと強く相関し、時間遅延とスケールファクタの差があるとすると、理論的には、シーケンスaの次のステップをよりよく予測するためには、シーケンスbを使用できるはずです。私はそれを今どのように持っているのですか?私は4つのシーケンスを使って30個の要素の長さをテストしています。入力データは形状(4,30,1)、出力データは形状(4,1) :Kerasはすでに系列を相互相関されている場合

model = Sequential() 

model.add(LSTM(
    input_shape=(30, 1), 
    output_dim=100, 
    return_sequences=True)) 
model.add(Dropout(0.2)) 

model.add(LSTM(
    200, 
    return_sequences=True)) 
model.add(Dropout(0.2)) 

model.add(LSTM(
    output_dim=1, 
    return_sequences=False)) 
model.add(Activation("linear")) 

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

私は思ったんだけどしている、または私のモデルは現在、独立したとして、それらを見て、ちょうどそれらをすべて同時に予測した場合(すなわち、それは同じだろうシーケンスa、b、cなどの次のステップを予測する)。 Kerasは、時間 - ステップごとにn個の特徴(すなわち、形状(1、30、4)のデータを入力し、形状(1,4)のデータを出力する)を1シーケンスとして扱うと、 )?そしてもしそうなら、私はまだ各要素が入力配列の1つに相関されている(すなわち、それらが識別能力を維持するであろうか)n要素配列を出力することができるだろうか?

ありがとうございます!

答えて

0

私は先に行って、ちょうど両方の方法をテストし、ことがわかった - 自分の質問に答えるために:はい、Kerasはもともと全く相互相関、個別のシーケンスではなく治療して

  • を。
  • はい、複数のフィーチャを持つ単一のシーケンスとしてデータを入力することで、より良い相互相関が得られました(この場合、相互相関を提供する唯一のシナリオでした)。
  • はい、Kerasは特徴間の識別能力を維持する。

は、私は、各入力形式で複数の試験を行なったし、元々入力シーケンスADが良いだけ入力上にAの予測を改善するかどうかを確認するために実際のテストデータ対予測のためのカイ^ 2フィットを計算し、これを決定するためにこれを行うとき、私はすぐに元の形式の入力BDがAの予測に影響を与えないことに気付きました(4つの入力に対して事前に訓練されたモデルを使用し、DでシーケンスCを切り替えます)。維持管理され、必要な出力が大幅に変更されている必要があります - 予測の変化は全くありません)。 4つのフィーチャの新しいモデルで同じ入力スイッチを実行すると、Aの予測が他の入力B-Dに明確に依存していました。複数の入力モデルに対して複数のフィーチャモデルを使用すると、出力がはるかに滑らかになりました。これはアプリケーションにとっては優れており、おそらく異常値を制御するより多くの変数に依存するため意味があります。