Spec-Zone.ru › TensorFlow 2.9

tf.keras.layers.LSTM

Просмотреть исходный код на GitHub

Слой долговременной краткосрочной памяти — Hochreiter 1997.

Наследует от: 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
)

Подробную информацию об использовании API RNN см. в руководстве по API Keras RNN.

В зависимости от доступного оборудования и ограничений во время выполнения, этот слой будет использовать различные реализации (на основе cuDNN или чисто TensorFlow), чтобы максимизировать производительность. Если доступна видеокарта, и все аргументы слоя удовлетворяют требования ядра cuDNN (подробности см. ниже), слой будет использовать быструю реализацию cuDNN.

Требования для использования реализации cuDNN:

  1. activation == tanh
  2. recurrent_activation == sigmoid
  3. recurrent_dropout == 0
  4. unroll является False
  5. use_bias является True
  6. В случае использования маскирования входные данные строго заполняются справа.
  7. Внешний контекст включает выполнение Eager.

Например:

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)
Аргументы
units Положительное целое число, размерность выходного пространства.
activation Функция активации для использования. По умолчанию: гиперболический тангенс (tanh). Если передать None, никакая активация не применяется (т.е. линейная активация: a(x) = x).
recurrent_activation Функция активации для использования на рекуррентном шаге. По умолчанию: сигмоида (sigmoid). Если передать None, никакая активация не применяется (т.е. линейная активация: a(x) = x).
use_bias Булево значение (по умолчанию True), используется ли вектор смещения.
kernel_initializer Инициализатор для матрицы весов kernel, используемой для линейного преобразования входных данных. По умолчанию: glorot_uniform.
recurrent_initializer Инициализатор для матрицы весов recurrent_kernel, используемой для линейного преобразования рекуррентного состояния. По умолчанию: orthogonal.
bias_initializer Инициализатор для вектора смещения. По умолчанию: zeros.
unit_forget_bias Булево значение (по умолчанию True). Если True, добавить 1 к смещению ворот забывания при инициализации. Установка в true также принудительно установит bias_initializer="zeros". Это рекомендуется в Jozefowicz et al..
kernel_regularizer Функция регуляризации, применяемая к матрице весов kernel. По умолчанию: None.
recurrent_regularizer Функция регуляризации, применяемая к матрице весов recurrent_kernel. По умолчанию: None.
bias_regularizer Функция регуляризации, применяемая к вектору смещения. По умолчанию: None.
activity_regularizer Функция регуляризации, применяемая к выходу слоя (его "активации"). По умолчанию: None.
kernel_constraint Функция ограничения, применяемая к матрице весов kernel. По умолчанию: None.
recurrent_constraint Функция ограничения, применяемая к матрице весов recurrent_kernel. По умолчанию: None.
bias_constraint Функция ограничения, применяемая к вектору смещения. По умолчанию: None.
dropout Число с плавающей запятой от 0 до 1. Доля единиц для отбрасывания при линейном преобразовании входных данных. По умолчанию: 0.
recurrent_dropout Число с плавающей запятой от 0 до 1. Доля единиц для отбрасывания при линейном преобразовании рекуррентного состояния. По умолчанию: 0.
return_sequences Булево значение. Возвращать ли последний выход в выходной последовательности или всю последовательность. По умолчанию: False.
return_state Булево значение. Возвращать ли последнее состояние дополнительно к выходу. По умолчанию: False.
go_backwards Булево значение (по умолчанию False). Если True, обрабатывать входную последовательность в обратном порядке и возвращать обращенную последовательность.
stateful Булево значение (по умолчанию False). Если True, последнее состояние для каждого образца с индексом i в пакете будет использоваться в качестве начального состояния для образца с индексом i в следующем пакете.
time_major Формат формы тензоров inputs и outputs. Если True, входы и выходы будут иметь форму [timesteps, batch, feature], в противном случае [batch, timesteps, feature]. Использование time_major = True немного эффективнее, потому что оно избегает транспонирования в начале и в конце вычисления RNN. Однако большинство данных TensorFlow имеет порядок по партиям, поэтому по умолчанию эта функция принимает вход и выдает выход в формате по партиям.
unroll Булево значение (по умолчанию False). Если True, сеть будет развернута, в противном случае будет использоваться символический цикл. Развертывание может ускорить RNN, хотя обычно более ресурсоёмко. Развертывание подходит только для коротких последовательностей.

