昇腾社区首页
中文
注册
开发者
下载

aclnnUpsampleLinear1dBackward

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:的反向传播。

  • 计算公式:

    • 正向的核心算法逻辑:
      1. 将目标图像缩放到和原始图像一样大的尺寸。
      2. 计算缩放之后的目标图像的点,以及前后相邻的原始图像的点。
      3. 分别计算相邻点到对应目标点的权重,按照权重相乘累加即可得到目标点值。
    • 具体计算逻辑: 缩放方式分为角对齐和边对齐,角对齐表示按照原始图片左上角像素中心点对齐,边对齐表示按照原始图片左上角顶点及两条边对齐,在计算缩放系数和坐标位置时存在差异。则有以下公式:scale={(inputSize[2]1)/(outputSize[0]1)alignCorners=true1/scalesalignCorners=false&scales>0inputSize[2]/outputSize[0]alignCorners=falsescale =\begin{cases} (inputSize[2]-1) / (outputSize[0]-1) & alignCorners=true \\ 1 / scales & alignCorners=false\&scales>0\\ inputSize[2] / outputSize[0] & alignCorners=false \end{cases} 因此,对于output的某个方向上的点p(x,y),映射回原始图像中的点记为q(x',y'),则有关系:x={xscalealignCorners=trueMAX(0,(x+0.5)scale0.5)alignCorners=falsex' =\begin{cases} x * scale & alignCorners=true \\ MAX(0,{(x+0.5)*scale-0.5}) & alignCorners=false \end{cases}
      • 记:

        x0=int(x),x1=int(x)+1,lambda0=x1x,lambda1=1lambda0x_{0} =int(x'),x_{1} =int(x')+1, lambda_{0} = x_{1}-x', lambda_{1} = 1-lambda_{0}
      • 则有以下公式:

        V(px)=V(px0)lambda0lambdb0+V(px1)lambda1lambdb0{V(p_{x})} = {V(p_{x0})} * {lambda_{0}} * {lambdb_{0}}+ {V(p_{x1})} * {lambda_{1}} * {lambdb_{0}}
      • 假设:正向插值的输出图像out (x)(x)受原图像input (xi)(x_i)影响,则有:

        gradInput(xi)+=gradOut(x)lambd(xi)gradInput(x_i) += gradOut(x) * lambd(x_i)

函数原型

每个算子分为,必须先调用“aclnnUpsampleLinear1dBackwardGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnUpsampleLinear1dBackward”接口执行计算。

[object Object]
[object Object]

aclnnUpsampleLinear1dGetWorkspaceSize

  • 参数说明:

    [object Object]
    • [object Object]Atlas 训练系列产品[object Object]:

      入参[object Object]和出参[object Object]的数据类型仅支持FLOAT32、FLOAT16。

    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:

      入参[object Object]:当gradOut的shape与inputSize的shape不相同时,数据类型仅支持FLOAT32、FLOAT16。

  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclnnUpsampleLinear1dBackward

  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

约束说明

  • 参数[object Object][object Object]的shape约束:
    • 每个维度的取值小于等于2^20。
    • 参数[object Object]的N轴和C轴与[object Object]保持一致。
    • 内存占用需小于60G。内存占用的计算公式如下:(gradOut_L+out_L+out_L)NCsizeof(dtype)<60102410241024(gradOut\_L + out\_L + out\_L) * N * C * sizeof(dtype) < 60 * 1024 * 1024 * 1024 其中:
      • N代表输入和输出的N轴。
      • C代表输入和输出的C轴。
    • N * C < 2^31
  • 入参[object Object]和出参[object Object]的数据格式不为NCL或ND时,输入其他数据格式默认按照NCL处理。
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:输入数据缩放场景放大倍数必须小于等于500,即:outputSize[0]/(输出shape的长度L)<=500outputSize[0]/(输出shape的长度L)<=500
  • 参数outputSize与参数scales,在使用时二选一,即:
    • 当alignCorners为True:
      • outputSize等于1,scales的值为0。
      • 其他情况下使用入参inputSize和outputSize的参数值,且:scales=(inputSize_L1)/(outputSize1)scales=(inputSize\_L-1)/(outputSize-1)
    • 当alignCorners为False:
      • 当入参scales的值小于等于0时,使用入参outputSize的参数值,即:scales=(inputSize_L/outputSize)scales=(inputSize\_L / outputSize)
      • 当入参scales的值大于0时,当outputSize=[floor(inputSize_Lscales)]outputSize=[floor(inputSize\_L * scales)]不成立时,使用入参outputSize的参数值;否则使用入参scales的值。
  • 确定性计算:
    • aclnnUpsampleLinear1dBackward默认确定性实现。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]