Этот справочник платформ 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.
Серия справочников операторов
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]
- Поддерживаемые режимы: constant,reflect.
Прочие возможности
- Совместная работа нескольких ядер: ещё не поддерживается.
MaxPool
MaxPool получает входной тензор X и выполняет максимальный пулинг согласно размеру ядра, шагу и длине pad. Для подмножеств входного тензора, заданных ядром, вычисляется максимум, а данные с пониженной дискретизацией помещаются в выходной тензор Y для дальнейшей обработки. Пространственный размер выхода зависит от явного заполнения (pads) либо автоматического (auto_pad). Здесь используется только явное заполнение.
Входы
- input:T1
- shape:[batch,channel,height,width]
- channel∈(0,8192]
- height∈(0,7]
- width∈(0,7]
- shape:[batch,channel,height,width]
Выходы
- 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]
- shape:[batch,channel,height,width]
Выходы
- 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
- Не поддерживается (инструмент преобразует в свёртку).
