Method gather
static member gather: Tensor<int64> option list -> Tensor<'T> -> Tensor<'T>
Selects elements from a tensor according to specified indices.
Declaration
static member gather: indices:Tensor<int64> option list -> src:Tensor<'T> -> Tensor<'T>
Parameters
Type | Name | Description |
---|---|---|
Tensor<int64> option list | indices | A list of tensors, one per dimension of |
Tensor<'T> | src | The tensor containing the source values. |
Returns
Type | Description |
---|---|
Tensor<'T> | Result with the shape of the (broadcasted) tensors specified in |
Remarks
The output element with indices [i_0; i_1; i_2; ...]
is given by the source element with indices
[j_0; j_1; j_2; ...]
, where each index j_k
is given by j_k = indices.[k].[i_0; i_1; i_2; ...]
.
If indices.[k]
is None
, then j_k = i_k
is assumed instead.
Index dimensions beyond the number of target dimensions must not be None
.
The tensors indices
and src
must have the same storage.
All index tensors are broadcasted to the same size.
Examples
let src = HostTensor.ofList2D [[0.0; 0.1; 0.2; 0.3]
[1.0; 1.1; 1.2; 1.3]
[2.0; 2.1; 2.2; 2.3]]
let i0 = HostTensor.ofList [1L; 2L; 0L; 0L]
let i1 = HostTensor.ofList [3L; 1L; 0L; 3L]
let g = Tensor.gather [Some i0; Some i1] src // g = [1.3000 2.1000 0.0000 0.3000]
// Using None instead of an index tensor.
let j1 = HostTensor.ofList [3L; 1L; 0L]
let g2 = Tensor.gather [None; Some j1] src // g2 = [0.3000 1.1000 2.0000]