Много-много RNN в кератах - прогнозирование выхода для каждого n-го ввода - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь выяснить, как построить модель, используя LSTM / GRU, которая предсказывает многие ко многим, но для каждого n-го (7 в моем случае) ввода.Например, мои входные данные имеют временные шаги в день в течение всего года, но я только пытаюсь предсказать результат в конце каждой недели, а не каждый день.

Единственная информация, которую мне удалось найти, - это ответ: Многие к одному и многие ко многим примерам LSTM в Keras

В нем говорится: «Многие ко многим»когда количество шагов отличается от длины ввода / вывода: в Keras это очень сложно. Нет простых фрагментов кода, чтобы кодировать это. "

В pytorch кажется, что вы можете установить ignore_index в функции потерь, котораяЯ думаю, должен сделать трюк.

Есть ли решение для кераса?

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что нашел ответ.Поскольку я пытаюсь предсказать каждое n-е значение, мы можем просто сохранить выходные данные слоя LSTM, которые мы пытаемся предсказать, и избавиться от остальных.Для этого я создал лямбда-слой - он просто читает каждое седьмое значение из вывода lstm.Это код:

X = np.random.normal(0,1,size=(100,365,5))
y = np.random.randint(2,size=(100,52,1))
model = Sequential()
model.add(LSTM(1, input_shape=(365, 5), return_sequences=True))
model.add(Lambda(lambda x: x[:, 6::7, :]))
model.add(TimeDistributed(Dense(1,activation='sigmoid')))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X,y,epochs=3,verbose=1)
...