Ver fuente en GitHub |
Capa de memoria a corto plazo – Hochreiter 1997.
Hereda de: LSTM
, RNN
, Layer
, Module
tf.keras.layers.LSTM( units, activation='tanh', recurrent_activation='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, return_sequences=False, return_state=False, go_backwards=False, stateful=False, time_major=False, unroll=False,**kwargs )
Ver la guía de la API de Keras RNN para obtener detalles sobre el uso de la API RNN.
Según las restricciones y el hardware de tiempo de ejecución disponible, esta capa elegirá diferentes implementaciones (basadas en cuDNN o pure-TensorFlow) para maximizar el rendimiento. Si hay una GPU disponible y todos los argumentos de la capa cumplen con los requisitos del kernel de CuDNN (consulte los detalles a continuación), la capa utilizará una implementación rápida de cuDNN.
Los requisitos para utilizar la implementación cuDNN son:
activation
==tanh
recurrent_activation
==sigmoid
recurrent_dropout
== 0unroll
esFalse
use_bias
esTrue
- Las entradas, si se utilizan enmascaramiento, se rellenan estrictamente a la derecha.
- La ejecución ávida está habilitada en el contexto más externo.
Por ejemplo:
inputs = tf.random.normal([32,10,8]) lstm = tf.keras.layers.LSTM(4) output = lstm(inputs)print(output.shape)(32,4) lstm = tf.keras.layers.LSTM(4, return_sequences=True, return_state=True) whole_seq_output, final_memory_state, final_carry_state = lstm(inputs)print(whole_seq_output.shape)(32,10,4)print(final_memory_state.shape)(32,4)print(final_carry_state.shape)(32,4)
Argumentos | |
---|---|
units |
Entero positivo, dimensionalidad del espacio de salida. |
activation |
Función de activación a utilizar. Predeterminado: tangente hiperbólica (tanh ). Si pasa None , no se aplica ninguna activación (es decir, activación “lineal”: a(x) = x ). |
recurrent_activation |
Función de activación a utilizar para el paso recurrente. Predeterminado: sigmoide (sigmoid ). Si pasa None , no se aplica ninguna activación (es decir, activación “lineal”: a(x) = x ). |
use_bias |
Booleano (predeterminado True ), si la capa utiliza un vector de sesgo. |
kernel_initializer |
Inicializador para el kernel matriz de ponderaciones, utilizada para la transformación lineal de las entradas. Defecto: glorot_uniform . |
recurrent_initializer |
Inicializador para el recurrent_kernel matriz de ponderaciones, utilizada para la transformación lineal del estado recurrente. Defecto: orthogonal . |
bias_initializer |
Inicializador para el vector de polarización. Defecto: zeros . |
unit_forget_bias |
Booleano (predeterminado True ). Si es verdadero, agregue 1 al sesgo de la puerta de olvido en la inicialización. Establecerlo en verdadero también forzará bias_initializer="zeros" . Esto se recomienda en Jozefowicz y col.. |
kernel_regularizer |
Función de regularizador aplicada al kernel matriz de pesos. Defecto: None . |
recurrent_regularizer |
Función de regularizador aplicada al recurrent_kernel matriz de pesos. Defecto: None . |
bias_regularizer |
Función de regularizador aplicada al vector de sesgo. Defecto: None . |
activity_regularizer |
Función de regularizador aplicada a la salida de la capa (su “activación”). Defecto: None . |
kernel_constraint |
Función de restricción aplicada a la kernel matriz de pesos. Defecto: None . |
recurrent_constraint |
Función de restricción aplicada a la recurrent_kernel matriz de pesos. Defecto: None . |
bias_constraint |
Función de restricción aplicada al vector de sesgo. Defecto: None . |
dropout |
Flotar entre 0 y 1. Fracción de las unidades a eliminar para la transformación lineal de las entradas. Predeterminado: 0. |
recurrent_dropout |
Flota entre 0 y 1. Fracción de las unidades a eliminar para la transformación lineal del estado recurrente. Predeterminado: 0. |
return_sequences |
Booleano. Ya sea para devolver la última salida. en la secuencia de salida o en la secuencia completa. Defecto: False . |
return_state |
Booleano. Si devolver el último estado además de la salida. Defecto: False . |
go_backwards |
Booleano (predeterminado False ). Si es Verdadero, procese la secuencia de entrada hacia atrás y devuelva la secuencia inversa. |
stateful |
Booleano (predeterminado False ). Si es Verdadero, el último estado de cada muestra en el índice i en un lote se utilizará como estado inicial para la muestra del índice i en el siguiente lote. |
time_major |
El formato de forma del inputs y outputs tensores. Si es Verdadero, las entradas y salidas estarán en forma [timesteps, batch, feature] , mientras que en el caso Falso, será [batch, timesteps, feature] . Utilizando time_major = True es un poco más eficiente porque evita transposiciones al principio y al final del cálculo RNN. Sin embargo, la mayoría de los datos de TensorFlow son por lotes principales, por lo que, de forma predeterminada, esta función acepta entradas y emite resultados en forma de lotes principales. |
unroll |
Booleano (predeterminado False ). Si es Verdadero, la red se desenrollará; de lo contrario, se utilizará un bucle simbólico. Desenrollar puede acelerar un RNN, aunque tiende a consumir más memoria. El desenrollado solo es adecuado para secuencias cortas. |
Argumentos de llamada:
inputs
: Un tensor 3D con forma[batch, timesteps, feature]
.mask
: Tensor binario de forma[batch, timesteps]
que indica si un intervalo de tiempo determinado debe enmascararse (opcional, por defecto esNone
).training
: Python booleano que indica si la capa debe comportarse en modo de entrenamiento o en modo de inferencia. Este argumento se pasa a la celda al llamarlo. Esto solo es relevante sidropout
orecurrent_dropout
se utiliza (opcional, predeterminado enNone
).initial_state
: Lista de tensores de estado inicial que se pasarán a la primera llamada de la celda (opcional, por defecto esNone
que causa la creación de tensores de estado inicial llenos de cero).
Atributos | |
---|---|
activation |
|
bias_constraint |
|
bias_initializer |
|
bias_regularizer |
|
dropout |
|
implementation |
|
kernel_constraint |
|
kernel_initializer |
|
kernel_regularizer |
|
recurrent_activation |
|
recurrent_constraint |
|
recurrent_dropout |
|
recurrent_initializer |
|
recurrent_regularizer |
|
states |
|
unit_forget_bias |
|
units |
|
use_bias |
Métodos
get_dropout_mask_for_cell
get_dropout_mask_for_cell( inputs, training, count=1)
Obtenga la máscara de abandono para la entrada de la celda RNN.
Creará una máscara basada en el contexto si no hay ninguna máscara en caché existente. Si se genera una nueva máscara, actualizará la caché en la celda.
Args | |
---|---|
inputs |
El tensor de entrada cuya forma se utilizará para generar una máscara de deserción. |
training |
Tensor booleano, ya sea que esté en modo de entrenamiento, el abandono se ignorará en el modo sin entrenamiento. |
count |
Int, cuántas máscaras de abandono se generarán. Es útil para la celda que tiene pesos internos fusionados. |
Devoluciones | |
---|---|
Lista de tensor de máscara, máscara generada o almacenada en caché según el contexto. |
get_recurrent_dropout_mask_for_cell
get_recurrent_dropout_mask_for_cell( inputs, training, count=1)
Obtenga la máscara de abandono recurrente para la celda RNN.
Creará una máscara basada en el contexto si no hay ninguna máscara en caché existente. Si se genera una nueva máscara, actualizará la caché en la celda.
Args | |
---|---|
inputs |
El tensor de entrada cuya forma se utilizará para generar una máscara de deserción. |
training |
Tensor booleano, ya sea que esté en modo de entrenamiento, el abandono se ignorará en el modo sin entrenamiento. |
count |
Int, cuántas máscaras de abandono se generarán. Es útil para la celda que tiene pesos internos fusionados. |
Devoluciones | |
---|---|
Lista de tensor de máscara, máscara generada o almacenada en caché según el contexto. |
reset_dropout_mask
reset_dropout_mask()
Restablezca las máscaras de abandono en caché, si las hay.
Esto es importante para que la capa RNN invoque esto en él. call()
método para que la máscara en caché se borre antes de llamar al cell.call()
. La máscara debe almacenarse en caché a lo largo del paso de tiempo dentro del mismo lote, pero no debe almacenarse en caché entre lotes. De lo contrario, introducirá un sesgo irrazonable contra cierto índice de datos dentro del lote.
reset_recurrent_dropout_mask
reset_recurrent_dropout_mask()
Restablezca las máscaras de abandono recurrente almacenadas en caché, si las hay.
Esto es importante para que la capa RNN invoque esto en su método call () para que la máscara en caché se borre antes de llamar a cell.call (). La máscara debe almacenarse en caché a lo largo del paso de tiempo dentro del mismo lote, pero no debe almacenarse en caché entre lotes. De lo contrario, introducirá un sesgo irrazonable contra cierto índice de datos dentro del lote.
reset_states
reset_states( states=None)
Restablezca los estados registrados para la capa RNN con estado.
Solo se puede usar cuando la capa RNN se construye con stateful
= True
. Args: states: matrices Numpy que contienen el valor para el estado inicial, que se enviará a la celda en el primer paso de tiempo. Cuando el valor es Ninguno, se creará una matriz numérica llena de cero en función del tamaño del estado de la celda.
Eleva | |
---|---|
AttributeError |
Cuando la capa RNN no tiene estado. |
ValueError |
Cuando se desconoce el tamaño del lote de la capa RNN. |
ValueError |
Cuando la matriz numérica de entrada no es compatible con el estado de la capa RNN, ya sea por tamaño o por tipo. |
Si te ha sido provechoso nuestro artículo, te agradeceríamos que lo compartas con el resto entusiastas de la programación y nos ayudes a dar difusión a esta información.