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

aclnnGridSampler2DBackward

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:的反向传播,完成张量input与张量grid的梯度计算。
  • 计算公式:
    • 计算流程:

      1. 根据grid存储的(x, y)值,计算出映射到input上的坐标,这些坐标和alignCorners、paddingMode有关。
      2. 根据输入的interpolationMode,选择使用bilinear、nearest不同插值模式计算该坐标周围点分配到梯度的权重值。
      3. 根据grad存储的梯度值乘上对应点的权重值,计算出最终dx、dgrid的结果。
    • 其中: grad、input、grid、dx、dgrid的尺寸如下:

      grad:(N,C,Hout,Wout)input:(N,C,Hin,Win)grid:(N,Hout,Wout,2)dx:(N,C,Hin,Win)dgrid:(N,Hout,Wout,2)grad: (N, C, H_{out}, W_{out})\\ input: (N, C, H_{in}, W_{in})\\ grid: (N, H_{out}, W_{out}, 2)\\ dx: (N, C, H_{in}, W_{in})\\ dgrid: (N, H_{out}, W_{out}, 2)

      其中grad、input、grid、dx、dgrid中的N是一致的,grad、input和dx中的C是一致的,input和dx中的HinH_{in}WinW_{in}是一致的,grad、grid和dgrid中的HoutH_{out}WoutW_{out}是一致的,grid最后一维大小为2,表示input像素位置信息为(x, y),会将x和y的取值范围归一化到[-1, 1]之间,(-1, 1)表示左上角坐标,(1, -1)表示右下角坐标。

      • 对于超出范围的坐标,会根据paddingMode进行不同处理:

        • paddingMode="zeros",表示对越界位置用0填充。
        • paddingMode="border",表示对越界位置用边界值填充。
        • paddingMode="reflection",表示对越界位置用边界值的对称值填充。
      • 对input采样时,会根据interpolationMode进行不同处理:

        • interpolationMode="bilinear",表示取input中(x, y)周围四个坐标的加权平均值。
        • interpolationMode="nearest",表示取input中距离(x, y)最近的坐标值。

函数原型

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

[object Object]
[object Object]

aclnnGridSampler2DBackwardGetWorkspaceSize

  • 参数说明:

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

      参数[object Object][object Object][object Object][object Object][object Object]的数据类型不支持BFLOAT16、DOUBLE。

  • 返回值:

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

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

    [object Object]

aclnnGridSampler2DBackward

  • 参数说明:

    [object Object]
  • 返回值:

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

约束说明

  • 确定性计算:
    • aclnnGridSampler2DBackward默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。确定性实现需同时满足如下条件:
      • 输入和输出的数据类型不为DOUBLE。
      • 输入和输出的C轴取值小于等于2048。

调用示例

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

[object Object]