Что значит "развернуть RNN динамически". Я видел это специально упомянутое в исходном коде Tensorflow, но я ищу концептуальное объяснение, которое распространяется на RNN в целом.
В методе tenorflow rnn
он документирован:
Если предоставляется вектор
sequence_length
, динамический расчет выполнено. Этот метод расчета не вычисляет шаги RNN мимо максимальной длины последовательности мини-бара (таким образом, сохранение вычислительное время),
Но в методе dynamic_rnn
он упоминает:
Параметр
sequence_length
является необязательным и используется для состояния копирования и вывода нулевого выхода, когда прошло через элемент пакетного элемента длина последовательности. Так что это больше для правильности, чем производительность, в отличие отrnn()
.
Значит ли это, что rnn
более эффективен для последовательностей переменной длины? Какова концептуальная разница между dynamic_rnn
и rnn
?