Spec-Zone.ru › TensorFlow 2.3

tf.keras.experimental.PeepholeLSTMCell

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

Эквивалентно классу LSTMCell, но добавляет соединения peephole.

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

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

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

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

tf.compat.v1.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
)

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

Из Gers et al., 2002:

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

Реализация peephole основана на:

Sak et al., 2014

Пример:

# 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/r2.3/api_docs/python/tf/keras/experimental/PeepholeLSTMCell

Spec-Zone.ru

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