GRUBlockCellGrad

공개 최종 클래스 GRUlockCellGrad

1시간 단계에 대한 GRU 셀 역전파를 계산합니다.

인수 x: GRU 셀에 대한 입력입니다. h_prev: 이전 GRU 셀의 상태 입력입니다. w_ru: 재설정 및 업데이트 게이트에 대한 가중치 행렬입니다. w_c: 셀 연결 게이트의 가중치 행렬입니다. b_ru: 재설정 및 업데이트 게이트에 대한 바이어스 벡터입니다. b_c: 셀 연결 게이트에 대한 바이어스 벡터입니다. r: 리셋 게이트의 출력. u: 업데이트 게이트의 출력. c: 셀 연결 게이트의 출력. d_h: 목적 함수에 대한 h_new wrt의 기울기입니다.

d_x를 반환합니다: 목적 함수에 대한 x wrt의 기울기. d_h_prev: 목적 함수에 대한 h wrt의 기울기. 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
 

공개 방법

static <T 확장 번호> GRUBlockCellGrad <T>
create ( 범위 범위, 피연산자 <T> x, 피연산자 <T> hPrev, 피연산자 <T> wRu, 피연산자 <T> wC, 피연산자 <T> bRu, 피연산자 <T> bC, 피연산자 <T> r, 피연산자 < T > u, 피연산자 <T> c, 피연산자 <T> dH)
새로운 GRUBlockCellGrad 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
dC바 ()
출력 <T>
dHPrev ()
출력 <T>
출력 <T>
dX ()

상속된 메서드

공개 방법

public static GRUBlockCellGrad <T> create ( Scope 범위, Operand <T> x, Operand <T> hPrev, Operand <T> wRu, Operand <T> wC, Operand <T> bRu, Operand <T> bC, Operand <T > r, 피연산자 <T> u, 피연산자 <T> c, 피연산자 <T> dH)

새로운 GRUBlockCellGrad 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
보고
  • GRUBlockCellGrad의 새로운 인스턴스

공개 출력 <T> dCBar ()

공개 출력 <T> dHPrev ()

공개 출력 <T> dRBarUBar ()

공개 출력 <T> dX ()