tutorial seq2seq neural network guide example tensorflow recurrent-neural-network

neural - tensorflow seq2seq



¿Cuál es la diferencia entre tensorflow dynamic_rnn y rnn? (2)

Hay varias clases en tf.nn que se relacionan con RNN. En los ejemplos que encuentro en la red, tf.nn.dynamic_rnn y tf.nn.rnn parecen usarse indistintamente o al menos no puedo entender por qué se usa uno en lugar del otro. ¿Cuál es la diferencia?


De RNNs en Tensorflow, una guía práctica y características indocumentadas por Denny Britz, publicado el 21 de agosto de 2016.

tf.nn.rnn crea un gráfico desenrollado para una longitud de RNN fija. Esto significa que si llama a tf.nn.rnn con entradas que tienen 200 pasos de tiempo, está creando un gráfico estático con 200 pasos de RNN. Primero, la creación del gráfico es lenta. En segundo lugar, no puedes pasar secuencias más largas (> 200) de las que has especificado originalmente.

tf.nn.dynamic_rnn resuelve esto. Utiliza un ciclo tf.While para construir dinámicamente el gráfico cuando se ejecuta. Eso significa que la creación de gráficos es más rápida y puede alimentar lotes de tamaño variable.


Son casi lo mismo, pero hay una pequeña diferencia en la estructura de entrada y salida. De la documentación:

tf.nn.dynamic_rnn

Esta función es funcionalmente idéntica a la función rnn anterior, pero> realiza el desenrollamiento completamente dinámico de las entradas.

A diferencia de rnn , las entradas de entrada no son una lista de Tensors de Python, una para cada cuadro. En cambio, las entradas pueden ser un único Tensor donde el tiempo máximo es la primera o la segunda dimensión (ver el parámetro time_major ). Alternativamente, puede ser una tupla (posiblemente anidada) de Tensors, cada una de ellas tiene dimensiones coincidentes de lote y tiempo. El resultado correspondiente es un único Tensor que tiene el mismo número de pasos de tiempo y tamaño de lote, o una tupla (posiblemente anidada) de dichos tensores, que coincide con la estructura anidada de cell.output_size .

Para más detalles, explore la fuente .