Spec-Zone.ru › TensorFlow 2.3

tf.keras.layers.LSTM

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

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

Наследуется от: LSTM

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, implementation=2, return_sequences=False,
    return_state=False, go_backwards=False, stateful=False, time_major=False,
    unroll=False, **kwargs
)

См. руководство по API Keras RNN для получения подробной информации об использовании API 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 execution в внешнем контексте.

Например:

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.
implementation Режим реализации, либо 1, либо 2. Режим 1 будет структурировать свои операции как большее количество меньших скалярных произведений и добавлений, в то время как режим 2 будет объединять их в меньшее количество, но больших операций. Эти режимы будут иметь разные профили производительности на различных аппаратных средствах и для различных применений. По умолчанию: 2.
return_sequences Логическое значение. Возвращать ли последний выходной сигнал в последовательности вывода или всю последовательность. По умолчанию: False.
return_state Логическое значение. Возвращать ли последнее состояние, помимо вывода. По умолчанию: False.
go_backwards Логическое значение (по умолчанию False). Если True, обрабатывает последовательность входов в обратном порядке и возвращает обратную последовательность.
stateful Логическое значение (по умолчанию False). Если True, последнее состояние для каждого образца с индексом i в пакет будет использоваться в качестве начального состояния для образца с индексом i в последующем пакете.
time_major Формат формы тензоров inputs и outputs. Если True, входы и выходы будут иметь форму [timesteps, batch, feature], в случае False - [batch, timesteps, feature]. Использование time_major = True немного более эффективно, так как оно избегает транспонирования в начале и в конце вычисления RNN. Тем не менее, большинство данных TensorFlow имеют формат batch-major, поэтому по умолчанию эта функция принимает входные данные и выводит выходы в формате batch-major.
unroll Логическое значение (по умолчанию False). Если True, сеть будет развернута, иначе будет использоваться символический цикл. Развертывание может ускорить RNN, хотя оно, как правило, более ресурсоёмкое с точки зрения памяти. Развертывание подходит только для коротких последовательностей.

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

  • inputs: 3D тензор с формой [batch, timesteps, feature].
  • mask: Бинарный тензор с формой [batch, timesteps] , указывающий, должен ли быть замаскирован определённый шаг по времени (необязательно, по умолчанию None).
  • 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, чтобы вызвать это в методе call(), чтобы кэшированная маска очищалась перед вызовом 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, либо по размеру, либо по типу данных.

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

Spec-Zone.ru

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