Tập hợp các lát cắt từ `params` vào một Tensor có hình dạng được chỉ định bởi `chỉ số`.
`chỉ số` là một tenxơ nguyên K chiều, tốt nhất nên coi là tenxơ hai chiều (K-1) của các chỉ số thành `params`, trong đó mỗi phần tử xác định một lát `params`:
đầu ra [\\(i_0, ..., i_{K-2}\\)] = thông số[chỉ số[\\(i_0, ..., i_{K-2}\\)]]
Trong khi trong tf.gather
`indices` xác định các lát cắt theo chiều `trục` của `params`, thì trong tf.gather_nd
, `indices` xác định các lát cắt theo chiều `N` đầu tiên của `params`, trong đó `N =index.shape [-1]`.
Thứ nguyên cuối cùng của `chỉ số` có thể ở mức tối đa là `params`:
chỉ số.shape[-1] <= params.rank
Thứ nguyên cuối cùng của `indices` tương ứng với các phần tử (nếu `indices.shape[-1] == params.rank`) hoặc các lát (nếu `indices.shape[-1] < params.rank`) dọc theo thứ nguyên `indices. hình dạng [-1]` của `params`. Tenxơ đầu ra có hình dạng
index.shape[:-1] + params.shape[indices.shape[-1]:]
Lưu ý rằng trên CPU, nếu tìm thấy chỉ mục ngoài giới hạn, lỗi sẽ được trả về. Trên GPU, nếu tìm thấy chỉ mục ngoài giới hạn, số 0 sẽ được lưu trong giá trị đầu ra tương ứng.
Một số ví dụ dưới đây.
Lập chỉ mục đơn giản vào một ma trận:
indices = [[0, 0], [1, 1]]
params = [['a', 'b'], ['c', 'd']]
output = ['a', 'd']
Lập chỉ mục lát cắt thành một ma trận: indices = [[1], [0]]
params = [['a', 'b'], ['c', 'd']]
output = [['c', 'd'], ['a', 'b']]
Lập chỉ mục thành 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']
Lập chỉ mục hàng loạt thành một ma trận: indices = [[[0, 0]], [[0, 1]]]
params = [['a', 'b'], ['c', 'd']]
output = [['a'], ['b']]
Lập chỉ mục lát theo lô thành một ma trận: indices = [[[1]], [[0]]]
params = [['a', 'b'], ['c', 'd']]
output = [[['c', 'd']], [['a', 'b']]]
Lập chỉ mục hàng loạt thành 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']]
Xem thêm tf.gather
và `tf.batch_gather`. Hằng số
Sợi dây | OP_NAME | Tên của op này, được biết đến bởi công cụ lõi TensorFlow |
Phương pháp công khai
Đầu ra <T> | asOutput () Trả về tay cầm tượng trưng của tensor. |
tĩnh <T mở rộng TType > GatherNd <T> | |
Đầu ra <T> | đầu ra () Các giá trị từ `params` được thu thập từ các chỉ mục do `indices` cung cấp, có hình dạng `indices.shape[:-1] + params.shape[indices.shape[-1]:]`. |
Phương pháp kế thừa
Hằng số
Chuỗi cuối cùng tĩnh công khai OP_NAME
Tên của op này, được biết đến bởi công cụ lõi TensorFlow
Phương pháp công khai
Đầu ra công khai <T> asOutput ()
Trả về tay cầm tượng trưng của tensor.
Đầu vào của các hoạt động TensorFlow là đầu ra của một hoạt động TensorFlow khác. Phương pháp này được sử dụng để thu được một thẻ điều khiển mang tính biểu tượng đại diện cho việc tính toán đầu vào.
public static GatherNd <T> tạo ( Phạm vi phạm vi, thông số Toán hạng <T>, Toán hạng <? mở rộng TNumber > chỉ số)
Phương thức xuất xưởng để tạo một lớp bao bọc một thao tác GatherNd mới.
Thông số
phạm vi | phạm vi hiện tại |
---|---|
thông số | Tenxor để thu thập giá trị. |
chỉ số | Tenxơ chỉ số. |
Trả lại
- một phiên bản mới của GatherNd
Đầu ra công khai đầu ra <T> ()
Các giá trị từ `params` được thu thập từ các chỉ mục do `indices` cung cấp, có hình dạng `indices.shape[:-1] + params.shape[indices.shape[-1]:]`.