Diese Plattformreferenz für RKNN2 V2.5.0 unterstützt ArmSoM-Entwickler bei der Modellauswahl und -anpassung. Sie bestätigt keine Unterstützung auf allen ArmSoM-Platinen: SoC, tatsächliche Toolkit2-, Runtime-, NPU-Treiber- und BSP-Versionen müssen geprüft werden. Die Quelle nennt keine einheitliche Linux-Kernel-Version. Es wurden keine ArmSoM-Hardwaretests durchgeführt.
Quelle: die bereitgestellte chinesische und englische RKNN2 Supported Operators and Constraints Reference V2.5.0 mit 374 bzw. 384 Seiten. Chinesisch folgt der chinesischen Ausgabe; Englisch, Russisch und Deutsch folgen der englischen. Plattformgrenzen bleiben getrennt. Das englische PDF enthält chinesische I/O-Abbildungen und Ausgabetabellen; zusätzlich werden editierbare lokalisierte Tabellen bereitgestellt. Schreibweisen wie ConvTranpose und ursprüngliche LSTM/GRU-Gleichungen bleiben erhalten; die Formeln stellen keine Korrekturen der SDK-Implementierung dar.
Quellseiten: CN 285–296; EN 293–305.
Operatorreferenz-Serie
RKNN2 V2.5.0 · RK3566/RK3568:Grundlagen und Faltungen
RKNN2 V2.5.0 · RK3566/RK3568:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RK3566/RK3568:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RK3566/RK3568:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · RK3588:Grundlagen und Faltungen
RKNN2 V2.5.0 · RK3588:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RK3588:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RK3588:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · RK3562:Grundlagen und Faltungen
RKNN2 V2.5.0 · RK3562:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RK3562:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RK3562:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · RV1103/RV1106:Grundlagen und Faltungen
RKNN2 V2.5.0 · RV1103/RV1106:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RV1103/RV1106:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RV1103/RV1106:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · RK3576/RV1126B:Grundlagen und Faltungen
RKNN2 V2.5.0 · RK3576/RV1126B:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RK3576/RV1126B:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RK3576/RV1126B:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · RK2118:Grundlagen und Faltungen
RKNN2 V2.5.0 · RK2118:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RK2118:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RK2118:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · RV1103B/RV1106B:Grundlagen und Faltungen
RKNN2 V2.5.0 · RV1103B/RV1106B:Rekurrente Netze, Arithmetik und Pooling
RKNN2 V2.5.0 · RV1103B/RV1106B:Formen, Slicing und Transposition
RKNN2 V2.5.0 · RV1103B/RV1106B:Aktivierungen, Normalisierung und Erweiterungen
RKNN2 V2.5.0 · Unterstützung und Grenzen der CPU-Operatoren
Div
Führt elementweise binäre Division (C=A/B) mit multidirektionalem Broadcasting nach NumPy-Art aus.
Eingaben
- A:T1,T2
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- [b,c,1,1]
- [scalar]
- B:T1,T2
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- [b,c,1,1]
- [scalar]
Ausgaben
- C:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:float(constTensor)
Expand
Erweitert den Eingabetensor anhand von shape und Broadcasting-Regeln, ähnlich numpy.array(input) *numpy.ones(shape): Dimensionen werden rechtsbündig ausgerichtet; korrespondierende Dimensionen müssen gleich sein oder eine davon muss 1 sein.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- shape:T2
- shape:[batch,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:int64(Tensor)
Broadcasting-Einschränkungen
- [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]
LSTM
Long Short-Term Memory (LSTM). Erweiterungen und Varianten von LSTM heißen exLSTM-Operatoren. Mit (extern) markierte Parameter gelten ausschließlich für exLSTM. Berechnungsformeln:
Equations(Default:f=Sigmoid,g=Tanh,h=Tanh):
i_t = f(x_t · W_i + h_{t−1} · R_i + Wb_i + Rb_i)
f_t = f(x_t · W_f + h_{t−1} · R_f + Wb_f + Rb_f)
c_t = f(x_t · W_c + h_{t−1} · R_c + Wb_c + Rb_c)
o_t = f(x_t · W_o + h_{t−1} · R_o + Wb_o + Rb_o)
C_t = f_t ⊙ C_{t−1} + i_t ⊙ c_t
h_t = o_t ⊙ h(C_t)
Eingaben
- X:T1
- shape:[seq_length,batch_size,input_size]
- seqlength∈(0,8192]
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- inputsize∈(0,8192]
- Quantisierungsunterstützung
- per-layer
- shape:[seq_length,batch_size,input_size]
- W:T1
- shape:[num_directions,4*hidden_size,input_size]
- inputsize∈(0,8192]
- hiddensize∈(0,8192]
- numdirections:1or2
- Quantisierungsunterstützung
- per-layer
- per-channel
- shape:[num_directions,4*hidden_size,input_size]
- R:T1
- shape:[num_directions,4*hidden_size,hidden_size]
- hiddensize∈(0,8192]
- numdirections:1or2
- Quantisierungsunterstützung
- per-layer
- per-channel
- shape:[num_directions,4*hidden_size,hidden_size]
- B:T2
- shape:[num_directions,8*hidden_size]
- hiddensize∈(0,8192]
- numdirections:1or2
- Quantisierungsunterstützung
- per-layer
- per-channel
- shape:[num_directions,8*hidden_size]
- sequence_lens:T3(optional)
- shape:[batch_size]
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- shape:[batch_size]
- initial_h:T1(optional)
- shape:[num_directions,batch_size,hidden_size]
- numdirections:1or2
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- hiddensize∈(0,8192]
- Quantisierungsunterstützung
- per-layer
- shape:[num_directions,batch_size,hidden_size]
- initial_c:T1(optional)
- shape:[num_directions,batch_size,hidden_size]
- numdirections:1or2
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- hiddensize∈(0,8192]
- Quantisierungsunterstützung
- per-layer
- shape:[num_directions,batch_size,hidden_size]
Ausgaben
- Y:T1
- shape:[seq_length,num_directions,batch_size,hidden_size]
- seqlength∈(0,8192]
- numdirections:1or2
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- hiddensize∈(0,8192]
- Quantisierungsunterstützung
- per-layer
- shape:[seq_length,num_directions,batch_size,hidden_size]
- Y_h:T1(optional)
- shape:[num_directions,batch_size,hidden_size]
- numdirections:1or2
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- hiddensize∈(0,8192]
- Quantisierungsunterstützung
- per-layer
- shape:[num_directions,batch_size,hidden_size]
- Y_c:T1(optional)
- shape:[num_directions,batch_size,hidden_size]
- numdirections:1or2
- batchsize∈(0,8192]; Werte größer als 1 müssen Vielfache von 4 sein.
- hiddensize∈(0,8192]
- Quantisierungsunterstützung
- per-layer
- shape:[num_directions,batch_size,hidden_size]
Attribute
- direction(extern):string
- Legt die Berechnungsrichtung von LSTM fest.
- forward: LSTM in Vorwärtsrichtung.
- reverse: LSTM in Rückwärtsrichtung.
- bidirectional: LSTM in beiden Richtungen.
- sequence_size(extern):int
- Legt seqsize der LSTM-Eingabe fest; uneingeschränkt, Ausrichtung auf 4 empfohlen.
- hidden_size(extern):int
- hiddensize der LSTM-Einheit; uneingeschränkt, Ausrichtung auf 8 empfohlen.
- proj_size(extern):int
- proj_size bei projection; projsize∈[0,hiddensize].
- Derzeit auf 0 beschränkt; projection wird noch nicht unterstützt.
- input_forget(extern):int
- Auswahl der cifg-Variante:1(T) oder 0(F). Derzeit auf 0 beschränkt, also noch nicht unterstützt.
- has_projection(extern):int
- projection-Variante:1(T) oder 0(F). Derzeit auf 0 beschränkt, also noch nicht unterstützt.
- input_layout(extern):int
- Legt ein Layout fest, das der Bedeutung der zugehörigen Eingabe-shape entspricht.
- Das angegebene layout und die tatsächlichen Parameter des Operators müssen eingetragen werden: batch_size, sequence_size, hidden_size.
- snc: Eingabe-shape dieses Layouts ist [seqs,batches,input_size].
- (sn)c: Eingabe-shape dieses Layouts ist [seqs*batches,input_size,1,1].
- output_layout(extern):int
- Legt ein Layout fest, das der Bedeutung der zugehörigen Ausgabe-shape entspricht.
- Das angegebene layout und die tatsächlichen Parameter des Operators müssen eingetragen werden: batch_size, sequence_size, hidden_size, directions.
- sbnc: Ausgabe-shape dieses Layouts ist [seqs,directions,batches,hidden_size].
- (sn)c: Ausgabe-shape dieses Layouts ist [seqsbatches,directionsinput_size,1,1].
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:float(Tensor)
- T3:float(Scalar)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
Max
Berechnet das elementweise Maximum der Eingabetensoren.
Eingaben
- A:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Broadcasting entlang beliebiger Dimensionen wird unterstützt.
- Broadcasting-Einschränkungen wie beim Operator Expand.
- B:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Broadcasting entlang beliebiger Dimensionen wird unterstützt.
- Broadcasting-Einschränkungen wie beim Operator Expand.
Ausgaben
- C:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer/per-channel
Datentypbeschränkungen
- T1:float16(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
Mul
Führt elementweise binäre Multiplikation (C=A*B) mit multidirektionalem Broadcasting nach NumPy-Art aus.
Eingaben
- A:T1,T2
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Broadcasting entlang beliebiger Dimensionen wird unterstützt.
- Broadcasting-Einschränkungen wie beim Operator Expand.
- B:T1,T2
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Broadcasting entlang beliebiger Dimensionen wird unterstützt.
- Broadcasting-Einschränkungen wie beim Operator Expand.
Ausgaben
- C:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:float(constTensor)
MulRelu
Fusionierte Berechnung von Mul und Relu,C=Relu(A*B).
Eingaben
- Wie bei Mul.
Ausgaben
- Wie bei Mul.
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: unterstützt.
Pad
Erzeugt aus Datentensor (data), Tensor der Auffüllwerte an Achsenanfang und -ende (pads), Modus (mode) und konstantem Wert (constant_value) einen aufgefüllten Tensor (output).
Eingaben
- data:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- 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]
- Quantisierungsunterstützung
- per-layer
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:int64(Tensor)
- T3:float(Scalar),int8(Scalar),float16(Scalar)
Attribute
- mode:string (Standardwert constant)
- Unterstützte Modi: constant,reflect.
- constant: uneingeschränkt.
- reflectchannel∈(0,8192],height∈(0,8192],width∈(0,8176]
- Unterstützte Modi: constant,reflect.
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
MaxPool
MaxPool verarbeitet Eingabetensor X und wendet Max-Pooling anhand von Kernelgröße, Schrittweite und pad-Längen an. Für durch den Kernel bestimmte Teilmengen wird das Maximum berechnet und in den herunterabgetasteten Ausgabetensor Y zur weiteren Verarbeitung übernommen. Die räumliche Ausgabeform hängt von explizitem Padding (pads) oder automatischem Padding (auto_pad) ab. Hier wird ausschließlich explizites Padding verwendet.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- channel∈(0,8192]
- height∈(0,8192]
- width∈(0,8192]
- shape:[batch,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
Attribute
- kernel_shape:int64(kernel_h,kernel_w)
- kernel_h∈(0,7]
- kernel_w∈(0,7]
- Hinweis: kernel_h=1 und kernel_w=1 zusammen werden nicht unterstützt.
- auto_pad:string
- Padding-Modus: nur NOTSET unterstützt.
- ceil_mode:int64
- Berechnung der Ausgabe-shape mit ceil oder floor: nicht unterstützt.
- strides:int64(strides_h,strides_w)
- strides_h∈(0,8]
- strides_w∈(0,8]
- count_include_pad:int64[]
- count_include_pad, ob pad-Werte in die Berechnung eingehen: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]
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:float(Tensor)
- T3:float(Scalar)
GlobalMaxPool
GlobalMaxPool wendet Max-Pooling auf die Werte jedes Kanals von Eingabetensor X an. Dies entspricht MaxPool mit kernel_shape gleich den räumlichen Dimensionen von input.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- channel∈(0,8192]
- height∈(0,7]
- width∈(0,7]
- shape:[batch,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
Attribute
- kernel_shape:int64(kernel_h,kernel_w)
- kernel_h∈(0,7]
- kernel_w∈(0,7]. Hinweis: kernel_h=1 und kernel_w=1 zusammen werden nicht unterstützt.
- auto_pad:string
- Padding-Modus: nur NOTSET unterstützt.
- ceil_mode:int64
- Berechnung der Ausgabe-shape mit ceil oder floor: nicht unterstützt.
- strides:int64(strides_h,strides_w)
- strides_h∈(0,8]
- strides_w∈(0,8]
- count_include_pad:int64[]
- count_include_pad, ob pad-Werte in die Berechnung eingehen: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]
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:float(Tensor)
- T3:float(Scalar)
AveragePool
- Nicht unterstützt (vom Werkzeug in eine Faltung umgewandelt).
GlobalAveragePool
- Nicht unterstützt (vom Werkzeug in eine Faltung umgewandelt).
Pow
Potenzierung Z = X^Y: Aus Eingabedaten (Tensor) und Exponenten wird ein Ausgabetensor erzeugt.
Eingaben
- X:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Y:T2
- shape:[1]
- Derzeit werden nur 0, 1, 2, 3, 0.5, -0.5 unterstützt.
- shape:[1]
Ausgaben
- Z:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:float16(Tensor)
- T2:int8(Tensor),int32(Tensor),int64(Tensor),float16(Tensor),float(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
