รวบรวมชิ้นส่วนจาก '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]:]`