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
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.
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 ,:]
qu'est-ce que l'état et la sortie? peux-tu expliquer? – xlax