Spec-Zone.ru › TensorFlow 1.15

tf.compat.v2.keras.layers.GRU

Узел с управляемыми обратными связями — Cho и др. 2014.

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

tf.compat.v2.keras.layers.GRU(
    units, activation='tanh', recurrent_activation='sigmoid', use_bias=True,
    kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal',
    bias_initializer='zeros', 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, unroll=False,
    time_major=False, reset_after=True, **kwargs
)

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

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

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

Существуют два варианта реализации GRU. По умолчанию используется вариант, основанный на v3, и в нём применяется управляющая функция к скрытому состоянию перед матричным умножением. Другой вариант основан на оригинале и порядок операций изменён.

Второй вариант совместим с CuDNNGRU (только для видеокарт) и позволяет проводить вычисления на процессоре. Таким образом, у него есть отдельные смещения для kernel и recurrent_kernel. Для использования этого варианта установите 'reset_after'=True и recurrent_activation='sigmoid'.

Аргументы
units Положительное целое число, размерность выходного пространства.
activation Функция активации для использования. По умолчанию: гиперболический тангенс (tanh). Если вы передадите None, активация не применяется (т.е. применяется линейная активация: a(x) = x).
recurrent_activation Функция активации для использования на рекуррентном шаге. По умолчанию: сигмоида (sigmoid). Если вы передадите None, активация не применяется (т.е. применяется линейная активация: a(x) = x).
use_bias Булево значение, указывает, использует ли слой вектор смещений.
kernel_initializer Инициализатор матрицы весов kernel, используемой для линейного преобразования входных данных.
recurrent_initializer Инициализатор матрицы весов recurrent_kernel, используемой для линейного преобразования рекуррентного состояния.
bias_initializer Инициализатор вектора смещений.
kernel_regularizer Функция регуляризации, применяемая к матрице весов kernel .
recurrent_regularizer Функция регуляризации, применяемая к матрице весов recurrent_kernel .
bias_regularizer Функция регуляризации, применяемая к вектору смещений.
activity_regularizer Функция регуляризации, применяемая к выходу слоя (его "активации").
kernel_constraint Функция ограничения, применяемая к матрице весов kernel .
recurrent_constraint Функция ограничения, применяемая к матрице весов recurrent_kernel .
bias_constraint Функция ограничения, применяемая к вектору смещений.
dropout Значение с плавающей точкой от 0 до 1. Доля единиц, которые необходимо отбросить для линейного преобразования входных данных.
recurrent_dropout Значение с плавающей точкой от 0 до 1. Доля единиц, которые необходимо отбросить для линейного преобразования рекуррентного состояния.
implementation Режим реализации, либо 1, либо 2. Режим 1 будет структурировать операции как большее количество меньших скалярных произведений и сложений, в то время как режим 2 будет объединять их в меньше, но более крупные операции. Эти режимы будут иметь разные профили производительности на разных устройствах и для разных применений.
return_sequences Булево значение. Возвращает ли слой только последний вывод в последовательности вывода, или всю последовательность.
return_state Булево значение. Возвращает ли слой последнее состояние помимо вывода.
go_backwards Булево значение (по умолчанию False). Если True, обрабатывает входную последовательность в обратном порядке и возвращает обращенную последовательность.
stateful Булево значение (по умолчанию False). Если True, последнее состояние для каждого образца с индексом i в пачке будет использоваться в качестве начального состояния для образца с индексом i в следующей пачке.
unroll Булево значение (по умолчанию False). Если True, сеть будет развернута, иначе будет использоваться символический цикл. Развертывание может ускорить RNN, хотя оно, как правило, более ресурсоёмкое. Развертывание подходит только для коротких последовательностей.
reset_after Конвенция GRU (применять ли управляющую функцию после или до матричного умножения). False = "перед", True = "после" (по умолчанию и совместимо с CuDNN).

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

  • inputs: 3D тензор.
  • mask: Бинарный тензор формы (samples, 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
reset_after
states
units
use_bias

Методы

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
)

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

reset_states

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

reset_states(
    states=None
)

© 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/compat/v2/keras/layers/GRU

Spec-Zone.ru

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