StopGradient

StopGradient คลาสสุดท้ายสาธารณะ

หยุดการคำนวณการไล่ระดับสี

เมื่อดำเนินการในกราฟ op นี้จะส่งออกเทนเซอร์อินพุตตามที่เป็นอยู่

เมื่อสร้างตัวเลือกเพื่อคำนวณการไล่ระดับสี ตัวเลือกนี้จะป้องกันไม่ให้คำนึงถึงการมีส่วนร่วมของอินพุต โดยปกติ เครื่องกำเนิดเกรเดียนต์จะเพิ่ม ops ให้กับกราฟเพื่อคำนวณอนุพันธ์ของ 'การสูญเสีย' ที่ระบุโดยการค้นหาอินพุตซ้ำๆ ที่มีส่วนช่วยในการคำนวณ หากคุณแทรก 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
 
อย่างไรก็ตาม เมื่อเรา backprop ผ่าน softmax ถึง x เราไม่ต้องการ backprop ผ่าน tf.reduce_max(x) (หากค่าสูงสุดไม่ซ้ำกัน การไล่ระดับสีอาจไหลไปยังอินพุตที่ไม่ถูกต้อง) การคำนวณและถือว่ามันเป็น ค่าคงที่ ดังนั้น เราควรเขียนสิ่งนี้ออกมาเป็น
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-step
  • การฝึกอบรมความแตกต่างที่ตรงกันข้ามของเครื่อง Boltzmann โดยเมื่อสร้างความแตกต่างฟังก์ชันพลังงานแล้ว การฝึกอบรมจะต้องไม่ถ่ายทอดกลับผ่านกราฟที่สร้างตัวอย่างจากแบบจำลอง
  • การฝึกอบรมฝ่ายตรงข้าม โดยที่ไม่ควรมีสิ่งหนุนหลังผ่านกระบวนการสร้างตัวอย่างของฝ่ายตรงข้าม

วิธีการสาธารณะ

เอาท์พุต <T>
เป็นเอาท์พุต ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
คงที่ <T> StopGradient <T>
สร้าง ( ขอบเขต ขอบเขต อินพุต Operand <T>)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ห่อการดำเนินการ StopGradient ใหม่
เอาท์พุต <T>

วิธีการสืบทอด

วิธีการสาธารณะ

เอาท์ พุท สาธารณะ <T> asOutput ()

ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์

อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต

สร้าง StopGradient <T> แบบคงที่สาธารณะ (ขอบเขต ขอบเขต , อินพุต Operand <T>)

วิธีการจากโรงงานเพื่อสร้างคลาสที่ห่อการดำเนินการ StopGradient ใหม่

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
การส่งคืน
  • อินสแตนซ์ใหม่ของ StopGradient

เอาท์พุท สาธารณะ <T> เอาท์พุท ()