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:

  1. activation == tanh
  2. recurrent_activation == sigmoid
  3. recurrent_dropout == 0
  4. unroll es False
  5. use_bias es True
  6. Las entradas, si se utilizan enmascaramiento, se rellenan estrictamente a la derecha.
  7. 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 es None).
  • 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 si dropout o recurrent_dropout se utiliza (opcional, predeterminado en None).
  • initial_state: Lista de tensores de estado inicial que se pasarán a la primera llamada de la celda (opcional, por defecto es None 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

Ver fuente

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

Ver fuente

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

Ver fuente

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

Ver fuente

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

Ver fuente

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.