Spec-Zone.ru › TensorFlow

tf.keras.layers.GRU

Управляемый рекуррентный блок (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 или собственные) для максимальной производительности. Если доступен графический процессор и все аргументы слоя соответствуют требованиям ядра cuDNN (см. подробности ниже), слой будет использовать быструю реализацию cuDNN при использовании бэкенда TensorFlow.

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

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

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

Второй вариант совместим с 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 is "before", True is "after" (по умолчанию и совместимо с cuDNN).
use_cudnn Использовать ли реализацию на основе cuDNN. "auto" попытается использовать cuDNN, если это возможно, и вернется к стандартной реализации, если нет.
Аргументы вызова
inputs 3D тензор, со структурой (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