2017-09-01 1 views
2

私はLSTMに精通しており、何かを明確にする必要があります。私はt-300を使って時系列をモデリングしています:t-1はt:t + 60を予測します。結果は、次善てきた、私の本当のデータセットでKeras LSTMでは、遅延機能とタイムステップの機能の違いは何ですか?

# fake dataset to put words into code: 
X = [[1,2...299,300],[2,3,...300,301],...] 
y = [[301,302...359,360],[302,303...360,361],...] 

# LSTM requires (num_samples, timesteps, num_features) 
X = X.reshape(X.shape[0],1,X.shape[1]) 

model = Sequential() 
model.add(LSTM(n_neurons[0], batch_input_shape=(n_batch, X.shape[1], X.shape[2]), stateful=True)) 
model.add(Dense(y.shape[1])) 
model.compile(loss='mse', optimizer='adam') 

model.fit(X, y, epochs=1, batch_size=1, verbose=1, shuffle=False) 

、およびCPU上では20分で40万サンプルの1つのエポックを訓練することができました。私の最初のアプローチは、このようなLSTMを設定することでした。ネットワークは1つのエポック後にすばやく収束し、私がそれを与えたポイントのセットについては同じ結果が出てくるでしょう。

私の最新の変更は、次のようにXを再形成することであった:

X = X.reshape(X.shape[0],X.shape[1],1) 

トレーニング(私は完全なデータセットで試していませんが)遅く行くことのようですが、それ使用率は高い遅くなります。 1回の2,800サンプルのエポックをトレーニングするのに約5分かかります。私は実際のデータのより小さな部分集合とより少ない数のエポックで遊んでいて、有望であるようです。私は、異なる入力に対して同じ出力を得ていません。

ここで何が起こっているのか分かりますか?

答えて

1

Kerasでは、(num_samples、timesteps、num_features)のタイムステップは、エラーの伝播の回数を決定します。BPTT

これは、今度はあなたが観察している減速に時間がかかります。

X.reshape(X.shape[0], X.shape[1], 1)は、300のタイムステップを持つ1つの機能であるため、あなたのケースでは正しいことです。

関連する問題