Ответ 1
Недавно я решал аналогичную проблему. В вашем случае:
-
Вход должен иметь форму
(300, 20, 1)
- потому что у вас есть временные последовательности длины20
с функцией1
. -
Вы можете сделать это следующим образом:
sequential_input = Input(shape=(20, 1)) feature_input = Input(shape=(feature_nb,)) lstm_layer = LSTM(lstm_units_1st_layer, return_sequences=True)(sequential_input) lstm_layer = LSTM(lstm_units_2nd_layer, return_sequences=True)(lstm_layer) ... lstm_layer = LSTM(lstm_units_nth_layer, return_sequences=False)(lstm_layer) merged = merge([lstm_layer, feature_input], mode='concat') blend = Dense(blending_units_1st_layer, activation='relu')(merged) blend = Dense(blending_units_2nd_layer, activation='relu')(blend) ... output = Dense(10)(blend)
-
Это самая сложная часть. Я не советую вам прогнозировать несколько магазинов, подавая их в сеть как один вектор функций. Вы можете просто пропустить эту часть и попытаться предсказать разные магазины, используя одну модель или выход постпроцесса, используя, например, некоторые графические модели или
PCA
на матрице, где строки являются дневными продажами.
UPDATE:
Чтобы иметь дело с несколькими последовательными функциями, вы можете сделать следующее:
sequential_input = Input(shape=(20, nb_of_sequental_features))
feature_input = Input(shape=(feature_nb,))
lstm_layer = LSTM(lstm_units_1st_layer, return_sequences=True)(sequential_input)
lstm_layer = LSTM(lstm_units_2nd_layer, return_sequences=True)(lstm_layer)
...
lstm_layer = LSTM(lstm_units_nth_layer, return_sequences=False)(lstm_layer)
merged = merge([lstm_layer, feature_input], mode='concat')
blend = Dense(blending_units_1st_layer, activation='relu')(merged)
blend = Dense(blending_units_2nd_layer, activation='relu')(blend)
...
output = Dense(10)(blend)
model = Model(input=[sequential_input, feature_input], output=output])
В этом случае ваш вход должен состоять из списка из двух таблиц: [sequential_data, features]
где sequential_data.shape = (nb_of_examples, timesteps, sequential_features)
и features.shape = (nb_of_examples, feature_nb)
. Поэтому sales
или temperature
следует хранить в sequential_features
и store_type
в features
.