Rockchip · AI & Linux Hub

AI-инференс

RKNN2 V2.5.0 · RK3566/RK3568:Формы, срезы и транспонирование

RKNN2 V2.5.0 · RK3566/RK3568:Формы, срезы и транспонирование · Полные параметры и ограничения операторов по оригиналу V2.5.0.

· ArmSoM Editorial · Rockchip source documentation · 8 мин чтения

Этот справочник платформ 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 48–58; EN 50–60.

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 · Ввод/вывод модели, выравнивание и ограничения свёрток

Relu

Заменяет отрицательные значения входного тензора нулём, оставляя положительные без изменений.

Входы

  • input:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer
    • Поддержка расширения размерностей
      • Нет

Выходы

  • output:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

  • T1:int8(Tensor),float16(Tensor)

Прочие возможности

  • Совместная работа нескольких ядер: ещё не поддерживается.

Clip/ReLU6

Ограничивает значения входного тензора диапазоном [0,6].

Входы

  • input:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer
    • Поддержка расширения размерностей
      • Нет

Выходы

  • output:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

  • T1:int8(Tensor),float16(Tensor)

Прочие возможности

  • Совместная работа нескольких ядер: ещё не поддерживается.

PRelu

Масштабирует отрицательные значения входного тензора обучаемым параметром, оставляя положительные без изменений.

Входы

  • input:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer/per-channel
    • Поддержка расширения размерностей
      • Нет

Выходы

  • output:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer/per-channel

Атрибуты

  • slope: коэффициент PRelu.
    • Поддерживается только один скаляр или коэффициенты по размерности C.

Ограничения типов данных

  • T1:int8(Tensor),float16(Tensor)

Прочие возможности

  • Совместная работа нескольких ядер: ещё не поддерживается.

LeakyRelu

Масштабирует отрицательные значения входного тензора фиксированным коэффициентом, оставляя положительные без изменений.

Входы

  • input:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer
    • Поддержка расширения размерностей
      • Нет

Выходы

  • output:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

  • T1:int8(Tensor),float16(Tensor)

Прочие возможности

  • Совместная работа нескольких ядер: ещё не поддерживается.

Reshape

Возвращает тензор заданной формы, не изменяя входные данные и число элементов.

Входы

  • input:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Выходы

  • output:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

  • T1:int8(Tensor),float16(Tensor)

Атрибуты

  • shape:int
    • Задаёт форму выходного тензора.

Прочие возможности

  • Совместная работа нескольких ядер: ещё не поддерживается.

Resize

Изменяет размер входного тензора. Обычно каждое выходное значение вычисляется как взвешенное среднее соседних значений (точек выборки) входного тензора.

Входы

  • X:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer
  • roi(optional):T2
    • Пока не поддерживается.
  • scales(optional):T2
    • Массив коэффициентов масштабирования по каждой размерности.
  • sizes(optional):T3
    • Целевой размер выходного тензора.

Выходы

  • Y:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

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

Атрибуты

  • antialias:int (по умолчанию 0)
    • Настройка сейчас не поддерживается.
  • axes:int[]
    • Настройка сейчас не поддерживается.
  • coordinate_transformation_mode:strings (по умолчанию ”half_pixel”)
    • Сейчас поддерживаются только half_pixel, pytorch_half_pixel и align_corners.
  • cubic_coeff_a: float (по умолчанию -0.75)
    • Настройка сейчас не поддерживается.
  • exclude_outside:int (по умолчанию 0)
    • Настройка сейчас не поддерживается.
  • extrapolation_value:float (по умолчанию 0)
    • Настройка сейчас не поддерживается.
  • keep_aspect_ratio_policy:strings (по умолчанию ”stretch”)
    • Настройка сейчас не поддерживается.
  • mode:strings (по умолчанию ”nearest”)
    • Сейчас можно настроить только nearest и linear.
  • nearest_mode:strings (по умолчанию ”round_prefer_floor”)
    • Настройка пока не поддерживается. Примечание о поддержке: сейчас поддерживается только целочисленное масштабирование по ширине и высоте с множителем 2–8. Вход (1,c,1,1) можно увеличить до (1,c,h,w).

Slice

Получает срез текущего вектора по правилам срезов NumPy.

Входы

  • input_tensor:T
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Выходы

  • output:T
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

  • T:int8(Tensor),float16(Tensor)

