1
申し訳ありません。RNNを初めて使用しています。私はTimeDistributed層でthis postを読んだ。私はKerasに自分のデータを整形しているKerasのLSTMのTimeDistributedレイヤーとリターンシーケンスなど
は[samples, time_steps, features]
をrequried:[140*50*19]
、私は140個のデータ点を持っている意味し、各50時間ステップ、及び19点の特徴を有します。私の出力は[140*50*1]
の形をしています。私は最後のデータポイントの精度についてもっと気にしています。これは回帰の問題です。
私の現在のコードは次のとおりです。
x = Input((None, X_train.shape[-1]) , name='input')
lstm_kwargs = { 'dropout_W': 0.25, 'return_sequences': True, 'consume_less': 'gpu'}
lstm1 = LSTM(64, name='lstm1', **lstm_kwargs)(x)
output = Dense(1, activation='relu', name='output')(lstm1)
model = Model(input=x, output=output)
sgd = SGD(lr=0.00006, momentum=0.8, decay=0, nesterov=False)
optimizer = sgd
model.compile(optimizer=optimizer, loss='mean_squared_error')
私の質問は以下のとおりです。
- 私の場合は、多対多であるので、私は
return_sequences=True
を使用する必要がありますか?最後のタイムステップの予測だけが必要な場合は、多対一になるでしょう。だから私の出力は[140*1*1]
とreturn_sequences=False
になる必要がありますか? - 多対多を使用すると、最後のタイムポイントの精度を向上させる方法はありますか?他のポイントの精度よりも気になります。
私はパフォーマンスがTimeDistributed層を使用しないよりも悪いように思わ
output = TimeDistributed(Dense(1, activation='relu'), name='output')(lstm1)
としてTimeDistributed層を使用しようとしました。なぜこれはそうですか?
- 私は
optimizer=RMSprop(lr=0.001)
を使用しようとしました。私はRMSprop
がNNを安定させるはずだと思った。しかし、私は決してRMSprop
を使って良い結果を得ることができませんでした。 SGD
の場合、良いlr
と勢いを選択するにはどうすればよいですか?私はさまざまな組み合わせを手動でテストしています。ケラスにクロスバリデーションの方法はありますか?
なぜ、[140、50、19]の代わりに '[140 * 50 * 19]'と書いていますか?形状は実際に '[133000]'ですか? – sietschie
ありがとう、私は[140、50、19] – Echo