cann-bench自适应池化算子
2026/5/10 11:12:36 网站建设 项目流程

AdaptiveAvgPool3D 算子 API 描述

【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台,推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench

1. 算子简介

完成输入张量的3D自适应平均池化计算。

主要应用场景

  • 3D 视频特征的空间和时间维度自适应降采样
  • 点云和体素数据的空间压缩
  • 全局平均池化(output_size=1)用于分类网络的特征聚合
  • 不同分辨率输入统一到固定尺寸输出

算子特征

  • 难度等级:L3(Reduction)
  • 单输入单输出,输入为 [N, C, D, H, W] 5维张量,输出空间维度由 output_size 决定

2. 算子定义

数学公式

$$ y = \text{adaptive_avg_pool3d}(x, \text{output_size}) $$

自适应平均池化根据目标输出尺寸自动计算每个输出位置对应的池化窗口大小和步长,对窗口内元素取平均值。对于每个输出位置 $(d, h, w)$,其对应的输入区域由 output_size 和输入尺寸共同决定。

3. 接口规范

算子原型

cann_bench.adaptive_avg_pool3_d(Tensor x, list[int] output_size) -> Tensor y

输入参数说明

参数类型默认值描述
xTensor必选输入张量,shape 为 [N, C, D, H, W] 的5维张量
output_sizelist[int]必选输出尺寸,格式为 [output_d, output_h, output_w]

输出

参数Shapedtype描述
y[N, C, output_size_d, output_size_h, output_size_w]与输入 x 相同输出张量,池化结果

数据类型

输入 dtype输出 dtype
float32float32
float16float16
bfloat16bfloat16

规则与约束

  • 输入必须为5维张量,shape 格式为 [N, C, D, H, W]
  • output_size 指定输出的空间维度大小
  • 输出 dtype 与输入 dtype 一致
  • 输出的 N 和 C 维度与输入保持一致,仅空间维度 (D, H, W) 发生变化

4. 精度要求

采用生态算子精度标准进行验证。

误差指标

  1. 平均相对误差(MERE):采样点中相对误差平均值

    $$ \text{MERE} = \text{avg}(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)+\text{1e-7}}) $$

  2. 最大相对误差(MARE):采样点中相对误差最大值

    $$ \text{MARE} = \max(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)+\text{1e-7}}) $$

通过标准

数据类型FLOAT16BFLOAT16FLOAT32HiFLOAT32FLOAT8 E4M3FLOAT8 E5M2
通过阈值(Threshold)2^-102^-72^-132^-112^-32^-2

当平均相对误差 MERE < Threshold,最大相对误差 MARE < 10 * Threshold 时判定为通过。

5. 标准 Golden 代码

import torch """ AdaptiveAvgPool3D算子Torch Golden参考实现 完成输入张量的3D自适应平均池化计算 公式: y = adaptive_avg_pool3d(x, output_size) """ def adaptive_avg_pool3_d( x: torch.Tensor, output_size: tuple[int, int, int] ) -> torch.Tensor: """ 完成输入张量的3D自适应平均池化计算 公式: y = adaptive_avg_pool3d(x, output_size) Args: x: 输入张量,shape 为 [N, C, D, H, W] output_size: 输出尺寸,格式为 (output_d, output_h, output_w) Returns: 输出张量,池化结果 """ y = torch.nn.functional.adaptive_avg_pool3d(x, output_size) return y

6. 额外信息

算子调用示例

import torch import cann_bench x = torch.randn(2, 32, 16, 64, 64, dtype=torch.float16, device="npu") y = cann_bench.adaptive_avg_pool3_d(x, [8, 8, 8]) # 自适应池化到 8x8x8 x = torch.randn(2, 64, 32, 128, 128, dtype=torch.float32, device="npu") y = cann_bench.adaptive_avg_pool3_d(x, [1, 1, 1]) # 全局平均池化

【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台,推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询