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 · 6 мин чтения

Этот справочник платформ RKNN2 V2.5.0 предназначен для разработчиков ArmSoM при выборе и адаптации моделей. Он не подтверждает поддержку на всех платах ArmSoM: проверьте SoC платы, фактические версии Toolkit2, Runtime, драйвера NPU и BSP. В оригинале не задана единая версия ядра Linux. Аппаратная проверка на ArmSoM не выполнялась.

Источник: предоставленные китайская и английская редакции RKNN2 Supported Operators and Constraints Reference V2.5.0, 374 и 384 страницы. Китайский текст следует китайской редакции; английский, русский и немецкий — английской. Ограничения платформ не объединяются. В английском PDF рисунки и таблицы 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
    • Вычисление выходного shape через ceil или floor: не поддерживается.
  • 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
    • Вычисление выходного shape через ceil или floor: не поддерживается.
  • 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

  • Не поддерживается (инструмент преобразует в свёртку).

Другие статьи по теме → · Учебные маршруты →