محاسبات گرادیان را متوقف می کند.
هنگامی که در یک نمودار اجرا می شود، این op تانسور ورودی خود را همانطور که هست خروجی می دهد.
هنگام ساختن عملیات برای محاسبه گرادیان، این عملیات مانع از در نظر گرفتن سهم ورودی های آن می شود. به طور معمول، مولد گرادیان عملیاتهایی را به یک نمودار اضافه میکند تا مشتقات یک «ضرر» مشخص شده را با یافتن بازگشتی ورودیهایی که در محاسبه آن نقش داشتهاند، محاسبه کند. اگر این op را در نمودار وارد کنید، ورودیهای آن از مولد گرادیان پوشانده میشوند. آنها برای شیب محاسباتی در نظر گرفته نمی شوند.
این هر زمانی که بخواهید مقداری را با TensorFlow محاسبه کنید مفید است اما باید وانمود کنید که مقدار ثابت است. به عنوان مثال، تابع softmax برای یک بردار x می تواند به صورت
def softmax(x):
numerator = tf.exp(x)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
نوشته شود، اما اگر مقادیر x بزرگ باشند، مستعد سرریز شدن است. یک راه پایدارتر جایگزین، کم کردن حداکثر x از هر یک از مقادیر است. def stable_softmax(x):
z = x - tf.reduce_max(x)
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
با این حال، وقتی از softmax به x backprop میکنیم، نمیخواهیم از طریق tf.reduce_max(x)
(اگر مقادیر max منحصربهفرد نباشند، گرادیان میتواند به ورودی اشتباه جریان پیدا کند) و آن را به عنوان تلقی کنیم. ثابت. بنابراین، ما باید این را به عنوان def stable_softmax(x):
z = x - tf.stop_gradient(tf.reduce_max(x))
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
بنویسیم برخی از مثالهای دیگر عبارتند از:- الگوریتم EM که در آن M-step نباید شامل انتشار پس از خروج از مرحله E باشد .
- آموزش واگرایی متضاد ماشینهای بولتزمن که در آن، هنگام تمایز تابع انرژی، آموزش نباید از طریق نموداری که نمونهها را از مدل تولید میکند منتشر شود.
- آموزش خصمانه، که در آن هیچ پشتوانه ای نباید از طریق فرآیند تولید مثال خصمانه اتفاق بیفتد.
روش های عمومی
خروجی <T> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
استاتیک <T> StopGradient <T> | ایجاد ( دامنه دامنه، ورودی عملوند <T>) روش کارخانه برای ایجاد کلاسی که یک عملیات StopGradient جدید را بسته بندی می کند. |
خروجی <T> | خروجی () |
روش های ارثی
روش های عمومی
خروجی عمومی <T> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
ایجاد استاتیک عمومی StopGradient <T> ( دامنه دامنه، ورودی عملوند <T>)
روش کارخانه برای ایجاد کلاسی که یک عملیات StopGradient جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|
برمی گرداند
- یک نمونه جدید از StopGradient