หยุดการคำนวณการไล่ระดับสี
เมื่อดำเนินการในกราฟ op นี้จะส่งออกเทนเซอร์อินพุตตามที่เป็นอยู่
เมื่อสร้างตัวเลือกเพื่อคำนวณการไล่ระดับสี ตัวเลือกนี้จะป้องกันไม่ให้คำนึงถึงการมีส่วนร่วมของอินพุต โดยปกติ เครื่องกำเนิดเกรเดียนต์จะเพิ่ม ops ให้กับกราฟเพื่อคำนวณอนุพันธ์ของ 'การสูญเสีย' ที่ระบุโดยการค้นหาอินพุตซ้ำๆ ที่มีส่วนช่วยในการคำนวณ หากคุณแทรก op นี้ในกราฟ อินพุตจะถูกปิดบังจากตัวสร้างการไล่ระดับสี สิ่งเหล่านี้จะไม่นำมาพิจารณาสำหรับการไล่ระดับด้วยคอมพิวเตอร์
สิ่งนี้มีประโยชน์ทุกครั้งที่คุณต้องการคำนวณค่าด้วย TensorFlow แต่ต้องแสร้งทำเป็นว่าค่านั้นเป็นค่าคงที่ ตัวอย่างเช่น ฟังก์ชันซอฟต์แม็กซ์สำหรับเวกเตอร์ 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> | |
เอาท์พุต <T> | เอาท์พุท () |
วิธีการสืบทอด
วิธีการสาธารณะ
เอาท์พุท สาธารณะ <T> asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
สร้าง StopGradient <T> แบบคงที่สาธารณะ (ขอบเขต ขอบเขต , อินพุต Operand <T>)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ห่อการดำเนินการ StopGradient ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|
การส่งคืน
- อินสแตนซ์ใหม่ของ StopGradient