มันใช้ความแตกต่างอัตโนมัติ ที่ซึ่งมันใช้กฎลูกโซ่และย้อนกลับไปในกราฟที่กำหนดการไล่ระดับสี
สมมุติว่าเรามีเทนเซอร์ C เทนเซอร์นี้ทำขึ้นหลังจากการปฏิบัติการหลายชุดสมมติว่าโดยการเพิ่มการคูณการผ่านความไม่เชิงเส้นเป็นต้น
ดังนั้นหาก C นี้ขึ้นอยู่กับชุดของเทนเซอร์บางตัวที่เรียกว่า Xk เราจำเป็นต้องได้การไล่ระดับสี
Tensorflow ติดตามเส้นทางการปฏิบัติงานเสมอ ฉันหมายถึงพฤติกรรมต่อเนื่องของโหนดและการไหลของข้อมูลระหว่างพวกเขา ทำโดยกราฟ
ถ้าเราจำเป็นต้องได้มาซึ่งการเปลี่ยนแปลงของค่าใช้จ่าย wrt X สิ่งที่สิ่งแรกที่จะทำคือมันโหลดพา ธ จากค่า x-input ไปยังค่าใช้จ่ายโดยขยายกราฟ
จากนั้นเริ่มต้นตามลำดับแม่น้ำ จากนั้นกระจายการไล่ระดับสีด้วยกฎลูกโซ่ (เหมือนกับ backpropagation)
วิธีใดก็ตามถ้าคุณอ่านซอร์สโค้ดนั้นเป็นของ tf.gradients () คุณจะพบว่าเทนเซอร์โฟลว์ได้ทำส่วนนี้ในการไล่ระดับสีในลักษณะที่ดี
ในขณะที่ backtracking tf โต้ตอบกับกราฟใน backword pass TF จะพบกับโหนดต่าง ๆ ภายในโหนดเหล่านี้มีการดำเนินการที่เราเรียกว่า (ops) matmal, softmax, relu, batch_normalization กราฟ
โหนดใหม่นี้ประกอบด้วยอนุพันธ์บางส่วนของการดำเนินการ get_gradient ()
ลองมาพูดคุยเกี่ยวกับโหนดที่เพิ่งเพิ่มเข้าไปใหม่
ภายในโหนดเหล่านี้เราเพิ่ม 2 สิ่ง 1. อนุพันธ์ที่เราคำนวณ ealier) 2. นอกจากนี้ยังมีอินพุตไปยังโพรเซสซิงออปชันในการส่งต่อ
ดังนั้นโดยกฎลูกโซ่เราสามารถคำนวณได้
ดังนั้นนี่เป็นเช่นเดียวกับ backword API
ดังนั้นเทนเซอร์กระแสจึงคิดเกี่ยวกับลำดับของกราฟเพื่อทำให้เกิดความแตกต่างโดยอัตโนมัติ
ดังนั้นเมื่อเรารู้ว่าเราต้องการตัวแปรส่งต่อเพื่อคำนวณการไล่ระดับสีดังนั้นเราจำเป็นต้องเก็บค่าอินเทอร์มิดิเนทไว้ในเทนเซอร์ซึ่งสามารถลดหน่วยความจำสำหรับการทำงานหลายอย่าง