SetValueOperation
产品支持情况
硬件型号  | 
是否支持  | 
特殊说明  | 
|---|---|---|
√  | 
-  | 
|
√  | 
-  | 
|
√  | 
-  | 
|
√  | 
不支持bf16数据类型。  | 
|
√  | 
-  | 
功能说明
将输入源张量中的内容拷贝到输入目标张量指定位置中。
该拷贝为原地拷贝,最终结果修改在输入目标张量中。
例如:
输入目标张量dst: (a,b,c),输入源张量src: (d,e,f)
dst[starts[0]: ends[0], starts[1]: ends[1], starts[2]: ends[2]] = src
其中,starts[0]: ends[0]长度为src第0维的维度大小,starts[1]: ends[1]长度为src第1维的维度大小,starts[2]: ends[2]长度为src第2维的维度大小。
算子上下文

定义
1 2 3 4 5 6  | struct SetValueParam { SVector<int64_t> starts; SVector<int64_t> ends; SVector<int64_t> strides; uint8_t rsv[8] = {0}; };  | 
成员
成员名称  | 
类型  | 
默认值  | 
描述  | 
|---|---|---|---|
starts  | 
SVector<int64_t>  | 
-  | 
每一维拷贝起始位置。  | 
ends  | 
SVector<int64_t>  | 
-  | 
每一维拷贝结束位置后一个位置,拷贝到该位置前一个位置为止。  | 
strides  | 
SVector<int64_t>  | 
-  | 
每一维拷贝步长,当前仅支持strides为全1。  | 
rsv[8]  | 
uint8_t  | 
{0}  | 
预留参数。  | 
输入
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
dst  | 
[dim_0,dim_1,...,dim_n]  | 
float16/float/int32/int64/bf16  | 
ND  | 
输入tensor1。  | 
src  | 
src的所有维度都小于等于dst对应的维度  | 
与dst一致  | 
ND  | 
输入tensor2。  | 
输出
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
dst  | 
[dim_0,dim_1,...,dim_n]  | 
与src一致  | 
ND  | 
输出tensor。 注:输出dst与同名输入指向同一地址,即进行原地修改。  | 
约束说明
- 输入src和输入dst的维数、数据类型须相同。
 - 输入src的各维度大小要求小于或等于输入dst对应维度大小。
 - 输入src和输入dst的各维度要求有一个或两个维度不相同,且需要满足:
- 如果有一个维度不相同,则这个维度不能是最高维(第0维)。
 - 如果有两个维度不相同,则其中一个不同的维度必须是最高维(第0维)。
 
 
接口调用示例
输入:
starts = {1,2}
ends = {4,4}
strides = {1,1}
dst=[[ 14,  -2,   2, -10, -12],
     [-11,   3,   2, -18,   6],
     [  1, -18, -12,   9,  -6],
     [ 16, -11,   6,  -6,   3],
     [ 12,  18,  14,  10,   9]]
src=[[  1,   0],
     [ -4,   7],
     [  9, -18]]
输出:
dst=[[ 14,  -2,   2, -10, -12],
     [-11,   3,   1,   0,   6],
     [  1, -18,  -4,   7,  -6],
     [ 16, -11,   9, -18,   3],
     [ 12,  18,  14,  10,   9]]