Hay algunas opciones, desde hacky hasta elegantes (en mi opinión):
- Puede usar el llamado enfoque de desempaquetado , donde para cada longitud de secuencia, tiene una réplica de su modelo. Deben compartir todos los parámetros, pero tener un número diferente de pasos recurrentes. Ahora puede entrenar / probar / hacer lo que quiera siempre que elija la réplica de modelo correcta para trabajar con la secuencia correspondiente.
- Puede enmascarar, es decir, codifica a priori la secuencia más larga con la que está dispuesto a trabajar y crea un modelo con esa cantidad de pasos. Luego, cuando tenga secuencias más cortas para entrenar o probar, acomódelas con algunos tokens especiales y realice algunos pasos adicionales en su gráfico TF para manejarlos.
- Puede usar las características dinámicas RNN de Tensorflow. Manejarán secuencias de longitud variable sin desperdiciar su memoria, ni lo obligarán a manejar máscaras molestas.
tf.while_loop
es el camino a seguir si quieres construir cosas de manera flexible desde cero. Si quieres una vida fácil incorporada, también puedes considerar probartf.nn.dynamic_rnn
.