news 2026/5/9 18:29:37

CANN/cann-bench ResizeBilinear算子API描述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/cann-bench ResizeBilinear算子API描述

ResizeBilinear 算子 API 描述

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

1. 算子简介

使用双线性插值调整图像大小。

主要应用场景

  • 图像预处理中的缩放与分辨率调整
  • 特征金字塔网络(FPN)中的上采样操作
  • 语义分割中的特征图恢复到原始分辨率
  • 目标检测中不同尺度特征的对齐

算子特征

  • 难度等级:L2(FusedComposite)
  • 单输入单输出,输入为 4D 张量 (N, C, H, W),输出空间维度由 output_size 或 scale_factor 指定

2. 算子定义

数学公式

$$ y = \text{resize_bilinear}(x, \text{size}) $$

对输入张量的空间维度 (H, W) 进行双线性插值缩放。对于输出位置 $(i, j)$,根据其在输入空间中的映射坐标 $(h, w)$,利用周围 4 个最近邻像素的值进行加权平均:

$$ y(i, j) = (1-\alpha)(1-\beta) \cdot x(\lfloor h \rfloor, \lfloor w \rfloor) + \alpha(1-\beta) \cdot x(\lceil h \rceil, \lfloor w \rfloor) + (1-\alpha)\beta \cdot x(\lfloor h \rfloor, \lceil w \rceil) + \alpha\beta \cdot x(\lceil h \rceil, \lceil w \rceil) $$

其中 $\alpha = h - \lfloor h \rfloor$,$\beta = w - \lfloor w \rfloor$。

  • align_corners=true:输入输出的角点像素对齐,坐标映射为 $h = i \times \frac{H_{in}-1}{H_{out}-1}$
  • align_corners=false:坐标映射为 $h = (i + 0.5) \times \frac{H_{in}}{H_{out}} - 0.5$

3. 接口规范

算子原型

cann_bench.resize_bilinear(Tensor x, int[] output_size, bool align_corners=false, float[] scale_factor=null) -> Tensor y

输入参数说明

参数类型默认值描述
xTensor必选输入张量,形状为 (N, C, H, W)
output_sizeint[]必选输出尺寸 [output_height, output_width]
align_cornersboolfalse是否对齐角点
scale_factorfloat[]null缩放因子 [scale_height, scale_width],与 output_size 互斥

输出

参数Shapedtype描述
y(N, C, H_out, W_out)与输入 x 相同输出张量,调整大小后的结果

数据类型

输入 dtype输出 dtype
float16float16
float32float32
bfloat16bfloat16

规则与约束

  • 输入 x 必须为 4D 张量,形状为 (N, C, H, W)
  • output_size 和 scale_factor 互斥,两者不能同时指定
  • output_size 为 [output_height, output_width],指定输出空间维度大小
  • scale_factor 为 [scale_height, scale_width],指定缩放比例
  • 输出 dtype 与输入 dtype 一致
  • 支持上采样(输出大于输入)和下采样(输出小于输入)

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 from typing import List, Optional """ ResizeBilinear 算子 Torch Golden 参考实现 使用双线性插值调整图像大小 公式:y = resize_bilinear(x, size) """ def resize_bilinear( x: torch.Tensor, output_size: Optional[List[int]] = None, align_corners: bool = False, scale_factor: Optional[List[float]] = None ) -> torch.Tensor: """ 使用双线性插值调整图像大小 Args: x: 输入张量,形状为 (N, C, H, W) output_size: 输出尺寸 [output_height, output_width] align_corners: 是否对齐角点 scale_factor: 缩放因子 [scale_height, scale_width],与 output_size 互斥 Returns: 输出张量,调整大小后的结果 """ # 使用 PyTorch 的 interpolate 实现双线性插值 y = torch.nn.functional.interpolate( x, size=output_size, scale_factor=scale_factor[0] if scale_factor and len(scale_factor) == 1 else scale_factor, mode='bilinear', align_corners=align_corners ) return y

6. 额外信息

算子调用示例

import torch import cann_bench x = torch.randn(2, 8, 512, 512, dtype=torch.float16, device="npu") y = cann_bench.resize_bilinear(x, output_size=[256, 256], align_corners=False) # 下采样 x = torch.randn(4, 4, 64, 64, dtype=torch.float32, device="npu") y = cann_bench.resize_bilinear(x, output_size=[128, 128], align_corners=True) # 上采样 + 角点对齐 x = torch.randn(1, 16, 128, 128, dtype=torch.bfloat16, device="npu") y = cann_bench.resize_bilinear(x, output_size=[256, 256]) # bfloat16 上采样

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 18:25:34

线性回归:机器学习基础与Python实战指南

1. 线性回归入门&#xff1a;为什么它是机器学习的第一课刚接触机器学习时&#xff0c;我发现几乎所有教程都会从线性回归开始讲起。后来才明白&#xff0c;这不仅因为它的数学形式简单&#xff0c;更因为它包含了监督学习的核心思想——通过数据找规律。想象你是个房地产经纪人…

作者头像 李华
网站建设 2026/5/9 18:20:46

CANN驱动风扇转速查询API

dcmi_get_device_fan_speed 【免费下载链接】driver 本项目是CANN提供的驱动模块&#xff0c;实现基础驱动和资源管理及调度等功能&#xff0c;使能昇腾芯片。 项目地址: https://gitcode.com/cann/driver 函数原型 int dcmi_get_device_fan_speed(int card_id, int de…

作者头像 李华
网站建设 2026/5/9 18:18:29

别再让死区时间毁了你的IGBT整流器!一个基于SVPWM的实时补偿实战

实战指南&#xff1a;SVPWM驱动下IGBT整流器的死区补偿策略 实验室里&#xff0c;示波器屏幕上跳动的波形让你皱起了眉头——三相PWM整流器的并网电流THD又超标了。电压波形明显畸变&#xff0c;而问题很可能就出在那个看似微不足道却影响深远的参数&#xff1a;死区时间。这不…

作者头像 李华
网站建设 2026/5/9 18:15:09

为Claude Code配置Taotoken解决封号与token不足痛点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为Claude Code配置Taotoken解决封号与token不足痛点 1. 场景与需求 在使用Claude Code这类基于Anthropic模型的代码助手时&#x…

作者头像 李华
网站建设 2026/5/9 18:12:49

AI光学硬件加速:1.2Tb/s高光谱视频实时理解平台架构与实践

1. 项目概述&#xff1a;当AI遇见光&#xff0c;一场关于“看见”的革命最近和几个做自动驾驶和工业质检的朋友聊天&#xff0c;大家不约而同地提到了一个痛点&#xff1a;传统的RGB摄像头&#xff0c;甚至多光谱设备&#xff0c;在面对一些复杂场景时&#xff0c;总感觉“力不…

作者头像 李华
网站建设 2026/5/9 18:09:31

预测模型实战:业务适配与特征工程优化

1. 预测模型的应用价值解析预测模型在现代数据分析领域就像一位经验丰富的天气预报员。它能通过历史数据的"蛛丝马迹"&#xff0c;为我们揭示未来可能发生的情况。我在金融风控和供应链管理领域使用预测模型近十年&#xff0c;最深刻的体会是&#xff1a;模型本身的数…

作者头像 李华