Другой ввод time_step для LSTM в Keras

#keras #lstm #recurrent-neural-network

#keras #lstm #рекуррентная нейронная сеть

Вопрос:

Я пытаюсь построить сеть кодировщика-декодера для классификации видеоданных. Читая документацию Keras для ячеек LSTM, он ожидает фиксированное количество time_step для ячейки. Однако данные, с которыми я имею дело, имеют разное количество кадров для каждой категории. Я думаю, что могу выбрать самый длинный и дополнить остальные начальными кадрами или конечными кадрами, но я думаю, что модель будет смещена в сторону тех, у кого похожие кадры. Есть ли способ, которым я могу вводить входные данные с разными time_step значениями в ячейку LSTM в Keras? Я мог бы поместить токен <start> и <end> в начало и конец последовательности, чтобы сообщить сети, когда делать прогноз, но я не уверен, как это сделать.

Любая помощь была бы очень признательна, спасибо!

Комментарии:

1. Создайте отдельные сети для примеров с одинаковыми временными шагами.

Ответ №1:

Читая документацию Keras для ячеек LSTM, он ожидает фиксированное количество time_step для ячейки.

Я не знаю, откуда вы берете эту информацию, но вы можете передать последовательность переменной длины (переменный time_step dim) для lstm. Класс LSTM является дочерним по отношению к классу RNN, как указано в документации keras RNN.

Этот слой поддерживает маскирование входных данных с переменным количеством временных шагов

Для того, чтобы передать последовательность переменной длины в LSTM, размер временных шагов должен быть None . Например

 model = Sequential()
model.add(LSTM(32, input_shape=(None, 10)))