FilesLast commitLast update
2 months ago
2 months ago
20 days ago
2 months ago
29 days ago
2 months ago
1 month ago
README

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 参见算子调用完成算子编译和验证。