Атрибуты

  • starts:int(Tensor)
    • Начальная позиция среза: без ограничений.
  • ends:int(Tensor)
    • Конечная позиция среза: без ограничений.
  • axes:int(Tensor)
    • Выбор осей среза: любые оси 0~3, включая несколько одновременно.
  • steps:int(Tensor)
    • Выбирает шаг по соответствующей оси среза.
    • При height*width==1&&channel%subc==0&&starts[1]%subc==0&&ends[1]%subc==0&&steps[1]<=subc значения steps могут отличаться от 1. Иначе SliceOP может выполняться на NPU только при steps==[1,1,1,1].

Split

Делит вектор вдоль axis на num_outputs векторов; split задаёт размеры результатов вдоль axis.

Входы

  • input_tensor:T
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Выходы

  • output:T
    • Один или несколько выходных векторов согласно num_outputs.
    • shape: определяется разбиением.
    • Поддержка квантования
      • per-layer

Ограничения типов данных

  • T:int8(Tensor),float16(Tensor)

Атрибуты

  • axis:int
    • axis∈{0,1,2,3}
  • num_outputs:int
  • split:int(Tensor)

Sub

  • Выполняет поэлементное двоичное вычитание (C=A-B) с многонаправленным broadcasting в стиле 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:int8(Tensor),float16(Tensor)
  • T2:float(constTensor)

Tile

Создаёт тензор повторением заданного тензора, как функция NumPy tile, но без расширения размерностей.

Входы

  • input:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer
  • repeats:T2
    • shape:[batch,channel,height,width]

Выходы

  • output:T1
    • shape:[batch,channel,height,width]
    • Поддержка квантования
      • per-layer

Ограничения типов данных

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

Transpose

Транспонирует входной тензор.

Входы

  • X:T1
    • shape:[n1,c1,h1,w1]
      • Подробные ограничения приведены в списке атрибутов.
    • Поддержка квантования
      • per-layer

Выходы

  • Y:T1,T2
    • shape:[n2,c2,h2,w2]
      • Подробные ограничения приведены в списке атрибутов.
    • Поддержка квантования
      • per-layer

Атрибуты

  • perm, порядок транспонируемых осей: ограничения для разных perm приведены ниже (p=8192,q=2048).
    • perm=[0,1,2,3]
      • Без ограничений
    • perm=[0,1,3,2]
      • Не поддерживается
    • perm=[0,2,3,1]
      • Не поддерживается
    • perm=[0,2,1,3]
      • Не поддерживается
    • perm=[0,3,1,2]
      • Не поддерживается
    • perm=[0,3,2,1]
      • Не поддерживается
    • perm=[1,0,2,3]
      • Не поддерживается
    • perm=[1,0,3,2]
      • Не поддерживается
    • perm=[1,2,0,3]
      • Не поддерживается
    • perm=[1,2,3,0]
      • Не поддерживается
    • perm=[1,3,0,2]
      • Не поддерживается
    • perm=[1,3,2,0]
      • Не поддерживается
    • perm=[2,1,0,3]
      • T1,T2:c1<8192,n<8192,h1*w1<8192,(h1=w1=1,n1%4=0)or(n1=h1=1,h1%4=0)
    • perm=[2,1,3,0]
      • T1,T2:c1<8192,n<8192,h1*w1<8192,(h1=w1=1,n1%4=0)or(n1=h1=1,h1%4=0)
    • perm=[2,0,3,1]
      • Не поддерживается
    • perm=[2,0,1,3]
      • Не поддерживается
    • perm=[2,3,1,0]
      • Не поддерживается
    • perm=[2,3,0,1]
      • Не поддерживается
    • perm=[3,0,2,1]
      • Не поддерживается
    • perm=[3,0,1,2]
      • Не поддерживается
    • perm=[3,2,0,1]
      • Не поддерживается
    • perm=[3,2,1,0]
      • Не поддерживается
    • perm=[3,1,0,2]
      • T1,T2:c1<8192,n<8192,h1*w1<8192,(h1=w1=1,n1%4=0)or(n1=h1=1,w1%4=0)
    • perm=[3,1,2,0]
      • T1,T2:c1<8192,n<8192,h1*w1<8192,(h1=w1=1,n1%4=0)or(n1=h1=1,w1%4=0)

Ограничения типов данных

  • T1:int8(Tensor)
  • T2:int16(Tensor),float16(Tensor)

Прочие возможности

  • Совместная работа нескольких ядер: ещё не поддерживается.

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