2017-03-29 1 views
3

Je suis confus au sujet de ce RNN dynamique (c'est-à-dire dynamic_rnn). Il renvoie une sortie et un état dans TensorFlow. Quels sont ces états et résultats? Qu'est-ce qui est dynamique dans un RNN dynamique, dans TensorFlow?Qu'est-ce qu'un RNN dynamique dans TensorFlow?

Répondre

5

Les RNN dynamiques permettent des longueurs de séquence variables. Vous pouvez avoir une forme d'entrée (batch_size, max_sequence_length), mais cela vous permettra d'exécuter le RNN pour le nombre correct de pas de temps sur les séquences qui sont plus courtes que max_sequence_length. Par contre, il existe des RNN statiques, qui s'attendent à exécuter la totalité de la longueur RNN fixe. Il y a des cas où vous préférerez peut-être faire cela, par exemple si vous remboursez vos entrées à max_sequence_length de toute façon.

En résumé, dynamic_rnn est généralement ce que vous voulez pour les données séquentielles de longueur variable. Il a un paramètre sequence_length, et c'est votre ami.

+1

qu'est-ce que l'état et la sortie? peux-tu expliquer? – xlax

1

Alors que la réponse d'AlexDelPiero était ce que je recherchais, la question originale était différente. Vous pouvez jeter un oeil à cette description détaillée sur les LSTM et l'intuition derrière eux. LSTM est l'exemple le plus courant d'un RNN.

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

La réponse courte est: l'état est un détail interne qui est passé d'un à l'autre timestep. La sortie est un tenseur des sorties à chaque pas de temps. Vous devez généralement passer toutes les sorties à la couche RNN suivante ou à la dernière sortie de la dernière couche RNN. Pour obtenir la dernière sortie, vous pouvez utiliser la sortie [:, - 1 ,:]