tutorial - pytorch udacity
¿Cuál es la diferencia entre "oculto" y "salida" en PyTorch LSTM? (1)
Hice un diagrama. Los nombres siguen a los documentos de PyTorch , aunque num_layers
nombre de num_layers
a w
.
output
comprende todos los estados ocultos en la última capa ("último" en profundidad, no en el tiempo). (h_n, c_n)
comprende los estados ocultos después del último paso de tiempo, t = n , por lo que potencialmente podría introducirlos en otro LSTM.
La dimensión del lote no está incluida.
Tengo problemas para entender la documentación del módulo LSTM de PyTorch (y también RNN y GRU, que son similares). Respecto a las salidas, dice:
Salidas: salida, (h_n, c_n)
- salida (seq_len, batch, hidden_size * num_directions): tensor que contiene las características de salida (h_t) de la última capa del RNN, para cada t. Si se ha proporcionado una antorcha.nn.utils.rnn.PackedSequence como entrada, la salida también será una secuencia empaquetada.
- h_n (num_layers * num_directions, batch, hidden_size): tensor que contiene el estado oculto para t = seq_len
- c_n (num_layers * num_directions, batch, hidden_size): tensor que contiene el estado de la celda para t = seq_len
Parece que las variables de output
y h_n
dan los valores del estado oculto. ¿ h_n
solo proporciona de manera redundante el último paso de tiempo que ya está incluido en la output
, o hay algo más que eso?