SliceOperation
功能
从输入张量某个起始位置中提取指定大小的切片。
算子上下文
图1 SliceOperation算子上下文


定义
struct SliceParam { SVector<int64_t> offsets; SVector<int64_t> size; };
参数列表
成员名称 |
类型 |
默认值 |
描述 |
---|---|---|---|
offsets |
SVector<int64_t> |
- |
每个维度切片的起始位置。
|
size |
SVector<int64_t> |
- |
每个维度切片的大小。
|
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[dim_0,dim_1,...,dim_n] |
float16/float/int8/bool/int32/uint32/bf16 |
ND |
输入tensor。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[dim_0,dim_1,...,dim_n] |
float16/float/int8/bool/int32/uint32/bf16 与x的数据类型相同 |
ND |
输出tensor,维度的大小为size指定的大小。 |
规格约束
- 当offsets[i]小于0,第i维的维度大小为dimNum时,其含义是从dimNum+offsets[i]位置开始提取,例如offsets[i]= -1,输入x tensor的第i维大小为dimNum,则第i维切片的起始位置为dimNum - 1。
- 当offsets[i]小于0时,且第i维的维度大小为dimNum,要求dimNum与offsets[i]之和大于等于0。
- 当size[i] = -1时,表示切片的结束位置是第i维的最后一个位置。如果第i维的维度大小为dimNum,则结束位置为dimNum - 1。
- size中元素要求大于等于-1。且offsets[i] + size[i]须在x的第i维维度的大小范围内。
调用接口示例
- 输入
x = [[ -78.9, 78.8, 32.22, 49.7, 82.8, 24.77], [ 72.2, 20.89, 55.16, 85.5, 72.8, 94.8], [ 11.36, -83.56, 65.94, -46.94, 72.44, 68.7]] offsets = [1, 2] size = [2, 4]
在第0维上,从下标为1开始切片长度为2。
在第1维上从下标为2开始向后切片长度为4 (2+4 <= 6)。
- 输出
y.dim = [2, 4] y = [[ 55.1562, 85.5000, 72.8125, 94.8125], [ 65.9375, -46.9375, 72.4375, 68.6875]]
若size中的维度为-1, 表示自动推导输出shape。