mindspore.ops.gather
- mindspore.ops.gather(input_params, input_indices, axis, batch_dims=0)[source]
Returns the slice of the input tensor corresponding to the elements of input_indices on the specified axis.
The following figure shows the calculation process of Gather commonly:
where params represents the input input_params, and indices represents the index to be sliced input_indices.
Note
The value of input_indices must be in the range of [0, input_param.shape[axis]). On CPU and GPU, an error is raised if an out of bound indice is found. On Ascend, the results may be undefined.
The data type of input_params cannot be mindspore.bool_ .
The shape of returned tensor is
.
- Parameters
- Returns
Tensor
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> import mindspore >>> # case1: input_indices is a Tensor with shape (5, ). >>> input_params = mindspore.tensor([1, 2, 3, 4, 5, 6, 7], mindspore.float32) >>> input_indices = mindspore.tensor([0, 2, 4, 2, 6], mindspore.int32) >>> axis = 0 >>> output = mindspore.ops.gather(input_params, input_indices, axis) >>> print(output) [1. 3. 5. 3. 7.] >>> # case2: input_indices is a Tensor with shape (2, 2). When the input_params has one dimension, >>> # the output shape is equal to the input_indices shape. >>> input_indices = mindspore.tensor([[0, 2], [2, 6]], mindspore.int32) >>> axis = 0 >>> output = mindspore.ops.gather(input_params, input_indices, axis) >>> print(output) [[1. 3.] [3. 7.]] >>> # case3: input_indices is a Tensor with shape (2, ) and >>> # input_params is a Tensor with shape (3, 4) and axis is 0. >>> input_params = mindspore.tensor([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], mindspore.float32) >>> input_indices = mindspore.tensor([0, 2], mindspore.int32) >>> axis = 0 >>> output = mindspore.ops.gather(input_params, input_indices, axis) >>> print(output) [[ 1. 2. 3. 4.] [ 9. 10. 11. 12.]] >>> # case4: input_indices is a Tensor with shape (2, ) and >>> # input_params is a Tensor with shape (3, 4) and axis is 1, batch_dims is 1. >>> input_params = mindspore.tensor([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], mindspore.float32) >>> input_indices = mindspore.tensor([0, 2, 1], mindspore.int32) >>> axis = 1 >>> batch_dims = 1 >>> output = mindspore.ops.gather(input_params, input_indices, axis, batch_dims) >>> print(output) [ 1. 7. 10.]