GatherNd

ชั้นเรียนสุดท้ายสาธารณะ GatherNd

รวบรวมชิ้นส่วนจาก 'params' ลงในเทนเซอร์ที่มีรูปร่างที่ระบุโดย 'ดัชนี'

`indices` คือเทนเซอร์จำนวนเต็มมิติ K ซึ่งคิดว่าดีที่สุดในฐานะเทนเซอร์มิติ (K-1) ของดัชนีใน 'params' โดยที่แต่ละองค์ประกอบจะกำหนดส่วนของ 'params':

เอาท์พุต[\\(i_0, ..., i_{K-2}\\)] = พารามิเตอร์[ดัชนี[\\(i_0, ..., i_{K-2}\\)-

ในขณะที่ tf.gather `indices` กำหนดส่วนต่างๆ ลงในมิติ 'แกน' ของ 'params' แต่ใน tf.gather_nd 'indices' จะกำหนดส่วนต่างๆ ให้เป็นมิติ 'N' แรกของ 'params' โดยที่ 'N = indices.shape [-1]`.

มิติสุดท้ายของ "ดัชนี" สามารถอยู่ในอันดับสูงสุดของ "พารามิเตอร์" ได้:

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

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

indices.shape[:-1] + params.shape[indices.shape[-1]:]

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

ตัวอย่างบางส่วนด้านล่าง

การจัดทำดัชนีอย่างง่ายในเมทริกซ์:

indices = [[0, 0], [1, 1]]
     params = [['a', 'b'], ['c', 'd']]
     output = ['a', 'd']
 
การจัดทำดัชนีชิ้นเป็นเมทริกซ์:
indices = [[1], [0]]
     params = [['a', 'b'], ['c', 'd']]
     output = [['c', 'd'], ['a', 'b']]
 
การจัดทำดัชนีเป็น 3 เทนเซอร์:
indices = [[1]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [[['a1', 'b1'], ['c1', 'd1']]]
 
 
     indices = [[0, 1], [1, 0]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [['c0', 'd0'], ['a1', 'b1']]
 
 
     indices = [[0, 0, 1], [1, 0, 1]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = ['b0', 'b1']
 
การจัดทำดัชนีแบบแบตช์เป็นเมทริกซ์:
indices = [[[0, 0]], [[0, 1]]]
     params = [['a', 'b'], ['c', 'd']]
     output = [['a'], ['b']]
 
การจัดทำดัชนีชิ้นแบบเป็นชุดลงในเมทริกซ์:
indices = [[[1]], [[0]]]
     params = [['a', 'b'], ['c', 'd']]
     output = [[['c', 'd']], [['a', 'b']]]
 
การจัดทำดัชนีแบบแบตช์เป็น 3 เทนเซอร์:
indices = [[[1]], [[0]]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [[[['a1', 'b1'], ['c1', 'd1']]],
               [[['a0', 'b0'], ['c0', 'd0']]]]
 
     indices = [[[0, 1], [1, 0]], [[0, 0], [1, 1]]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [[['c0', 'd0'], ['a1', 'b1']],
               [['a0', 'b0'], ['c1', 'd1']]]
 
 
     indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
     params = [[['a0', 'b0'], ['c0', 'd0']],
               [['a1', 'b1'], ['c1', 'd1']]]
     output = [['b0', 'b1'], ['d0', 'c1']]
 
ดูเพิ่มเติมที่ tf.gather และ `tf.batch_gather`

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

เอาท์พุต <T>
เป็นเอาท์พุต ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
คงที่ <T, U ขยายจำนวน> GatherNd <T>
สร้าง (ขอบเขต ขอบเขต , พารามิเตอร์ ตัวดำเนินการ <T>, ดัชนีตัว ดำเนินการ <U>)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ GatherNd ใหม่
เอาท์พุต <T>
เอาท์พุท ()
ค่าจาก `params` ที่รวบรวมจากดัชนีที่กำหนดโดย `indices` ซึ่งมีรูปร่าง `indices.shape[:-1] + params.shape[indices.shape[-1]:]`

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

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

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

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

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

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

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

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

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

ค่าจาก `params` ที่รวบรวมจากดัชนีที่กำหนดโดย `indices` ซึ่งมีรูปร่าง `indices.shape[:-1] + params.shape[indices.shape[-1]:]`