Аргументы вызова:

  • inputs: Трехмерный тензор с формой [batch, timesteps, feature].
  • mask: Двоичный тензор формы [batch, timesteps], указывающий, должен ли быть замаскирован данный временной шаг (необязательно, по умолчанию None). Отдельная запись True указывает, что соответствующий временной шаг следует использовать, а запись False указывает, что соответствующий временной шаг следует игнорировать.
  • training: Булево значение Python, указывающее, должен ли слой вести себя в режиме обучения или в режиме вывода. Этот аргумент передается ячейке при её вызове. Это важно только при использовании dropout или recurrent_dropout (необязательно, по умолчанию None).
  • initial_state: Список тензоров начального состояния, которые должны передаваться в первую вызов ячейки (необязательно, по умолчанию None, что приводит к созданию заполненных нулями тензоров начального состояния).
Атрибуты
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

Методы

get_dropout_mask_for_cell

Просмотреть исходный код

get_dropout_mask_for_cell(
    inputs, training, count=1
)

Получить маску дропаута для входных данных ячейки RNN.

Создаст маску на основе контекста, если в кэше нет существующей маски. Если новая маска сгенерирована, она обновит кэш в ячейке.

Аргументы
inputs Тензор входных данных, форма которого будет использована для генерации маски дропаута.
training Булевый тензор, находится ли он в режиме обучения, дропаут будет пропущен в режиме не-обучения.
count Целое число, сколько масок дропаута будет сгенерировано. Это полезно для ячеек, у которых внутренние веса объединены вместе.
Возвращает
Список тензоров маски, сгенерированная или кэшированная маска на основе контекста.

get_recurrent_dropout_mask_for_cell

Просмотреть исходный код

get_recurrent_dropout_mask_for_cell(
    inputs, training, count=1
)

Получить маску рекуррентного дропаута для ячейки RNN.

Создаст маску на основе контекста, если в кэше нет существующей маски. Если новая маска сгенерирована, она обновит кэш в ячейке.

Аргументы
inputs Тензор входных данных, форма которого будет использована для генерации маски дропаута.
training Булевый тензор, находится ли он в режиме обучения, дропаут будет пропущен в режиме не-обучения.
count Целое число, сколько масок дропаута будет сгенерировано. Это полезно для ячеек, у которых внутренние веса объединены вместе.
Возвращает
Список тензоров маски, сгенерированная или кэшированная маска на основе контекста.

reset_dropout_mask

Просмотреть исходный код

reset_dropout_mask()

Сбросить кэшированные маски дропаута, если они есть.

Это важно для слоя RNN вызвать этот метод, чтобы очистить кэшированную маску перед вызовом cell.call(). Маска должна быть кэширована на протяжении временного шага в одном пакете, но не должна быть кэширована между пакетами. В противном случае это введёт необоснованный уклон к определённому индексу данных в пакете.

reset_recurrent_dropout_mask

Просмотреть исходный код

reset_recurrent_dropout_mask()

Сбросить кэшированные маски рекуррентного дропаута, если они есть.

Это важно для слоя RNN, чтобы вызвать это в его методе call(), чтобы кэшированная маска очищалась перед вызовом метода cell.call(). Маска должна кэшироваться на временном шаге в рамках одной партии, но не должна кэшироваться между партиями. В противном случае это введёт необоснованный предвзятый подход к определённому индексу данных в партии.

reset_states

Просмотреть исходный код

reset_states(
    states=None
)

Сбросьте записанные состояния для состоятельного слоя RNN.

Может быть использовано только тогда, когда слой RNN построен с stateful = True. Аргументы: states: Массивы NumPy, содержащие значения для начального состояния, которые будут переданы ячейке на первом временном шаге. Если значение равно None, будет создан нулевой массив NumPy на основе размера состояния ячейки.

Исключения
AttributeError Если слой RNN не является состоятельным.
ValueError Если размер партии слоя RNN неизвестен.
ValueError Если входной массив NumPy несовместим со состоянием слоя RNN, либо по размеру, либо по типу данных.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/layers/LSTM

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API