Não sei ao certo o que entendi da documentação oficial, que diz:
Retorna: um par (saídas, estado) em que:
outputs
: O tensor de saída RNN.Se
time_major == False
(default), este será um Tensor em forma:[batch_size, max_time, cell.output_size]
.Se
time_major == True
, este será um Tensor em forma:[max_time, batch_size, cell.output_size]
.Observe que, se
cell.output_size
houver uma tupla (possivelmente aninhada) de números inteiros ou objetos TensorShape, as saídas serão uma tupla com a mesma estrutura que cell.output_size, contendo tensores com formas correspondentes aos dados da formacell.output_size
.
state
: O estado final. Se cell.state_size for um int, isso será modelado[batch_size, cell.state_size]
. Se for um TensorShape, isso será modelado[batch_size] + cell.state_size
. Se for uma tupla (possivelmente aninhada) de ints ou TensorShape, será uma tupla com as formas correspondentes. Se as células estiverem LSTMCells, o estado será uma tupla contendo um LSTMStateTuple para cada célula.
output[-1
] É sempre (nos três tipos de células, isto é, RNN, GRU, LSTM) igual ao estado (segundo elemento da tupla de retorno)? Eu acho que a literatura em toda parte é liberal demais no uso do termo estado oculto. É o estado oculto nas três células a pontuação que sai (por que é chamado de oculto está além de mim, parece que o estado da célula no LSTM deve ser chamado de estado oculto porque não é exposto)?
fonte