時系列を予測するためにkeras
LSTMを作成しようとしています。私のx_trainは3000,15,10(例、タイムステップ、フィーチャー)、y_train(3000,15,1)のような形をしていて、多対多のモデル(シーケンスごとに10個の入力フィーチャを1出力/シーケンスにする)を構築しようとしています。ケラス - 予期しない予測結果
私が使用しているコードは、このです:
model = Sequential()
model.add(LSTM(
10,
input_shape=(15, 10),
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
100,
return_sequences=True))
model.add(Dropout(0.2))
model.add(Dense(1, activation='linear'))
model.compile(loss="mse", optimizer="rmsprop")
model.fit(
x_train, y_train,
batch_size=1, nb_epoch=1, validation_split=0.05)
predicted = model.predict(x_test)
私のデータは次のようになります。
x_train = [
[
[3,4,3,1.5,0,7....], # 10 Features
[2,4,1,1,4,3....],
.... # 15 Timesteps
],
.... # 3000 Examples
]
y_train = [
[
[0],
[5],
....
],
.....
]
コードをコンパイルし、エラーなしで収まるが、予測値は現実的ではありません。
期待値は0〜15の整数です。しかし予測は-0.03と1の間の浮動小数点数です。また、予測には15のタイムステップがありますが、実際には16番目のタイムステップ(将来の予測結果)に興味があります。
例の予測:
predicted = [
[
[0.035478],
[0.046423],
[0.948723],
....
],
....
]
マイkeras
バージョンは2.0.6で、python
はバージョン3.4.5です。
ご協力いただきありがとうございます。あなたはおそらくy_trainを想定すると、0と1の間であるためにあなたのy_trainを再スケールと予測しなければならない
[OK]をおかげでたくさん、私はこれをしようとします。 16番目の予測を取得する方法はありますか? – sbz
x_testについて予測しているので、x_testに16番目のタイムステップがあることを確認してください。 – Mark
ありがとうございました、私は0と1の間になるようにデータを拡大しました。そして今、すべての結果がより現実的に見えるようになります。私はそれも終わったと思って、私はちょうど15のタイムステップに固執しますが、最後の入力タイムステップを切り捨て、最初に空のタイムスタンプを挿入することで入力と結果をシフトします。したがって、すべてのx値は次のy値に対応します。しかし、私はほとんどすべての結果に対して同じ数(〜0.018)を受け取っているため、結果はまだ正しくありません。あなたはそれが何であるか知っていますか? – sbz