StopGradient

کلاس نهایی عمومی StopGradient

محاسبات گرادیان را متوقف می کند.

هنگامی که در یک نمودار اجرا می شود، این 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>)
روش Factory برای ایجاد کلاسی که عملیات StopGradient جدید را بسته بندی می کند.
خروجی <T>

روش های ارثی

روش های عمومی

خروجی عمومی <T> asOutput ()

دسته نمادین یک تانسور را برمی‌گرداند.

ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.

ایجاد عمومی ایستا StopGradient <T> ( دامنه دامنه ، ورودی عملوند <T>)

روش Factory برای ایجاد کلاسی که عملیات StopGradient جدید را بسته بندی می کند.

پارامترها
دامنه محدوده فعلی
برمی گرداند
  • یک نمونه جدید از StopGradient

خروجی عمومی <T> خروجی ()