Verificamos de forma completamente cada una de las reseñas en nuestra página web con el objetivo de enseñarte en todo momento información con la mayor veracidad y actual.
Solución:
Puede consultar esta pregunta para obtener más información, aunque se basa en la API de Keras-1.x.
Básicamente, el 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 el MISMO dimensión, por lo tanto, la dimensión de su salida debe ser unit
-longitud también.
Y LSTM
en Keras solo definen exactamente un bloque LSTM, cuyas celdas son de unit
-longitud. si configuras return_sequence=True
devolverá algo con forma: (batch_size, timespan, unit)
. Si false
luego solo 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 como (batch_size, timespan, input_dim)
dónde input_dim
puede ser diferente de la unit
. Si solo desea proporcionar una entrada en el primer paso, simplemente puede rellenar sus datos con ceros en otros pasos de tiempo.
¿Significa eso que realmente existe N de estas unidades LSTM en la capa LSTM, o tal vez que exactamente una unidad LSTM se ejecuta para N iteraciones que generan N de estas h?[t] valores, de, digamos, h[t-N] hasta h[t]?
Primero es true. En esa capa Keras LSTM hay N unidades o celdas LSTM.
keras.layers.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0, implementation=1, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False)
Si planea crear una capa LSTM simple con 1 celda, terminará con esto:
Y este sería tu modelo.
N=1
model = Sequential()
model.add(LSTM(N))
Para los otros modelos necesitarías N>1
Cuántas instancias de “cadenas LSTM”
La explicación intuitiva adecuada del parámetro ‘unidades’ para las redes neuronales recurrentes de Keras es que con units=1
obtienes un RNN como se describe en los libros de texto, y con units=n
obtienes una capa que consiste en n
copias independientes de dicho RNN: tendrán una estructura idéntica, pero como se inicializarán con diferentes pesos, calcularán algo diferente.
Alternativamente, puede considerar que en un LSTM con units=1
la key los valores (f, i, C, h) son escalares; y con units=n
serán vectores de longitud n
.