Rockchip · AI & Linux Hub

AI 推理

RKNN2 V2.5.0 · RV1103B/RV1106B:循环网络、运算与池化

RKNN2 V2.5.0 · RV1103B/RV1106B:循环网络、运算与池化 · 完整算子参数与限制,按 V2.5.0 原稿整理。

· ArmSoM Editorial · Rockchip source documentation · 4 分钟阅读

本文为 RKNN2 V2.5.0 对应平台的算子参考,供 ArmSoM 开发者选型与模型适配时查阅。不能据此认定所有 ArmSoM 板卡均支持这些算子;需按板卡 SoC、实际 Toolkit2、Runtime、NPU 驱动及 BSP 版本核对。原稿没有统一指定适用 Linux 内核,本文未进行 ArmSoM 硬件验证。

来源:本地中英文《RKNN2 算子支持与约束参考》V2.5.0。中文依中文稿;英俄德依英文稿。两稿分别为 374/384 页。各平台限制独立保留,不将一个平台的支持结论推广到另一个平台。英文稿 I/O 原图与输出表仍含中文,本文保留其来源并另附可编辑的本地化表格。ConvTranpose 等原稿拼写及 LSTM/GRU 原始公式保留;不要将本文公式视为 SDK 实现修正。

原稿页码: CN 324–331; EN 334–341.

Rockchip RKNN2

算子参考系列目录

RKNN2 V2.5.0 · RK3566/RK3568:基础与卷积

RKNN2 V2.5.0 · RK3566/RK3568:循环网络、运算与池化

RKNN2 V2.5.0 · RK3566/RK3568:形状、切片与转置

RKNN2 V2.5.0 · RK3566/RK3568:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK3588:基础与卷积

RKNN2 V2.5.0 · RK3588:循环网络、运算与池化

RKNN2 V2.5.0 · RK3588:形状、切片与转置

RKNN2 V2.5.0 · RK3588:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK3562:基础与卷积

RKNN2 V2.5.0 · RK3562:循环网络、运算与池化

RKNN2 V2.5.0 · RK3562:形状、切片与转置

RKNN2 V2.5.0 · RK3562:激活、归一化与扩展算子

RKNN2 V2.5.0 · RV1103/RV1106:基础与卷积

RKNN2 V2.5.0 · RV1103/RV1106:循环网络、运算与池化

RKNN2 V2.5.0 · RV1103/RV1106:形状、切片与转置

RKNN2 V2.5.0 · RV1103/RV1106:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK3576/RV1126B:基础与卷积

RKNN2 V2.5.0 · RK3576/RV1126B:循环网络、运算与池化

RKNN2 V2.5.0 · RK3576/RV1126B:形状、切片与转置

RKNN2 V2.5.0 · RK3576/RV1126B:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK2118:基础与卷积

RKNN2 V2.5.0 · RK2118:循环网络、运算与池化

RKNN2 V2.5.0 · RK2118:形状、切片与转置

RKNN2 V2.5.0 · RK2118:激活、归一化与扩展算子

RKNN2 V2.5.0 · RV1103B/RV1106B:基础与卷积

RKNN2 V2.5.0 · RV1103B/RV1106B:循环网络、运算与池化

RKNN2 V2.5.0 · RV1103B/RV1106B:形状、切片与转置

RKNN2 V2.5.0 · RV1103B/RV1106B:激活、归一化与扩展算子

RKNN2 V2.5.0 · CPU 算子支持与约束

RKNN2 V2.5.0 · GPU 算子支持与约束

RKNN2 V2.5.0 · 模型输入输出、对齐与卷积限制

Div

执行元素级二进制除法(C=A/B),支持多向Numpy样式的广播

输入列表

  • A:T1,T2
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • [b,c,1,1]
      • [scalar]
  • B:T1,T2
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • [b,c,1,1]
      • [scalar]

输出列表

  • C:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T1:float16(Tensor)
  • T2:float(constTensor)

Expand

根据给定的 shape 和广播规则广播输入张量。广播规则类似于 numpy.array(input) *numpy.ones(shape):维度右对齐;两个对应维度必须具有相同的值,或者其中一个等于1

输入列表

  • input:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
  • shape:T2
    • shape:[batch,channel,height,width]

输出列表

  • output:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T1:int8(Tensor)
  • T2:int64(Tensor)

广播约束

  • [b,c,1,w]->[b,c,h,w],h∈[1,8192]
  • [b,1,1,w]->[b,c,h,w],h∈[1,8192]
  • [b,c,h,1]->[b,c,h,w],w ∈[1,8192]
  • [b,1,h,1]->[b,c,h,w],w ∈[1,8192]
  • [b,c,1,1]->[b,c,h,w],h∈[1,8192],w ∈[1,8192]

