انتشار مجدد سلول GRU را برای 1 مرحله زمانی محاسبه می کند.
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 نشان داده می شود.
نکات اضافی برای وضوح:
«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
محاسبه زیر در پوشش پایتون برای Gradient ها (نه در هسته گرادیان) انجام می شود. 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> | dCBar () |
خروجی <T> | dHPrev () |
خروجی <T> | dRBarUBar () |
خروجی <T> | dX () |
روش های ارثی
روش های عمومی
عمومی ایستا GRUBlockCellGrad <T> ایجاد ( محدوده دامنه ، عملوند <T> x، عملوند <T> hPrev، عملوند <T> wRu، عملوند <T> wC، عملوند <T> bRu، عملوند <T> bC، عملوند <T > r، عملوند <T> u، عملوند <T> c، عملوند <T> dH)
روش کارخانه برای ایجاد کلاسی که عملیات GRUBlockCellGrad جدید را بسته بندی می کند.
پارامترها
دامنه | محدوده فعلی |
---|
برمی گرداند
- یک نمونه جدید از GRUBlockCellGrad