AsStridedOperation

功能

根据指定参数,使用输入tensor生成一个数据重新排布过的输出tensor。

算子上下文

图1 AsStridedOperation

算子功能实现描述

AsStrided算子的功能是基于已有的张量创建一个新的视图(view),可以通过指定形状(shape)和步长(strides)来重新排列元素。

映射关系(以输入为 3x3 shape、输出为 2x2 shape 为例)

映射关系为:outTensor[i][j] -> v_inTensor[ i * stride[0] + j * stride[1] + offset[0]]。

其中:v_inTensor 为 输入tensor展开的一维向量。

图2 AsStrided算子实现原理(offset为0时)

定义

struct AsStridedParam {
    SVector<int64_t> size;
    SVector<int64_t> stride;
    SVector<int64_t> offset;
};

参数列表

成员名称

类型

默认值

描述

size

SVector<int64_t>

-

输出tensor的shape。

“size”的长度要求小于或等于8且各元素要求大于0。

stride

SVector<int64_t>

-

用于从输入tensor推导输出tensor的各维度的步长。

“stride”的长度要求与size一致,各元素要求大于或等于0。

offset

SVector<int64_t>

-

输出tensor内存相对于输入tensor内存的偏移,作为常数使用。

“offset”的长度要求为1且元素要求大于或等于0。

输入

参数

维度

数据类型

格式

描述

x

[din_0, ..., din_n]

float16/int64

ND

输入tensor。

输出

参数

维度

数据类型

格式

描述

y

[dout_0, ..., dout_m]

float16/int64

ND

输出tensor

规格约束

Param参数约束