GRUBlockCellGrad

الطبقة النهائية العامة GRUblockCellGrad

يحسب الانتشار الخلفي لخلية GRU لخطوة زمنية واحدة.

Args x: الإدخال إلى خلية GRU. h_prev: إدخال الحالة من خلية GRU السابقة. w_ru: مصفوفة الوزن لبوابة إعادة الضبط والتحديث. w_c: مصفوفة الوزن لبوابة اتصال الخلية. b_ru: ناقل التحيز لبوابة إعادة التعيين والتحديث. b_c: متجه التحيز لبوابة اتصال الخلية. r: إخراج بوابة إعادة الضبط. u: إخراج بوابة التحديث. ج: إخراج بوابة اتصال الخلية. d_h: تدرجات h_new wrt إلى الوظيفة الموضوعية.

إرجاع d_x: تدرجات x wrt إلى الوظيفة الموضوعية. d_h_prev: تدرجات h wrt إلى الوظيفة الموضوعية. d_c_bar تدرجات c_bar wrt إلى الوظيفة الموضوعية. d_r_bar_u_bar تدرجات r_bar وu_bar wrt إلى الوظيفة الموضوعية.

تنفذ عملية النواة هذه المعادلات الرياضية التالية:

ملاحظة حول تدوين المتغيرات:

يتم تمثيل تسلسل 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` إلى مصفوفتين مختلفتين.
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
 

الأساليب العامة

ثابت <T يمتد الرقم> GRUBlockCellGrad <T>
إنشاء ( نطاق النطاق ، المعامل <T> x، المعامل <T> hPrev، المعامل <T> wRu، المعامل <T> wC، المعامل <T> bRu، المعامل <T> bC، المعامل <T> r، المعامل <T > u، المعامل <T> ج، المعامل <T> dH)
طريقة المصنع لإنشاء فئة تغلف عملية GRUBlockCellGrad جديدة.
الإخراج <T>
الإخراج <T>
الإخراج <T>
الإخراج <T>

الطرق الموروثة

الأساليب العامة

إنشاء GRUBlockCellGrad <T> ثابت عام (نطاق النطاق ، المعامل <T> x، المعامل <T> hPrev، المعامل <T> wRu، المعامل <T> wC، المعامل <T> bRu، المعامل <T> bC، المعامل <T > r، المعامل <T> u، المعامل <T> c، المعامل <T> dH)

طريقة المصنع لإنشاء فئة تغلف عملية GRUBlockCellGrad جديدة.

حدود
نِطَاق النطاق الحالي
المرتجعات
  • مثيل جديد لـ GRUblockCellGrad

الإخراج العام <T> dCBar ()

الإخراج العام <T> dHPrev ()

الإخراج العام <T> dRBarUBar ()

الإخراج العام <T> dX ()