Пакетирование динамически последовательностей переменной длины в рекуррентных нейронных сетях

#python #tensorflow #machine-learning #deep-learning #pytorch

Вопрос:

В контексте рекуррентных нейронных сетей меня интересует пакетирование динамических последовательностей переменной длины для минимизации вычислений. Я знаю, что популярные пакеты, такие как pytorch и tensorflow, обладают этой функциональностью ( pack_padded_sequence и ragged_tensors соответственно), но меня интересует случай, когда длина последовательностей заранее неизвестна и вместо этого зависит от некоторых промежуточных вычислений. Примером может быть декодер предложений переменной длины, где мы хотим останавливаться только при <eos> выводе тега. В более общем плане я думаю о следующей форме прямого прохода с учетом некоторого простого условия (что-то вроде if f(hidden) == <eos> ):

 hidden <- initialise hidden state
for x in input_sequence:
   hidden = RNN(x, hidden)
   if hidden == condition:
      break
 

Мой вопрос в том, может ли вышеуказанная операция в настоящее время быть обработана (или иным образом эффективно вычислена) в любых существующих пакетах глубокого обучения (pytorch, tensorflow, DyNet)? А если нет, ошибаюсь ли я, думая, что это можно было бы реализовать (на основе этого или этого)?