2017-12-01 20 views
2

私は30のタイムステップで定義される3つの時系列A、B、Cを持っています。私は時間ステップ1から30までのA、Bの値と時間ステップ1から時間ステップ10までのCの値を入力として残りの20の時間ステップのCの値を予測するLSTMを構築したいと考えています。言い換えれば、異なるサイズ(30と10)のシーケンス入力を処理するLSTMを構築する必要があります。私の考えは、入力時系列Cをパディング(例えば0を使用)して、同じサイズの3つのシーケンスを持ち、標準LSTMを使用できるようにすることです。ケラでの(自動)予測のためのパディング時系列

A1, A2, A3, ... A28, A29, A30 --> 
B1, B2, B3, ... B28, B29, B30 --> LSTM --> C11, C12, ..., C30 
C1, C2, C3, ... 0, 0, 0 --> 

技術的には、これは概念的には正しいですか? LSTMは詰め物を忘れるほどスマートになりますか?

答えて

0

あり、この問題のために働くだろう、おそらくさまざまなアーキテクチャがありますが、それはあなたが私が70入力機能を取る標準のフィードフォワードネットワークを使用することをお勧めし30+30+10 = 70の固定入力の大きさを持っているように、聞こえる一つ以上の高密度に接続しているので隠しレイヤーを作成し、予測したいCの欠損値に対応する20値を出力します。 Keras

これは次のようになります。あなたはReLUBatchNormalization層を追加するトレーニングトライ中に勾配に問題がある場合、あなたは隠れ層の数を減らすこと、および/または追加しようとして過学習になっている場合

model = Sequential() 
model.add(Dense(500, input_dim=70)) 
model.add(Activation('relu')) 
model.add(Dense(300)) 
model.add(Activation('relu')) 
model.add(Dense(20)) 
model.add(Activation('linear')) 

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy']) 

の後、ReLUおよびBatchNormの後。

特に、この比較的小さくて重要なことに、固定のの固定サイズのため、LSTMのようなシーケンスモデルを使用する必要はありません。彼らはより扱いにくく、入力が固定サイズでないときには、たぶんその価値があります。

あなたは本当にあなたが現地時間の依存関係をモデル化するために1D畳み込みと30x3入力形状とconvnetを試みることができるモデルローカルタイム機能アーキテクチャを必要と判明した場合。この場合は、あなたが提案したようにをパッドすることができます。

編集:@TitusPulloは、チャットで、のThis exampleを複数の出力時系列予測に対して試したことを言及しています。

+0

返信いただきありがとうございます!私は深い学びに慣れていない...固定入力のシーケンスを扱うときにLSTMはなぜ価値がないのですか?ありがとう –

+0

LSTMはさまざまな理由で訓練するのが難しいです。彼らは初期化に対してより敏感であり、消滅/爆発の勾配に苦しむ可能性が高く、より多くの計算資源を必要とするなど、より単純なアーキテクチャを最初に試すべきである。入力のサイズが非常に長く、非常に長く、または時間/シーケンスに依存する動作が強い場合を除き、通常は繰り返しアーキテクチャが必要ありません。しかし、最後のケースが真であっても、私はまだ固定サイズの入力で1d畳み込みを試みます。 – Imran

+0

1dコンボリューションは複数の入力/出力でも機能しますか?つまり、私が4つの入力時系列を持っていて、それらの2つの将来の値を予測しなければならない場合(図のような同じシナリオでは、私は情報が少ないと予測する必要があります。 –

関連する問題