PadV3
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
-
算子功能:对输入tensor做填充。
-
示例:
输入tensor([[0,1,2]]) paddings([2,2]) 1.mode("REFLECT") 输出为([[2,1,0,1,2,1,0]]) 2.mode("SYMMETRIC") 输出为([[1,0,0,1,2,2,1]]) 3.mode("constant") 输出为([[0,0,0,1,2,0,0]]) 2.mode("edge") 输出为([[0,0,0,1,2,2,2]])
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待进行扩充的原始tensor。 | INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BF16, FLOAT16, FLOAT, DOUBLE, BOOL | ND |
| paddings | 输入 | 扩充的配置。 | INT32、INT64 | ND |
| constant_values | 输入 | constant模式下填充常量的值。 | INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BF16, FLOAT16, FLOAT, DOUBLE, BOOL | ND |
| mode | 属性 | 填充模式,包括常量"constant"、边缘"edge"、反射"REFLECT"以及对称"SYMMETRIC"四种选项。 | string | ND |
| paddings_contiguous | 属性 | 用于控制paddings这个张量的存储是否是“连续的”。 | bool | ND |
| y | 输出 | 进行扩充后的tensor。 | INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BF16, FLOAT16, FLOAT, DOUBLE, BOOL | ND |
-
paddings
paddings的第0维表示对输入x第0维的扩充配置,以此类推。每一行表示对应维度上的填充数量(左/右、前/后、上/下等)。对于每一行[a, b],a表示在该维度的开头填充的元素数,b表示在该维度的末尾填充的元素数(在paddings_contiguous为true的情况下)。 -
mode constant模式下,填充常量值,常量值在输入constant_values中表示,当constant_values为空时表示填充0。
edge模式下,以输入x的边缘值进行填充。 REFLECT模式下,以镜像的方式填充,镜像时不会包括边界本身。
在SYMMETRIC模式下,以镜像的方式填充,镜像时会包含边界本身。 -
paddings_contiguous
若为true时,paddings按 行主序(row-major) 排列。
例如[[2,2],[1,1]]表示:第0维:左边填2,右边填2。 第1维:左边填1,右边填1。若为false时,paddings按 列主序(column-major) 排列。
例如[[2,1],[2,1]]表示:第0维:左边填2,右边填2。 第1维:左边填1,右边填1。
约束说明
在paddings_contiguous = true即行主序的情况下: paddings的形状需要为[rank, 2],其中rank为输入x的维度数。 对于每一行paddings[i],填充元素数不得超过其对应x[i]的元素数。即在REFLECT模式下,paddings[i][0]和paddings[i][1] <= x[i].length-1;在SYMMETRIC模式下,paddings[i][0]和paddings[i][1] <= x[i].length。
在paddings_contiguous = false即列主序的情况下,REFLECT模式和SYMMETRIC模式的paddings约束对应同理。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_constant_pad_nd | 通过aclnnConstantPadNd接口方式调用constant模式的pad_v3算子。 |
| aclnn调用 | test_aclnn_replication_pad_1d | 通过aclnnReplicationPad1d的接口方式调用edge模式下的pad_v3算子,填充输入tensor的最后一维 |
| aclnn调用 | test_aclnn_replication_pad_2d | 通过aclnnReplicationPad2d的接口方式调用edge模式下的pad_v3算子,填充输入tensor的最后两维 |
| aclnn调用 | test_aclnn_replication_pad_3d | 通过aclnnReplicationPad3d的接口方式调用edge模式下的pad_v3算子,填充输入tensor的最后三维 |