Je ne suis pas sûr de ce que je comprends de la documentation officielle, qui dit:
Renvoie: Une paire (sorties, état) où:
outputs
: Le tenseur de sortie RNN.Si
time_major == False
( par défaut), ce sera une forme Tensor:[batch_size, max_time, cell.output_size]
.Si
time_major == True
, ce sera une forme Tensor:[max_time, batch_size, cell.output_size]
.Remarque: s'il
cell.output_size
s'agit d'un tuple (éventuellement imbriqué) d'entiers ou d'objets TensorShape, les sorties seront un tuple ayant la même structure que cell.output_size, contenant des tenseurs ayant des formes correspondant aux données de forme danscell.output_size
.
state
: L'état final. Si cell.state_size est un int, il sera mis en forme[batch_size, cell.state_size]
. S'il s'agit d'une TensorShape, celle-ci sera mise en forme[batch_size] + cell.state_size
. S'il s'agit d'un tuple (éventuellement imbriqué) d'ints ou de TensorShape, ce sera un tuple ayant les formes correspondantes. Si les cellules sont des cellules LSTMC, l'état sera un tuple contenant un LSTMStateTuple pour chaque cellule.
output[-1
] Est-il toujours (dans les trois types de cellules, c'est-à-dire RNN, GRU, LSTM) égal à l'état (deuxième élément du tuple de retour)? Je suppose que la littérature partout dans le monde est trop libérale dans l'utilisation du terme état caché. Est-ce que l'état caché dans les trois cellules est le score qui sort (pourquoi il est appelé caché me dépasse, il semblerait que l'état de cellule dans LSTM devrait être appelé l'état caché car il n'est pas exposé)?
la source