No estoy seguro de lo que entiendo de la documentación oficial, que dice:
Devuelve: Un par (salidas, estado) donde:
outputs
: El tensor de salida RNN.Si
time_major == False
(por defecto), esta será la forma de un tensor:[batch_size, max_time, cell.output_size]
.Si
time_major == True
, esta será una forma Tensor:[max_time, batch_size, cell.output_size]
.Tenga en cuenta que si
cell.output_size
es una tupla (posiblemente anidada) de enteros u objetos TensorShape, las salidas serán una tupla que tenga la misma estructura que cell.output_size, que contenga Tensores con formas correspondientes a los datos de formacell.output_size
.
state
: El estado final. Si cell.state_size es un int, se formará[batch_size, cell.state_size]
. Si es un TensorShape, se formará[batch_size] + cell.state_size
. Si se trata de una tupla (posiblemente anidada) de entradas o TensorShape, será una tupla con las formas correspondientes. Si las celdas son LSTMCells, el estado será una tupla que contiene una LSTMStateTuple para cada celda.
¿Es output[-1
] siempre (en los tres tipos de celdas, es decir, RNN, GRU, LSTM) igual al estado (segundo elemento de la tupla de retorno)? Supongo que la literatura en todas partes es demasiado liberal en el uso del término estado oculto. ¿Es el estado oculto en las tres celdas el resultado que sale?
fuente