Извините, я новичок в RNN. Я прочитал этот пост на слое TimeDistributed.
Я преобразовал свои данные в Keras requried [samples, time_steps, features]
: [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
. - Как выбрать хороший
lr
и импульс дляSGD
? Я тестировал разные комбинации вручную. Есть ли в keras метод перекрестной проверки?
[140*50*19]
вместо[140, 50, 19]
? Форма действительно[133000]
? - person sietschie   schedule 16.05.2017