| Files | Last commit | Last update |
|---|---|---|
| 2 months ago | ||
| 2 months ago | ||
| 20 days ago | ||
| 2 months ago | ||
| 29 days ago | ||
| 2 months ago | ||
| 1 month ago |
StridedSliceAssign
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | × |
| Atlas训练系列产品 | × |
功能说明
-
算子功能:StridedSliceAssign是一种张量切片赋值操作,将输入张量inputValue的内容赋值给目标张量var中由begin、end、strides指定的切片位置,切片以外的区域保持var原值不变。输出var与输入var同名,为in-place语义,输出shape与输入var的shape相同。
-
计算公式:
out[b0:e0:s0,b1:e1:s1,… ]=inputValueout[b_0:e_0:s_0, b_1:e_1:s_1, \dots] = inputValue
切片第i维的长度为:sliceLen[i]=max(0,⌈end[i]−begin[i]strides[i]⌉)sliceLen[i] = \max(0, \lceil\frac{end[i] - begin[i]}{strides[i]}\rceil),其中⌈x⌉\lceil x \rceil表示对xx向上取整。beginbegin和endend为经过负索引归一化与边界截断后的取值:当x<0x < 0时x=x+dimx = x + dim,之后截断到[0,dim][0, dim]区间。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| var | 输入 | 待切片赋值的目标tensor。 | FLOAT16、FLOAT、BFLOAT16、INT32、INT16 | ND |
| begin | 输入 | 切片位置的起始索引,1维常量tensor,长度为var的维数。 | INT64 | ND |
| end | 输入 | 切片位置的终止索引,1维常量tensor,长度为var的维数。 | INT64 | ND |
| strides | 输入 | 切片的步长,1维常量tensor,长度为var的维数。 | INT64 | ND |
| input_value | 输入 | 替换切片内容的tensor,dtype需与var保持一致,shape需严格等于计算得出的切片shape。 | FLOAT16、FLOAT、BFLOAT16、INT32、INT16 | ND |
| var | 输出 | 切片赋值后的结果tensor,与输入var同名,shape与dtype和输入var一致。 | FLOAT16、FLOAT、BFLOAT16、INT32、INT16 | ND |
| begin_mask | 属性 | int类型,第i位为1时忽略begin[i],起始索引取该区间的起点0。默认值为0。 | - | - |
| end_mask | 属性 | int类型,第i位为1时忽略end[i],终止索引取该区间的终点dim。默认值为0。 | - | - |
| ellipsis_mask | 属性 | int类型,至多一位为1,表示该位展开为完整维度的切片。默认值为0。 | - | - |
| new_axis_mask | 属性 | int类型,第i位为1时在该位置插入长度为1的新维。默认值为0。 | - | - |
| shrink_axis_mask | 属性 | int类型,第i位为1时强制end[i]=begin[i]+1且stride为1,收缩该维。默认值为0。 | - | - |
约束说明
- begin、end、strides为值依赖输入,必须能在host侧获取具体数值。
- 输入var支持1D~8D,begin、end、strides的长度必须等于var的维数。
- strides[i]必须大于0,且最内维的stride必须为1。
- input_value的dtype必须与var一致,shape必须严格等于切片计算后的final shape,不支持广播。
- 输出var与输入var为in-place语义,输出shape等于输入var的shape。
- 本算子为纯数据搬运算子,结果位级精确,无精度损失。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_strided_slice_assign | 参见算子调用完成算子编译和验证。 |