将输入源张量中的内容拷贝到输入目标张量指定位置中。
该拷贝为原地拷贝,最终结果修改在输入目标张量中。
例如:输入目标张量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维的维度大小。
struct SetValueParam { SVector<int64_t> starts; SVector<int64_t> ends; SVector<int64_t> strides; };
成员名称 |
类型 |
默认值 |
描述 |
---|---|---|---|
starts |
SVector<int64_t> |
- |
每一维拷贝起始位置。 |
ends |
SVector<int64_t> |
- |
每一维拷贝结束位置后一个位置,拷贝到该位置前一个位置为止。 |
strides |
SVector<int64_t> |
- |
每一维拷贝步长,当前仅支持strides为全1。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
src |
[dim_0,dim_1,...,dim_n] |
float16/float/int32/int64 |
ND |
输入tensor1。 |
dst |
src的所有维度都小于等于dst对应的维度 |
float16/float/int32/int64 |
ND |
输入tensor2。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
dst |
[dim_0,dim_1,...,dim_n] |
float16/float/int32/int64 |
ND |
输出tensor。 注:输出dst与同名输入指向同一地址,即进行原地修改。 |
输入: 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]]