คำเตือน: API นี้เลิกใช้งานแล้วและจะถูกลบออกใน TensorFlow เวอร์ชันในอนาคตหลังจาก การแทนที่ เสถียรแล้ว

TensorScatterSub

ประชาชน TensorScatterSub ชั้นสุดท้าย

ลบ "การอัปเดต" แบบเบาบางจากเทนเซอร์ที่มีอยู่ตาม "ดัชนี"

การดำเนินการนี้จะสร้างเมตริกซ์ใหม่โดยลบ "การอัปเดต" แบบกระจัดกระจายออกจากการส่งผ่านใน "เทนเซอร์" การดำเนินการนี้คล้ายกับ `tf.scatter_nd_sub` มาก ยกเว้นว่าการอัปเดตจะถูกลบออกจากเทนเซอร์ที่มีอยู่ (ตรงข้ามกับตัวแปร) หากหน่วยความจำสำหรับเทนเซอร์ที่มีอยู่ใช้ซ้ำไม่ได้ จะมีการคัดลอกและอัปเดต

`ดัชนี' คือเทนเซอร์จำนวนเต็มที่มีดัชนีเป็นเมตริกซ์ใหม่ของรูปร่าง `รูปร่าง' มิติข้อมูลสุดท้ายของ "ดัชนี" สามารถอยู่ในอันดับของ "รูปร่าง" ได้มากที่สุด:

indices.shape[-1] <= shape.rank

มิติข้อมูลสุดท้ายของ "ดัชนี" สอดคล้องกับดัชนีเป็นองค์ประกอบ (หาก `indices.shape[-1] = shape.rank`) หรือแบ่งส่วน (ถ้า `indices.shape[-1] < shape.rank`) ตามมิติ `ดัชนี .shape[-1]` ของ `รูปร่าง' `อัพเดท` คือเทนเซอร์ที่มีรูปร่าง

ดัชนี.รูปร่าง[:-1] + รูปร่าง[ดัชนี.รูปร่าง[-1]:]

รูปแบบที่ง่ายที่สุดของ tensor_scatter_sub คือการลบแต่ละองค์ประกอบออกจากเทนเซอร์ด้วยดัชนี ตัวอย่างเช่น สมมติว่าเราต้องการแทรกองค์ประกอบที่กระจัดกระจาย 4 องค์ประกอบในเทนเซอร์อันดับ 1 ที่มี 8 องค์ประกอบ

ในหลามนี้การดำเนินการกระจายลบจะมีลักษณะเช่นนี้

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     tensor = tf.ones([8], dtype=tf.int32)
     updated = tf.tensor_scatter_nd_sub(tensor, indices, updates)
     print(updated)
 
เมตริกซ์ที่เกิดจะมีลักษณะเช่นนี้

[1, -10, 1, -9, -8, 1, 1, -11]

นอกจากนี้เรายังสามารถแทรกเทนเซอร์อันดับที่สูงกว่าทั้งหมดได้พร้อมกัน ตัวอย่างเช่น หากเราต้องการแทรกสองส่วนในมิติแรกของเทนเซอร์อันดับ 3 ด้วยเมทริกซ์สองค่าใหม่

ในหลามนี้การดำเนินการกระจายเพิ่มจะมีลักษณะเช่นนี้

indices = tf.constant([[0], [2]])
     updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
                             [7, 7, 7, 7], [8, 8, 8, 8]],
                            [[5, 5, 5, 5], [6, 6, 6, 6],
                             [7, 7, 7, 7], [8, 8, 8, 8]]])
     tensor = tf.ones([4, 4, 4],dtype=tf.int32)
     updated = tf.tensor_scatter_nd_sub(tensor, indices, updates)
     print(updated)
 
เมตริกซ์ที่เกิดจะมีลักษณะเช่นนี้

[[[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7 , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] , [[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7 , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] ]

โปรดทราบว่าบน CPU หากพบดัชนีนอกขอบเขต ข้อผิดพลาดจะถูกส่งคืน บน GPU หากพบดัชนีนอกขอบเขต ดัชนีจะถูกละเว้น

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

เอาท์พุท <T>
asOutput ()
ส่งกลับค่าแฮนเดิลเชิงสัญลักษณ์ของเทนเซอร์
คง <T, U ขยายจำนวน> TensorScatterSub <T>
สร้าง ( ขอบเขต ขอบเขต Operand <T> เมตริกซ์, Operand <u> ดัชนี Operand <T> การปรับปรุง)
วิธีการ Factory เพื่อสร้างคลาสที่ปิดการดำเนินการ TensorScatterSub ใหม่
เอาท์พุท <T>
เอาท์พุท ()
เทนเซอร์ใหม่คัดลอกมาจากเทนเซอร์และอัพเดตลบออกตามดัชนี

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

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

ประชาชน เอาท์พุท <T> asOutput ()

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

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

สาธารณะคง TensorScatterSub <T> สร้าง ( ขอบเขต ขอบเขต Operand <T> เมตริกซ์, Operand <u> ดัชนี Operand <T> การปรับปรุง)

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

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
เทนเซอร์ เทนเซอร์เพื่อคัดลอก/อัปเดต
ดัชนี ดัชนีเทนเซอร์
อัพเดท อัปเดตเพื่อกระจายไปยังเอาต์พุต
คืนสินค้า
  • ตัวอย่างใหม่ของ TensorScatterSub

ประชาชน เอาท์พุท <T> เอาท์พุท ()

เทนเซอร์ใหม่คัดลอกมาจากเทนเซอร์และอัพเดตลบออกตามดัชนี