GRUBブロックセルグラード

パブリック最終クラスGRUBlockCellGrad

1 タイム ステップの GRU セル バックプロパゲーションを計算します。

Args 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]
 
表記に関するもう 1 つの注意事項:
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 extends Number> GRUBlockCellGrad <T>
create (スコープscope,オペランド<T> x,オペランド<T> hPrev,オペランド<T> wRu,オペランド<T> wC,オペランド<T> bRu,オペランド<T> bC,オペランド<T> r,オペランド<T > u、オペランド<T> c、オペランド<T> dH)
新しい GRUBlockCellGrad オペレーションをラップするクラスを作成するためのファクトリ メソッド。
出力<T>
dCBar ()
出力<T>
dHPrev ()
出力<T>
出力<T>
dX ()

継承されたメソッド

パブリックメソッド

public static GRUBlockCellGrad <T> create (スコープscope,オペランド<T> x,オペランド<T> hPrev,オペランド<T> wRu,オペランド<T> wC,オペランド<T> bRu,オペランド<T> bC,オペランド<T > r、オペランド<T> u、オペランド<T> c、オペランド<T> dH)

新しい GRUBlockCellGrad オペレーションをラップするクラスを作成するためのファクトリ メソッド。

パラメータ
範囲現在のスコープ
返品
  • GRUBlockCellGrad の新しいインスタンス

public Output <T> dCBar ()

public出力<T> dHPrev ()

public出力<T> dRBarUBar ()

public出力<T> dX ()