GRUBlockCellGrad

genel final sınıfı GRUBlockCellGrad

1 zaman adımı için GRU hücresinin geri yayılımını hesaplar.

Args x: GRU hücresine giriş. h_prev: Önceki GRU hücresinden durum girişi. w_ru: Sıfırlama ve güncelleme kapısı için ağırlık matrisi. w_c: Hücre bağlantı kapısı için ağırlık matrisi. b_ru: Sıfırlama ve güncelleme kapısı için öngerilim vektörü. b_c: Hücre bağlantı kapısı için öngerilim vektörü. r: Sıfırlama kapısının çıkışı. u: Güncelleme kapısının çıkışı. c: Hücre bağlantı kapısının çıkışı. d_h: h_new wrt'nin amaç fonksiyonuna olan gradyanları.

D_x değerini döndürür: x wrt'nin amaç fonksiyonuna olan gradyanları. d_h_prev: h'nin amaç fonksiyonuna olan gradyanları. d_c_bar C_bar'ın amaç fonksiyonuna olan gradyanları. d_r_bar_u_bar r_bar ve u_bar'ın amaç fonksiyonuna göre gradyanları.

Bu çekirdek işlemi aşağıdaki matematiksel denklemleri uygular:

Değişkenlerin gösterimine ilişkin not:

a ve b'nin birleşimi a_b ile temsil edilir a ve b'nin eleman bazında nokta çarpımı ab ile temsil edilir Element bazında nokta çarpımı \circ ile temsil edilir Matris çarpımı * ile temsil edilir

Açıklık sağlamak için ek notlar:

'w_ru' 4 farklı matrise bölünebilir.

w_ru = [w_r_x w_u_x
         w_r_h_prev w_u_h_prev]
 
Benzer şekilde 'w_c' 2 farklı matrise bölünebilir.
w_c = [w_c_x w_c_h_prevr]
 
Aynı şey önyargılar için de geçerlidir.
b_ru = [b_ru_x b_ru_h]
 b_c = [b_c_x b_c_h]
 
Gösterimle ilgili başka bir not:
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
 
Aşağıdaki Gradyanların arkasındaki matematik:
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
 
Aşağıdaki hesaplama, Gradyanlar için python sarmalayıcısında gerçekleştirilir (gradyan çekirdeğinde değil).
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
 

Genel Yöntemler

statik <T Sayıyı genişletir> GRUBlockCellGrad <T>
create ( Kapsam kapsamı, İşlenen <T> x, İşlenen <T> hPrev, İşlenen <T> wRu, İşlenen <T> wC, İşlenen <T> bRu, İşlenen <T> bC, İşlenen <T> r, İşlenen <T > u, İşlenen <T> c, İşlenen <T> dH)
Yeni bir GRUBlockCellGrad işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.
Çıkış <T>
dCBar ()
Çıkış <T>
Çıkış <T>
Çıkış <T>
dX ()

Kalıtsal Yöntemler

Genel Yöntemler

public static GRUBlockCellGrad <T> create ( Kapsam kapsamı, İşlenen <T> x, İşlenen <T> hPrev, İşlenen <T> wRu, İşlenen <T> wC, İşlenen <T> bRu, İşlenen <T> bC, İşlenen <T > r, İşlenen <T> u, İşlenen <T> c, İşlenen <T> dH)

Yeni bir GRUBlockCellGrad işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.

Parametreler
kapsam mevcut kapsam
İadeler
  • GRUBlockCellGrad'ın yeni bir örneği

genel Çıkış <T> dCBar ()

genel Çıkış <T> dHPrev ()

genel Çıkış <T> dRBarUBar ()

genel Çıkış <T> dX ()