Spec-Zone.ru › TensorFlow

tf.keras.layers.GRU

Управляемый рекуррентный блок — Cho et al., 2014.

Наследует классы: RNN, Layer, Operation

tf.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,
    seed=None,
    return_sequences=False,
    return_state=False,
    go_backwards=False,
    stateful=False,
    unroll=False,
    reset_after=True,
    use_cudnn='auto',
    **kwargs
)

Используется в блокнотах

Используется в руководстве Используется в руководствах
  • Работа со слоями предварительной обработки
  • Перенос обучения для классификации видео с MoViNet
  • Нейронный машинный перевод с механизмом внимания
  • Рекомендации фильмов: поиск с использованием последовательной модели
  • Генерация текста с помощью RNN

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

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

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

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

Второй вариант совместим с CuDNNGRU (только для GPU) и поддерживает вывод на CPU. Поэтому для kernel и recurrent_kernel используются отдельные смещения. Чтобы использовать этот вариант, задайте reset_after=True и recurrent_activation='sigmoid'.

Например:

inputs = np.random.random((32, 10, 8))
gru = keras.layers.GRU(4)
output = gru(inputs)
output.shape
(32, 4)
gru = keras.layers.GRU(4, return_sequences=True, return_state=True)
whole_sequence_output, final_state = gru(inputs)
whole_sequence_output.shape
(32, 10, 4)
final_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".
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.
seed Начальное значение для генератора случайных чисел, используемого при dropout.
return_sequences Логическое значение. Определяет, следует ли возвращать последний выходной элемент последовательности или всю последовательность. По умолчанию: False.
return_state Логическое значение. Определяет, следует ли возвращать последнее состояние вместе с выходными данными. По умолчанию: False.
go_backwards Логическое значение (по умолчанию False). Если True, входная последовательность обрабатывается в обратном направлении, а возвращается перевёрнутая последовательность.
stateful Логическое значение (по умолчанию: False). Если True, последнее состояние каждого элемента с индексом i в пакете будет использоваться как начальное состояние для элемента с индексом i в следующем пакете.
unroll Логическое значение (по умолчанию: False). Если True, сеть будет развёрнута; в противном случае будет использоваться символьный цикл. Развёртывание может ускорить работу RNN, но обычно требует больше памяти. Развёртывание подходит только для коротких последовательностей.
reset_after Соглашение GRU (применять ли шлюз сброса до или после умножения матриц). False — это "before", True — это "after" (значение по умолчанию, совместимое с cuDNN).
use_cudnn Определяет, следует ли использовать реализацию на основе cuDNN. "auto" попытается использовать cuDNN, если это возможно, а в противном случае перейдёт к реализации по умолчанию.
Аргументы вызова
inputs Тензор ранга 3 с формой (batch, timesteps, feature).
mask Двоичный тензор формы (samples, timesteps), указывающий, следует ли маскировать данный временной шаг (необязательный аргумент). Элемент True указывает, что соответствующий временной шаг следует использовать, а элемент False — что его следует игнорировать. По умолчанию: None.
training Логическое значение Python, указывающее, должен ли слой работать в режиме обучения или вывода. Этот аргумент передаётся ячейке при вызове. Он имеет значение только при использовании dropout или recurrent_dropout (необязательный аргумент). По умолчанию: None.
initial_state Список тензоров начального состояния, передаваемых при первом вызове ячейки (необязательный аргумент; None приводит к созданию тензоров начального состояния, заполненных нулями). По умолчанию: None.
Атрибуты
activation
bias_constraint
bias_initializer
bias_regularizer
dropout
input Получает входной тензор или тензоры символьной операции.

Возвращает только тензор или тензоры, соответствующие первому вызову операции.

kernel_constraint
kernel_initializer
kernel_regularizer
output Получает выходной тензор или тензоры слоя.

Возвращает только тензор или тензоры, соответствующие первому вызову операции.

recurrent_activation
recurrent_constraint
recurrent_dropout
recurrent_initializer
recurrent_regularizer
reset_after
units
use_bias

Методы

from_config

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

@classmethod
from_config(
    config
)

Создаёт слой на основе его конфигурации.

Этот метод является обратным по отношению к get_config и позволяет создать такой же слой из словаря конфигурации. Он не обрабатывает связи между слоями (это делает Network) и веса (это делает set_weights).

Аргументы
config Словарь Python, обычно являющийся результатом вызова get_config.
Возвращает
Экземпляр слоя.

get_initial_state

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

get_initial_state(
    batch_size
)

inner_loop

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

inner_loop(
    sequences, initial_state, mask, training=False
)

reset_state

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

reset_state()

reset_states

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

reset_states()

symbolic_call

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

symbolic_call(
    *args, **kwargs
)

© 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/api_docs/python/tf/keras/layers/GRU

Spec-Zone.ru

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