Spec-Zone.ru › TensorFlow

tf.raw_ops.GRUBlockCellGrad

Вычисляет обратное распространение ошибки ячейки GRU за 1 шаг.

Псевдонимы

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

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

tf.compat.v1.raw_ops.GRUBlockCellGrad

tf.raw_ops.GRUBlockCellGrad(
    x, h_prev, w_ru, w_c, b_ru, b_c, r, u, c, d_h, name=None
)

Аргументы x: Вход в ячейку GRU. h_prev: Входное состояние из предыдущей ячейки GRU. w_ru: Матрица весов для ворот сброса и обновления. w_c: Матрица весов для ворот соединения ячейки. b_ru: Вектор смещения для ворот сброса и обновления. b_c: Вектор смещения для ворот соединения ячейки. r: Выход ворот сброса. u: Выход ворот обновления. c: Выход ворот соединения ячейки. d_h: Градиенты h_new по отношению к целевой функции.

Возвращаемые значения d_x: Градиенты x по отношению к целевой функции. d_h_prev: Градиенты h по отношению к целевой функции. d_c_bar: Градиенты c_bar по отношению к целевой функции. d_r_bar_u_bar: Градиенты r_bar и u_bar по отношению к целевой функции.

Этот оператор ядра реализует следующие математические уравнения:

Примечание о нотации переменных:

Конкатенация a и b представлена как a_b. Скалярное произведение a и b представлено как ab. Элемент-поэлементное скалярное произведение представлено как \circ. Матричное произведение представлено как *.

Дополнительные заметки для ясности:

w_ru может быть разделено на 4 различные матрицы.

w_ru = [w_r_x w_u_x
        w_r_h_prev w_u_h_prev]

Аналогично, w_c может быть разделено на 2 различные матрицы.

w_c = [w_c_x w_c_h_prevr]

То же самое относится и к смещениям.

b_ru = [b_ru_x b_ru_h]
b_c = [b_c_x b_c_h]

Еще одно примечание о нотации:

d_x = d_x_component_1 + d_x_component_2

where d_x_component_1 = d_r_bar * w_r_x^T + d_u_bar * w_r_x^T
and d_x_component_2 = d_c_bar * w_c_x^T

d_h_prev = d_h_prev_component_1 + d_h_prevr \circ r + d_h \circ u
where d_h_prev_componenet_1 = d_r_bar * w_r_h_prev^T + d_u_bar * w_r_h_prev^T

Математика, лежащая в основе градиентов, приведена ниже:

d_c_bar = d_h \circ (1-u) \circ (1-c \circ c)
d_u_bar = d_h \circ (h-c) \circ u \circ (1-u)

d_r_bar_u_bar = [d_r_bar d_u_bar]

[d_x_component_1 d_h_prev_component_1] = d_r_bar_u_bar * w_ru^T

[d_x_component_2 d_h_prevr] = d_c_bar * w_c^T

d_x = d_x_component_1 + d_x_component_2

d_h_prev = d_h_prev_component_1 + d_h_prevr \circ r + u

Вычисление ниже выполняется в обертке Python для градиентов (а не в ядре градиента).

d_w_ru = x_h_prevr^T * d_c_bar

d_w_c = x_h_prev^T * d_r_bar_u_bar

d_b_ru = sum of d_r_bar_u_bar along axis = 0

d_b_c = sum of d_c_bar along axis = 0
Аргументы
x A Tensor. Должен быть одним из следующих типов: float32.
h_prev A Tensor. Должен иметь тот же тип, что и x.
w_ru A Tensor. Должен иметь тот же тип, что и x.
w_c A Tensor. Должен иметь тот же тип, что и x.
b_ru A Tensor. Должен иметь тот же тип, что и x.
b_c A Tensor. Должен иметь тот же тип, что и x.
r A Tensor. Должен иметь тот же тип, что и x.
u A Tensor. Должен иметь тот же тип, что и x.
c A Tensor. Должен иметь тот же тип, что и x.
d_h A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемые значения
Кортеж из объектов Tensor (d_x, d_h_prev, d_c_bar, d_r_bar_u_bar).
d_x A Tensor. Имеет тот же тип, что и x.
d_h_prev A Tensor. Имеет тот же тип, что и x.
d_c_bar A Tensor. Имеет тот же тип, что и x.
d_r_bar_u_bar A Tensor. Имеет тот же тип, что и x.

© 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/raw_ops/GRUBlockCellGrad

Spec-Zone.ru

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