tensorflow - neural - En Keras, ¿qué es exactamente lo que estoy configurando cuando creo una capa ''LSTM'' con N ''unidades''?
lstm tensorflow (1)
Puede consultar esta pregunta para obtener más información, aunque se basa en la API Keras-1.x.
Básicamente, la unit
significa la dimensión de las celdas internas en LSTM. Debido a que en LSTM, la dimensión de la celda interna (C_t y C_ {t-1} en el gráfico), la máscara de salida (o_t en el gráfico) y el estado oculto / de salida (h_t en el gráfico) deben tener la misma dimensión, por lo tanto La dimensión de la salida también debe ser unit
-longitud.
Y LSTM
en Keras solo define exactamente un bloque LSTM, cuyas celdas son de unit
longitud. Si establece return_sequence=True
, devolverá algo con forma: (batch_size, timespan, unit)
. Si es false
, simplemente devuelve la última salida en forma (batch_size, unit)
.
En cuanto a la entrada, debe proporcionar una entrada para cada marca de tiempo. Básicamente, la forma es similar a (batch_size, timespan, input_dim)
, donde input_dim
puede ser diferente de la unit
. Si solo desea proporcionar información en el primer paso, simplemente puede rellenar sus datos con ceros en otros pasos de tiempo.
Los primeros argumentos en una capa Dense
normal también son units
, y es el número de neuronas / nodos en esa capa. Sin embargo, una unidad LSTM estándar se parece a lo siguiente:
(Esta es una versión revisada de " Understanding LSTM Networks ")
En Keras, cuando creo un objeto LSTM como este LSTM(units=N, ...)
, ¿estoy creando realmente N
de estas unidades LSTM? ¿O es el tamaño de las capas de "Red neuronal" dentro de la unidad LSTM, es decir, las W
en las fórmulas? ¿O es otra cosa?
Para el contexto, estoy trabajando en base a este código de ejemplo .
La siguiente es la documentación: https://keras.io/layers/recurrent/
Dice:
Unidades: entero positivo, dimensionalidad del espacio de salida.
Me hace pensar que es el número de salidas del objeto "capa" de Keras LSTM. Lo que significa que la siguiente capa tendrá N
entradas. ¿Eso significa que realmente existe N
de estas unidades LSTM en la capa LSTM, o tal vez que se ejecuta exactamente una unidad LSTM para N
iteraciones que emiten N
de estos valores h[t]
, desde, por ejemplo, h[tN]
hasta h[t]
?
Si solo define el número de salidas, ¿significa que la entrada aún puede ser, digamos, solo una , o tenemos que crear manualmente las variables de entrada retrasadas x[tN]
a x[t]
, una para cada unidad LSTM definida por las units=N
argumento?
Mientras escribo esto, se me ocurre lo que hace el argumento return_sequences
. Si se establece en True
todas las N
salidas pasan a la siguiente capa, mientras que si se establece en False
, solo pasa la última salida h[t]
a la siguiente capa. Estoy en lo cierto