У меня проблемы с пониманием параметра "временной шаг" в слое LSTM. Я нашел некоторые значения, но сейчас я очень смущен. Некоторые упоминают, что это объем данных на размер пакета, который входит в модель во время обучения. Другие, с другой стороны, говорят, что это число вхождений ячейки в слое LSTM, в то время как состояния передаются из одной ячейки в другую.
Дело в том, что у меня есть следующая форма обучающих данных:
(sequences, number of frames per sequence, width, height, channel = 1)
(2000, 5, 80, 80, 1)
Моя модель должна прогнозировать следующую последовательность кадров, в данном случае 5 будущих кадров. Модель состоит из вариационного автоэнкодера, сначала я использую сверточные 3D-слои для сжатия последовательностей из 5 кадров, затем я изменяю размер выходных данных, чтобы я мог войти в слой LSTM, который принимает только (пакетные, временные шаги, функции).
Model: "sequential"
____________________________________________________________________________________________________
Layer (type) Output Shape Param #
====================================================================================================
conv3d (Conv3D) (None, 2, 27, 27, 32) 19392
____________________________________________________________________________________________________
batch_normalization (BatchNormalization) (None, 2, 27, 27, 32) 128
____________________________________________________________________________________________________
conv3d_1 (Conv3D) (None, 1, 14, 14, 32) 2654240
____________________________________________________________________________________________________
batch_normalization_1 (BatchNormalization) (None, 1, 14, 14, 32) 128
____________________________________________________________________________________________________
conv3d_2 (Conv3D) (None, 1, 7, 7, 64) 3211328
____________________________________________________________________________________________________
batch_normalization_2 (BatchNormalization) (None, 1, 7, 7, 64) 256
____________________________________________________________________________________________________
flatten (Flatten) (None, 3136) 0
____________________________________________________________________________________________________
reshape (Reshape) (None, 4, 784) 0
____________________________________________________________________________________________________
lstm (LSTM) (None, 64) 217344
____________________________________________________________________________________________________
repeat_vector (RepeatVector) (None, 4, 64) 0
____________________________________________________________________________________________________
lstm_1 (LSTM) (None, 4, 64) 33024
____________________________________________________________________________________________________
time_distributed (TimeDistributed) (None, 4, 784) 50960
____________________________________________________________________________________________________
reshape_1 (Reshape) (None, 1, 7, 7, 64) 0
____________________________________________________________________________________________________
conv3d_transpose (Conv3DTranspose) (None, 2, 14, 14, 64) 6422592
____________________________________________________________________________________________________
batch_normalization_3 (BatchNormalization) (None, 2, 14, 14, 64) 256
____________________________________________________________________________________________________
conv3d_transpose_1 (Conv3DTranspose) (None, 4, 28, 28, 32) 5308448
____________________________________________________________________________________________________
batch_normalization_4 (BatchNormalization) (None, 4, 28, 28, 32) 128
____________________________________________________________________________________________________
conv3d_transpose_2 (Conv3DTranspose) (None, 8, 84, 84, 1) 19361
____________________________________________________________________________________________________
batch_normalization_5 (BatchNormalization) (None, 8, 84, 84, 1) 4
____________________________________________________________________________________________________
cropping3d (Cropping3D) (None, 8, 80, 80, 1) 0
____________________________________________________________________________________________________
cropping3d_1 (Cropping3D) (None, 5, 80, 80, 1) 0
====================================================================================================
Я наконец-то использовал слой RESHAPE, чтобы попасть в слой LSTM с формой (партия, 4, 784). Другими словами, я назвал timestpe = 4. Я думаю, что это должно быть 5, или не обязательно должно быть равно числу кадров, которые я хочу предсказать.
Каково истинное значение временного шага в этом случае ? Нужно ли упорядочивать значения моих слоев? Я очень ценю вашу поддержку.
С другой стороны, я имею в виду применение сверточных слоев к каждому кадру, и уже не ко всей 5-кадровой последовательности, а по кадрам, а затем подключите выходы сверточные слои со слоями LSTM, наконец, соединяют выходные состояния слоев LSTM каждого кадра, соблюдая порядок кадров, в этом случае я рассматриваю использование timestpe = 1.