รวบรวมสไลซ์จาก "params" ให้เป็น Tensor โดยมีรูปร่างที่ระบุโดย "ดัชนี"
`ดัชนี' คือเทนเซอร์จำนวนเต็ม K มิติ คิดได้ดีที่สุดว่าเป็นเมตริกซ์ (K-1) ของดัชนีเป็น 'params' โดยที่แต่ละองค์ประกอบกำหนดส่วนของ 'params':
เอาต์พุต[\\(i_0, ..., i_{K-2}\\)] = params[ดัชนี[\\(i_0, ..., i_{K-2}\\)]]
ในขณะที่ใน tf.gather
`indices` กำหนดส่วนต่างๆ ลงในมิติ `axis` ของ `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']
จัดทำดัชนี Slice เป็นเมทริกซ์: indices = [[1], [0]]
params = [['a', 'b'], ['c', 'd']]
output = [['c', 'd'], ['a', 'b']]
จัดทำดัชนีเป็น 3-tensor: 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-tensor: 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> | เอาท์พุท () ค่าจาก "params" ที่รวบรวมจากดัชนีที่กำหนดโดย "indices" ที่มีรูปร่าง "indices.shape[:-1] + params.shape[indices.shape[-1]:]` |
วิธีการสืบทอด
วิธีการสาธารณะ
เอาต์พุต สาธารณะ <T> asOutput ()
ส่งกลับค่าแฮนเดิลเชิงสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการทำงานของ TensorFlow เป็นเอาต์พุตของการดำเนินการอื่นของ TensorFlow วิธีนี้ใช้เพื่อขอรับหมายเลขอ้างอิงเชิงสัญลักษณ์ที่แสดงถึงการคำนวณของอินพุต
สร้าง GatherNd <T> สแตติกสาธารณะ ( ขอบเขต ขอบเขต, พารามิเตอร์ตัวถูกดำเนินการ <T>, ดัชนีตัวถูกดำเนิน การ <U>)
วิธีการ Factory เพื่อสร้างคลาสที่ปิดการดำเนินการ GatherNd ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
พารามส์ | เทนเซอร์ที่ใช้ในการรวบรวมค่า |
ดัชนี | ดัชนีเทนเซอร์ |
คืนสินค้า
- ตัวอย่างใหม่ของ GatherNd
เอาต์พุต สาธารณะ <T> เอาต์พุต ()
ค่าจาก "params" ที่รวบรวมจากดัชนีที่กำหนดโดย "indices" ที่มีรูปร่าง "indices.shape[:-1] + params.shape[indices.shape[-1]:]`