TensorScatterAdd

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

เพิ่ม "การอัปเดต" แบบกระจัดกระจายให้กับเทนเซอร์ที่มีอยู่ตาม "ดัชนี"

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

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

indices.shape[-1] <= tensor.shape.rank
 
มิติสุดท้ายของ `ดัชนี` สอดคล้องกับดัชนีในองค์ประกอบต่างๆ (หาก `indices.shape[-1] = tensor.shape.rank`) หรือชิ้น (หาก `indices.shape[-1] < tensor.shape.rank`) ตามมิติ `indices.shape[-1]` ของ `tensor.shape` `updates` เป็นเทนเซอร์ที่มีรูปร่าง
indices.shape[:-1] + tensor.shape[indices.shape[-1]:]
 
รูปแบบที่ง่ายที่สุดของ `tensor_scatter_nd_add` คือการเพิ่มองค์ประกอบแต่ละรายการให้กับเทนเซอร์ตามดัชนี ตัวอย่างเช่น สมมติว่าเราต้องการเพิ่ม 4 องค์ประกอบในเทนเซอร์อันดับ 1 โดยมี 8 องค์ประกอบ

ใน Python การดำเนินการเพิ่มแบบกระจายนี้จะมีลักษณะดังนี้:

>>> ดัชนี = tf.constant([[4], [3], [1], [7]]) >>> อัปเดต = tf.constant([9, 10, 11, 12]) >>> เทนเซอร์ = tf.ones([8], dtype=tf.int32) >>> อัปเดต = tf.tensor_scatter_nd_add(เทนเซอร์, ดัชนี, อัปเดต) >>> อัปเดตแล้ว

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

ใน Python การดำเนินการเพิ่มแบบกระจายนี้จะมีลักษณะดังนี้:

>>> ดัชนี = tf.constant([[0], [2]]) >>> อัปเดต = 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]]]) >>> เทนเซอร์ = tf.ones([4, 4, 4],dtype=tf.int32) >>> อัปเดต = tf.tensor_scatter_nd_add(เทนเซอร์, ดัชนี, อัปเดต) >>> อัปเดตแล้ว

หมายเหตุ: บน CPU หากพบดัชนีนอกขอบเขต ข้อผิดพลาดจะถูกส่งกลับ บน GPU หากพบดัชนีนอกขอบเขต ดัชนีนั้นจะถูกละเว้น

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

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

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

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

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

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

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

สร้าง TensorScatterAdd <T> คงที่สาธารณะ (ขอบเขต ขอบเขต , ตัว ดำเนิน การ <T> เทนเซอร์, ดัชนี ตัวดำเนินการ <U>, ตัวดำเนิน การอัปเดต <T>)

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

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

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

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