Max

计算输入张量的元素级最大值

输入列表

  • A:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • 支持任意维度广播操作
      • 广播约束同Expand算子
  • B:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • 支持任意维度广播操作
      • 广播约束同Expand算子

输出列表

  • C:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer/per-channel

数据类型约束

  • T1:int8(Tensor)

其他支持

  • 多核联合:暂不支持

Mul

执行元素级二进制乘法(C=A*B),支持多向Numpy样式的广播

输入列表

  • A:T1,T2
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • 支持任意维度广播操作
      • 广播约束同Expand算子
  • B:T1,T2
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • 支持任意维度广播操作
      • 广播约束同Expand算子

输出列表

  • C:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T1:int8(Tensor)
  • T2:float(constTensor)

MulRelu

Mul与Relu融合计算,C=Relu(A*B)

输入列表

  • 同Mul

输出列表

  • 同Mul

其他支持

  • 多核联合:支持

Pad

给定一个包含要填充的数据的张量(data),包含轴的开始和结束填充数值的张量(pads),模式(mode),常 量数值(constant_value),生成一个填充张量(output)

输入列表

  • data:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
  • pads:T2
    • shape : [batch_begin, channel_begin, height_begin, width_begin, batch_end, channel_end,height_end,width_end]
  • constant_value(optional):T3
    • shape:[1]
    • 量化支持
      • per-layer

输出列表

  • output:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T1:int8(Tensor)
  • T2:int64(Tensor)
  • T3:float(Scalar),int8(Scalar),float16(Scalar)

属性列表

  • mode:string(默认值constant)
    • 支持模式:constant,reflect
      • constant无限制
      • reflectchannel∈(0,8192],height∈(0,8192],width∈(0,8176]

其他支持

  • 多核联合:尚不支持

MaxPool

MaxPool消耗输入张量X并根据内核大小、步幅大小和pad长度在张量上应用最大池化。最大池化包括 根据内核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量Y中以进行进一步处理。 输出空间形状的计算方式有所不同,具体取决于是否使用显式填充(在使用pads的情况下)或使用自 动填充(在使用auto_pad的情况下)。仅使用显式填充

输入列表

  • input:T1
    • shape:[batch,channel,height,width]
      • channel∈(0,8192]
      • height∈(0,7]
      • width∈(0,7]

输出列表

  • output:T1
    • shape:[batch,channel,height,width]

属性列表

  • kernel_shape:int64(kernel_h,kernel_w)
    • kernel_h∈(0,7]
    • kernel_w∈(0,7]
  • auto_pad:string
    • pad的方式:仅支持NOTSET
  • ceil_mode:int64
    • 使用ceil或floor的方式计算输出的shape:不支持
  • strides:int64(strides_h,strides_w)
    • strides_h∈(0,8]
    • strides_w∈(0,8]
  • count_include_pad:int64[]
    • count_include_pad是否包含pad数值进行计算:1
  • pad:int64(pad_top,pad_left,pad_bottom,pad_right)
    • pad_top∈[0,7]
    • pad_left∈[0,7]
    • pad_bottom∈[0,7]
    • pad_right∈[0,7]

数据类型约束

  • T1:int8(Tensor)
  • T2:float(Tensor)
  • T3:float(Scalar)

GlobalMaxPool

GlobalMaxPool使用输入张量X并对同一通道中的值应用最大池化。这相当于MaxPool的kernel_shape 大小等于input的空间维度。

输入列表

  • input:T1
    • shape:[batch,channel,height,width]
      • channel∈(0,8192]
      • height∈(0,7]
      • width∈(0,7]

输出列表

  • output:T1
    • shape:[batch,channel,height,width]

属性列表

  • kernel_shape:int64(kernel_h,kernel_w)
    • kernel_h∈(0,7]
    • kernel_w∈(0,7]
  • auto_pad:string
    • pad的方式:仅支持NOTSET
  • ceil_mode:int64
    • 使用ceil或floor的方式计算输出的shape:不支持
  • strides:int64(strides_h,strides_w)
    • strides_h∈(0,8]
    • strides_w∈(0,8]
  • count_include_pad:int64[]
    • count_include_pad是否包含pad数值进行计算:1
  • pad:int64(pad_top,pad_left,pad_bottom,pad_right)
    • pad_top∈[0,7]
    • pad_left∈[0,7]
    • pad_bottom∈[0,7]
    • pad_right∈[0,7]

数据类型约束

  • T1:int8(Tensor)
  • T2:float(Tensor)
  • T3:float(Scalar)

AveragePool

  • 不支持(工具端转换成卷积实现)

GlobalAveragePool

  • 不支持(工具端转换成卷积实现)

浏览此主题 → · 入门路线 →