Я работаю над проблемой прогнозирования последовательности, когда мои входные данные имеют размер (numOfSamples, numOfTimeSteps, функции), где каждая выборка независима, количество временных шагов является одинаковым для каждой выборки (после предварительного заполнения длины 0 с использованием керас .pad_sength что я хочу.
Моя первая особенность - это категориальная переменная, закодированная в уникальный int, а вторая - числовая. Я хочу иметь возможность предсказать следующую категориальную переменную, а также соответствующее значение feature2, а затем использовать его для обратной связи в сеть, чтобы предсказать последовательность, пока не будет выведена категория EOS.
Это основной источник, на который я ссылался, чтобы попытаться понять, как создать генератор для использования с keras.fit_generator.
[ 1 ]
Нет никакой путаницы в том, как мини-пакет для данных "X" захватывается, но для данных "Y" я не уверен в правильном формате для того, что я пытаюсь сделать. Поскольку я пытаюсь предсказать категорию, я подумал, что однократное векторное представление временного шага t + 1 будет правильным способом кодирования первой функции, я думаю, что в результате получится 4? размерная матрица NumPy ??, но я вроде как заблудился, как иметь дело со второй числовой функцией.
Теперь это приводит меня к вопросам, касающимся архитектуры и того, как структурировать модель, чтобы делать то, что я хочу. Имеет ли смысл следующая архитектура? Я считаю, что чего-то не хватает, чего я не понимаю.
Предложенная архитектура (параметры заполнены слабо, пока ничего не установлено):
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(hidden_size, return_sequences=True))
model.add(TimeDistributed(Dense(vocab_size)))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['categorical_accuracy'])
model.fit_generator(...) #ill figure this out
Итак, в конце активация softmax может предсказать следующее категориальное значение для feature1. Как мне также вывести значение для feature2, чтобы я мог передать новый прогноз для обеих функций обратно в качестве следующего временного шага? Нужна ли какая-то параллельная архитектура с двумя LSTM, которые каким-то образом объединяются?
Это моя первая попытка сделать что-нибудь с нейронными сетями или с Keras, и я бы не сказал, что я "великолепен" в python, но я могу обойтись. Тем не менее, я чувствую, что у меня есть приличное понимание фундаментальных теоретических концепций, но мне не хватает практики.
Этот вопрос, скорее, открыт, с призывом отделить мою текущую стратегию.
Еще раз, общая цель состоит в том, чтобы предсказать обе функции (категориальные, числовые), чтобы предсказать "полные последовательности" из последовательностей промежуточной длины.
Ex. Я тренируюсь на этих дополненных последовательностях max-len, но в процессе производства я хочу использовать это для прогнозирования оставшейся части в настоящее время невидимых временных шагов, которая будет иметь переменную длину.