Calcula a retropropagação da célula GRU para um intervalo de tempo.
Args x: entrada para a célula GRU. h_prev: Estado de entrada da célula GRU anterior. w_ru: Matriz de peso para a porta de reinicialização e atualização. w_c: Matriz de peso para a porta de conexão da célula. b_ru: Vetor de polarização para a porta de reset e atualização. b_c: Vetor de polarização para a porta de conexão da célula. r: Saída da porta de reset. u: Saída da porta de atualização. c: Saída da porta de conexão da célula. d_h: Gradientes de h_new em relação à função objetivo.
Retorna d_x: Gradientes de x para a função objetivo. d_h_prev: Gradientes da função objetivo. d_c_bar Gradientes de c_bar em relação à função objetivo. d_r_bar_u_bar Gradientes de r_bar e u_bar em relação à função objetivo.
Este kernel op implementa as seguintes equações matemáticas:
Nota sobre a notação das variáveis:
A concatenação de aeb é representada por a_b O produto escalar elemento a e b é representado por ab O produto escalar elemento é representado por \ circ A multiplicação da matriz é representada por *
Notas adicionais para maior clareza:
`w_ru` pode ser segmentado em 4 matrizes diferentes.
w_ru = [w_r_x w_u_x
w_r_h_prev w_u_h_prev]
Da mesma forma, `w_c` pode ser segmentado em 2 matrizes diferentes. w_c = [w_c_x w_c_h_prevr]
O mesmo vale para preconceitos. b_ru = [b_ru_x b_ru_h]
b_c = [b_c_x b_c_h]
Outra nota em notação: 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
Matemática atrás dos gradientes abaixo: 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
(. não no núcleo gradiente) Abaixo cálculo é realizado no invólucro pitão para os gradientes 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
Constantes
Corda | OP_NAME | O nome desta operação, conforme conhecido pelo motor principal TensorFlow |
Métodos Públicos
estática <T estende TNumber > GRUBlockCellGrad <T> | |
Output <T> | dCBar () |
Output <T> | dHPrev () |
Output <T> | dRBarUBar () |
Output <T> | dX () |
Métodos herdados
Constantes
nome_op final String public static
O nome desta operação, conforme conhecido pelo motor principal TensorFlow
Métodos Públicos
public static GRUBlockCellGrad <T> create ( Scope escopo, Operando <T> x, Operando <T> hPrev, Operando <T> WRU, Operando <T> WC, Operando <T> Bru, Operando <T> aC, Operando <T > r, Operando <T> u, Operando <T> c, Operando <T> dH)
Método de fábrica para criar uma classe envolvendo uma nova operação GRUBlockCellGrad.
Parâmetros
alcance | escopo atual |
---|
Devoluções
- uma nova instância de GRUBlockCellGrad