محاسبات گرادیان را متوقف می کند.
هنگامی که در یک نمودار اجرا می شود، این 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 نباید از طریق خروجی مرحله E شامل پس انتشار باشد.
- آموزش واگرایی متضاد ماشینهای بولتزمن که در آن، هنگام تمایز تابع انرژی، آموزش نباید از طریق نموداری که نمونهها را از مدل تولید کرده است، انتشار یابد.
- آموزش خصمانه، که در آن هیچ پشتوانه ای نباید از طریق فرآیند تولید مثال خصمانه اتفاق بیفتد.
روش های عمومی
خروجی <T> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
استاتیک <T> StopGradient <T> | |
خروجی <T> | خروجی () |
روش های ارثی
روش های عمومی
خروجی عمومی <T> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
ایجاد عمومی ایستا StopGradient <T> ( دامنه دامنه ، ورودی عملوند <T>)
روش Factory برای ایجاد کلاسی که عملیات StopGradient جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|
برمی گرداند
- یک نمونه جدید از StopGradient