news 2026/5/9 12:25:29

CANN/ops-cv双线性上采样梯度算子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ops-cv双线性上采样梯度算子

UpsampleBilinear2dGrad

【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT×
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 训练系列产品×

功能说明

  • 算子功能:对由多个输入通道组成的输入信号应用2D双线性上采样的反向传播。
  • 计算公式:
    • 正向的核心算法逻辑:

      1. 将目标图像的每一个点映射回原图,得到一个带小数点的坐标。
      2. 根据这个浮点数坐标,计算前后相邻的原始图像的点。
      3. 分别计算相邻点到对应目标点的权重,按照权重相乘累加即可得到目标点值。
    • 具体计算逻辑: 缩放方式分为角对齐和边对齐,角对齐表示按照原始图片左上角像素中心点对齐,边对齐表示按照原始图片左上角顶点及两条边对齐,在计算缩放系数和坐标位置时存在差异。对于一个二维插值点$(N, C, H, W)$,则有以下公式:

      $$ scale_h =\begin{cases} (inputSize[2]-1) / (outputSize[0]-1) & alignCorners=true \ 1 / scales_h & alignCorners=false&scales_h>0\ inputSize[2] / outputSize[0] & alignCorners=false \end{cases} $$

      $$ scale_w =\begin{cases} (inputSize[3]-1) / (outputSize[1]-1) & alignCorners=true \ 1 / scales_w & alignCorners=false&scales_w>0\ inputSize[3] / outputSize[1] & alignCorners=false \end{cases} $$

      因此,对于output的某个方向上的点p(x,y),映射回原始图像中的点记为q(x',y'),则有关系:

      $$ x' =\begin{cases} x * scale_h & alignCorners=true \ MAX(0,{(x+0.5)*scale_h-0.5}) & alignCorners=false \end{cases} $$

      $$ y' =\begin{cases} y * scale_w & alignCorners=true \ MAX(0,{(y+0.5)*scale_w-0.5}) & alignCorners=false \end{cases} $$

      • 记:

        $$ x_{0} =int(x'),x_{1} =int(x')+1, lambda_{0} = x_{1}-x', lambda_{1} = 1-lambda_{0} $$

        $$ y_{0} =int(y'),y_{1} =int(y')+1, lambdb_{0} = y_{1}-y', lambdb_{1} = 1-lambdb_{0} $$

      • 则有以下公式:

        $$ {V(p_{x, y})} = {V(p_{x0, y0})} * {lambda_{0}} * {lambdb_{0}} + {V(p_{x0, y1})} * {lambda_{0}} * {lambdb_{1}} + {V(p_{x1, y0})} * {lambda_{1}} * {lambdb_{0}} + {V(p_{x1, y1})} * {lambda_{1}} * {lambdb_{1}} $$

      • 假设:正向插值的输出图像out $(x, y)$受原图像input $(x_i, y_j)$影响,则有:

        $$ gradInput(x_i,y_j) += gradOutput(x,y) * lambda(x_i,y_j)* lambdb(x_i,y_j) $$

参数说明

参数名输入/输出/属性描述数据类型数据格式
grad_output输入表示反向计算的梯度Tensor,对应公式中的`gradOutput`。FLOAT32、FLOAT16、BFLOAT16ND
output_size属性指定输入空间大小,对应公式中的`outputSize`。size为2,且各元素均大于0。表示指定`grad_output`在H和W维度上的空间大小。LISTINT-
input_size属性指定输出空间大小,对应公式中的`inputSize`。size为4,且各元素均大于零。表示输出`grad_input`分别在N、C、H和W维度上的空间大小。LISTINT-
align_corners可选属性
  • 决定是否对齐角像素点,对应公式中的`alignCorners`。如果设置为true,则输入和输出张量按其角像素的中心点对齐,保留角像素处的值;如果设置为false,则输入和输出张量通过其角像素的角点对齐,并且插值使用边缘值填充用于外界边值。
  • 默认值为false。
BOOL-
scales_h可选属性
  • 指定空间大小的height维度乘数,对应公式中的`scales_h`。
  • 默认值为空。
FLOAT32-
scales_w可选属性
  • 指定空间大小的width维度乘数,对应公式中的`scales_w`。
  • 默认值为空。
FLOAT32-
grad_input输出表示反向计算的输出张量,对应公式中的`gradInput`。数据类型和数据格式与入参`grad_output`的数据类型和数据格式保持一致。FLOAT32、FLOAT16、BFLOAT16ND

Atlas 推理系列产品 、 Atlas 200I/500 A2 推理产品 :输入和输出的数据类型不支持BFLOAT16。

约束说明

调用说明

调用方式样例代码说明
aclnn接口test_aclnn_upsample_bilinear2d_grad通过aclnnUpsampleBilinear2dBackwardV2接口方式调用UpsampleBilinear2dGrad算子。
aclnn接口test_aclnn_upsample_linear1d_backward通过aclnnUpsampleLinear1dBackward接口方式调用UpsampleBilinear2dGrad算子。

【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv

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

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

AI模型不确定性量化:从贝叶斯推理到科学计算实践

1. 不确定性量化:为什么你的AI模型需要“自知之明”?在科学计算和工程决策中,我们常常面临一个尴尬的局面:一个深度学习模型对某个分子的毒性给出了高达0.95的预测置信度,但实验验证却发现它完全错了。或者&#xff0c…

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

训练2万亿参数大模型的实现

1. 万亿参数llm训练的挑战2. 内存与算力约束3. 数据并行与通信优化4. ZeRO零冗余优化器5. 梯度检查点6. FlashAttention7. Ring Attention8. 混合专家模型(MoE)9. 并行策略组合10. 集群故障恢复机制11. 完整训练系统架构12. 趋势与训练成本估算 1. 万亿参…

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

独立开发者如何借助Taotoken多模型能力快速验证产品创意

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何借助Taotoken多模型能力快速验证产品创意 对于独立开发者或小型工作室而言,验证一个AI产品创意的核心在…

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

Hello-Agents 写给想造 Agent 但又怕搞不明白的人

说真的,Agent 这个概念刚出来的时候,我是拒绝的。感觉又是那种“人人都要学大模型”的焦虑营销。直到我真的去翻了 Hello-Agents​ 这个项目。GitHub:44.4k Star / 5.4k Fork​这不是水星,这是真有人在认真写教程。它解决了什么问…

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

CANN/ops-blas tbmv算子测试

tbmv算子实现 【免费下载链接】ops-blas 本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。 项目地址: https://gitcode.com/cann/ops-blas 概述 BLAS tbmv算子实现。 tbmv(Triangular Banded Matrix-Vector Multiplication)算子实现了三角带状矩阵与向…

作者头像 李华