| Files | Last commit | Last update |
|---|---|---|
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago |
AvgPoolUpdate
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:计算平均池化的更新值。将求和池化结果除以池化窗口实际覆盖的有效元素个数,得到平均值。x1为求和池化输出,x2为原始输入feature map(仅用于获取输入空间尺寸,不参与数值计算)。
-
计算公式:
y=x1⊘mean_matrixy = x1 \oslash \text{mean\_matrix}
其中mean_matrix为池化除数矩阵:
mean_matrix[h,w]=mean_h×mean_w\text{mean\_matrix}[h, w] = \text{mean\_h} \times \text{mean\_w}
mean_h=max(min(min(h⋅sh−pt+kh, (Hout−1−h)⋅sh−pb+kh), min(kh, Hin)), 1)\text{mean\_h} = \max(\min(\min(h \cdot s_h - p_t + k_h,\; (H_{out}-1-h) \cdot s_h - p_b + k_h),\; \min(k_h,\; H_{in})),\; 1)
mean_w=max(min(min(w⋅sw−pl+kw, (Wout−1−w)⋅sw−pr+kw), min(kw, Win)), 1)\text{mean\_w} = \max(\min(\min(w \cdot s_w - p_l + k_w,\; (W_{out}-1-w) \cdot s_w - p_r + k_w),\; \min(k_w,\; W_{in})),\; 1)
式中,shs_h、sws_w为strides的H/W分量,ptp_t、pbp_b、plp_l、prp_r为pads的上/下/左/右分量,khk_h、kwk_w为ksize的H/W分量,HinH_{in}、WinW_{in}为x2的空间输入尺寸,HoutH_{out}、WoutW_{out}为x1的空间输出尺寸。mean_matrix计算使用int64中间变量,除法前cast为x1的dtype。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 求和池化输出结果,公式中的x1。shape为(N, C, H_out, W_out)(NCHW)或(N, H_out, W_out, C)(NHWC)。 | FLOAT16、FLOAT | ND |
| x2 | 输入 | 原始输入feature map,公式中的x2。仅用于获取输入空间尺寸H_in/W_in,不参与数值计算。shape为(N, C, H_in, W_in)(NCHW)或(N, H_in, W_in, C)(NHWC)。 | INT4、INT8、FLOAT16、FLOAT | ND |
| y | 输出 | 平均池化更新结果,公式中的y。shape与x1相同。 | FLOAT16、FLOAT | ND |
| ksize | 属性 | 池化窗口大小,长度为4的列表,各维度顺序与data_format一致。 | ListInt | - |
| strides | 属性 | 池化步长,长度为4的列表,各维度顺序与data_format一致。 | ListInt | - |
| padding_mode | 属性 | 填充模式,取值范围:CALCULATED、VALID、SAME。默认值为CALCULATED。 | String | - |
| pads | 属性 | 填充值,长度为4的列表(top, bottom, left, right)。仅在padding_mode为CALCULATED时生效。默认值为{0, 0, 0, 0}。 | ListInt | - |
| data_format | 属性 | 数据格式,取值范围:NCHW、NHWC。默认值为NHWC。 | String | - |
| ceil_mode | 属性 | 是否使用ceil模式计算输出尺寸。true为ceil,false为floor。默认值为false。 | Bool | - |
| exclusive | 属性 | 是否排除padding区域计入窗口。true为排除padding(使用实际覆盖元素个数),false为使用常量窗口大小。默认值为true。 | Bool | - |
约束说明
- exclusive约束:exclusive必须为true。当exclusive为false时算子无意义(池化因子为常量,无需更新),会报错退出。
- padding_mode与ceil_mode约束:当padding_mode为VALID且ceil_mode为false时,算子无意义(池化因子为常量),会报错退出。
- 输入维度约束:x1和x2必须为4D张量,支持NCHW和NHWC两种data_format。不支持其他维度数。
- ksize约束:ksize为长度4的列表,各分量必须为正整数。H/W分量(k_h, k_w)的取值由data_format决定位置。
- strides约束:strides为长度4的列表,各分量必须为正整数。H/W分量(s_h, s_w)的取值由data_format决定位置。
- pads约束:pads为长度4的列表(top, bottom, left, right),各分量必须为非负整数。仅在padding_mode为CALCULATED时生效;padding_mode为VALID时pads被忽略(置为0);padding_mode为SAME时pads由框架自动计算。
- data_format约束:仅支持NCHW和NHWC。
- padding_mode约束:仅支持CALCULATED、VALID、SAME三种取值。
- dtype约束:x1和y的dtype必须相同(FLOAT16或FLOAT)。x2的dtype独立,支持INT4、INT8、FLOAT16、FLOAT(x2仅用于获取输入空间尺寸,不参与数值计算)。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_avg_pool_update | 参见算子调用完成算子编译和验证。 |