Slice#
The slice operation extracts a portion of a tensor:
\( Y = X[start_0:end_0, start_1:end_1, ..., start_n:end_n] \)
Where \(X\) is the input tensor, \(Y\) is the output tensor, and \(start_i\) and \(end_i\) are the start and end indices for the \(i\)-th dimension.
The operation allows for flexible slicing across any number of dimensions, supporting Python-style slice syntax including start, stop, and step parameters.
C++ API#
std::shared_ptr<Tensor_attributes>
Slice(std::shared_ptr<Tensor_attributes> input, Slice_attributes);
Slice attributes is a lightweight structure with setters:
Slice_attributes&
set_slices(std::vector<std::pair<int64_t, int64_t>> const value)
Slice_attributes&
set_name(std::string const&)
Slice_attributes&
set_compute_data_type(DataType_t value)
Python API:#
slice
input
The input tensor to be sliced
slices
A list of Python slice objects, one for each dimension
name
Optional name for the operation
compute_data_type
Optional compute data type for the operation
Example usage:
# Create an input tensor
input_tensor = graph.tensor(dims = [4, 8, 16])
# Perform slicing
sliced_tensor = graph.slice(input_tensor,
slices=[slice(1, 3), slice(2, 6), slice(0, 16)],
name="my_slice",
compute_data_type=cudnn.float32)