Spec-Zone.ru › TensorFlow 1.15

tf.keras.experimental.PeepholeLSTMCell

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

Эквивалентно классу LSTMCell, но добавляет петельчатые соединения.

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

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительных сведений.

tf.compat.v1.keras.experimental.PeepholeLSTMCell, `tf.compat.v2.keras.experimental.PeepholeLSTMCell`

tf.keras.experimental.PeepholeLSTMCell(
    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, kernel_constraint=None,
    recurrent_constraint=None, bias_constraint=None, dropout=0.0,
    recurrent_dropout=0.0, implementation=1, **kwargs
)

Петельчатые соединения позволяют воротам использовать предыдущее внутреннее состояние, а также предыдущее скрытое состояние (к чему ограничивается LSTMCell). Это позволяет PeepholeLSTMCell лучше усваивать точные временные интервалы по сравнению с LSTMCell.

Из Gers и др.:

"Мы обнаружили, что LSTM, дополненный «петельчатыми соединениями» от его внутренних ячеек к его мультипликативным воротам, может научиться тонкому различию между последовательностями импульсов, отстоящих друг от друга на 50 или 49 временных шагов, без помощи каких-либо коротких примеров для обучения."

Реализация петельчатых соединений основана на:

Архитектуры рекуррентных нейронных сетей с долговременной краткосрочной памятью для масштабируемых акустических моделей.

Пример:

# Create 2 PeepholeLSTMCells
peephole_lstm_cells = [PeepholeLSTMCell(size) for size in [128, 256]]
# Create a layer composed sequentially of the peephole LSTM cells.
layer = RNN(peephole_lstm_cells)
input = keras.Input((timesteps, input_dim))
output = layer(input)

Методы

get_dropout_mask_for_cell

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

get_dropout_mask_for_cell(
    inputs, training, count=1
)

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

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

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

get_initial_state

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

get_initial_state(
    inputs=None, batch_size=None, dtype=None
)

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(). Маска должна кэшироваться на протяжении временного шага в пределах одной партии, но не должна кэшироваться между партиями. В противном случае это приведёт к необоснованному смещению против определённого индекса данных в партии.

© 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/r1.15/api_docs/python/tf/keras/experimental/PeepholeLSTMCell

Spec-Zone.ru

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