Ответ 1
Итак, в основном TimeDistributedDense
был введен сначала в ранних версиях Keras, чтобы применить шаг Dense
поэтапно к последовательностям. TimeDistributed
- это оболочка Keras, которая позволяет получить любой статический (непоследовательный) слой и применять его последовательно. Так, если, например, ваш слой принимает в качестве входного сигнала что-то из формы (d1, .., dn)
благодаря обертке TimeDistributed
, ваш слой может принять ввод с формой (sequence_len, d1, ..., dn)
, применяя слой, предоставленный X[0,:,:,..,:]
, X[1,:,...,:]
, ...
, X[len_of_sequence,:,...,:]
.
Примером такого использования может быть использование, например, предварительно сверлильный сверточный слой к короткому видеоклипу, применяя TimeDistributed(conv_layer)
, где conv_layer
применяется к каждому кадру клипа. Он производит последовательность выходов, которые затем могут быть потреблены следующим повторным или TimeDistributed
уровнем.
Хорошо знать, что использование TimeDistributedDense
обесценивается, и лучше использовать TimeDistributed(Dense)
.