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 250–263; EN 258–271.
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
Relu
Setzt negative Eingabetensorwerte auf null; positive Werte bleiben unverändert.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Keine
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
Clip/ReLU6
Begrenzt Eingabetensorwerte auf [0,6].
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Keine
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
PRelu
Skaliert negative Eingabetensorwerte mit einem lernbaren Parameter; positive Werte bleiben unverändert.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer/per-channel
- Broadcasting-Unterstützung
- Keine
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer/per-channel
Attribute
- slope: PRelu-Koeffizient.
- Nur ein einzelner Skalar oder Koeffizienten entlang der C-Dimension werden unterstützt.
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
LeakyRelu
Skaliert negative Eingabetensorwerte mit einem festen Faktor; positive Werte bleiben unverändert.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- Broadcasting-Unterstützung
- Keine
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
Reshape
Liefert einen Tensor der angegebenen Form ohne Änderung der Eingabedaten oder Elementanzahl.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Attribute
- shape:int
- Legt die Form des Ausgabetensors fest.
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
Resize
Ändert die Größe des Eingabetensors. Im Allgemeinen wird jeder Ausgabewert als gewichteter Mittelwert einer Nachbarschaft (Abtastpositionen) im Eingabetensor berechnet.
Eingaben
- X:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- roi(optional):T2
- Derzeit nicht unterstützt.
- scales(optional):T2
- Array der Skalierungsfaktoren je Dimension.
- sizes(optional):T3
- Zielgröße des Ausgabetensors.
Ausgaben
- Y:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
- T2:float(Tensor)
- T3:int64(Tensor)
Attribute
- antialias:int (Standardwert 0)
- Die Einstellung wird derzeit nicht unterstützt.
- axes:int[]
- Die Einstellung wird derzeit nicht unterstützt.
- coordinate_transformation_mode:strings (Standardwert ”half_pixel”)
- Derzeit werden nur half_pixel, pytorch_half_pixel und align_corners unterstützt.
- cubic_coeff_a: float (Standardwert -0.75)
- Die Einstellung wird derzeit nicht unterstützt.
- exclude_outside:int (Standardwert 0)
- Die Einstellung wird derzeit nicht unterstützt.
- extrapolation_value:float (Standardwert 0)
- Die Einstellung wird derzeit nicht unterstützt.
- keep_aspect_ratio_policy:strings (Standardwert ”stretch”)
- Die Einstellung wird derzeit nicht unterstützt.
- mode:strings (Standardwert ”nearest”)
- Derzeit sind nur nearest und linear konfigurierbar.
- nearest_mode:strings (Standardwert ”round_prefer_floor”)
- Die Einstellung wird derzeit nicht unterstützt. Hinweis zur Unterstützung: Derzeit ist nur ganzzahlige Skalierung in Breiten- und Höhenrichtung mit einem Faktor von 2–8 unterstützt. Eine Eingabe (1,c,1,1) lässt sich auf (1,c,h,w) vergrößern.
- Zusammenarbeit mehrerer Kerne: nicht unterstützt.
Slice
Erzeugt einen Ausschnitt des aktuellen Vektors nach den Regeln von NumPy-Slicing.
Eingaben
- input_tensor:T
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Ausgaben
- output:T
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T:int8(Tensor),float16(Tensor)
Attribute
- starts:int(Tensor)
- Startposition des Ausschnitts: uneingeschränkt.
- ends:int(Tensor)
- Endposition des Ausschnitts: uneingeschränkt.
- axes:int(Tensor)
- Auswahl der Slice-Achsen: beliebige Achsen 0~3, auch mehrere gleichzeitig.
- steps:int(Tensor)
- Legt die Schrittweite entlang der jeweiligen Slice-Achse fest.
- Bei height*width==1&&channel%subc==0&&starts[1]%subc==0&&ends[1]%subc==0&&steps[1]<=subc darf steps von 1 abweichen. Andernfalls läuft SliceOP nur bei steps==[1,1,1,1] auf der NPU.
Softmax
Dieser Operator berechnet normalisierte Exponentialwerte der Eingabe:
Softmax(input, axis) = exp(input − max(input, axis)) / Σ_axis exp(input − max(input, axis))
Das Attribut “axis” legt die Dimension der Softmax-Berechnung fest. Der Ausgabetensor besitzt dieselbe Form und enthält die Softmax-Werte der entsprechenden Eingaben.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Es gelten die Spezifikationsgrenzen von transpose.
- shape:[batch,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Attribute
- axis:int64
- softmax-Achse:1,3, entsprechend channel und width.
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
exSoftmax13
Dieser Operator berechnet normalisierte Exponentialwerte der Eingabe:
exSoftmax13(input, axis) = exp(input − max(input, axis)) / Σ_axis exp(input − max(input, axis))
Das Attribut “axis” legt die Dimension der Softmax-Berechnung fest. Der Ausgabetensor besitzt dieselbe Form und enthält die Softmax-Werte der entsprechenden Eingaben.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Es gelten die Spezifikationsgrenzen von transpose.
- shape:[batch,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Attribute
- axis:int64
- softmax-Achse:1,3, entsprechend channel und width.
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
exSoftmaxMask
Dieser Operator berechnet normalisierte Exponentialwerte der Eingabe:
input(x, mask_t, mask_value) =
x + (mask_t - 1) * inf if mask_value = 0
x + mask_t * (-inf) elif mask_value = 1
exSoftmaxMask(input, axis) = exp(input - max(input, axis)) / Σ_axis(exp(input - max(input, axis)))
Das Attribut “axis” legt die Dimension der Softmax-Berechnung fest. Der Ausgabetensor besitzt dieselbe Form und enthält die Softmax-Werte der entsprechenden Eingaben.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Es gelten die Spezifikationsgrenzen von transpose.
- shape:[batch,channel,height,width]
- mask(optional):T1
- shape:[1,channel,height,width]
- channel∈(0,8192]
- width: bei axis=1 ohne Einschränkung; bei axis=3/-1 width∈(0,8192].
- shape:[1,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
Attribute
- axis:int64
- softmax-Achse:1,3, entsprechend channel und width.
- mask_value:int64
- Zu maskierende Werte:0,1.
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
Split
Teilt den Vektor entlang axis in num_outputs Vektoren; split legt deren Größen entlang axis fest.
Eingaben
- input_tensor:T
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Ausgaben
- output:T
- Ein oder mehrere Ausgabektoren, bestimmt durch num_outputs.
- shape: durch die Aufteilung bestimmt.
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T:int8(Tensor),float16(Tensor)
Attribute
- axis:int
- axis∈{0,1,2,3}
- num_outputs:int
- split:int(Tensor)
Sub
- Führt elementweise binäre Subtraktion (C=A-B) mit multidirektionalem Broadcasting im NumPy-Stil 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:int8(Tensor),float16(Tensor)
- T2:float(constTensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: nicht unterstützt.
Tile
Erzeugt durch Wiederholung des gegebenen Tensors einen Tensor, wie NumPy tile, jedoch ohne Broadcasting.
Eingaben
- input:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
- repeats:T2
- shape:[batch,channel,height,width]
Ausgaben
- output:T1
- shape:[batch,channel,height,width]
- Quantisierungsunterstützung
- per-layer
Datentypbeschränkungen
- T1:int8(Tensor),float16(Tensor)
- T2:int64(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: nicht unterstützt.
Transpose
Transponiert den Eingabetensor.
Eingaben
- X:T1
- shape:[n1,c1,h1,w1]
- Detaillierte Einschränkungen stehen in der Attributliste.
- Quantisierungsunterstützung
- per-layer
- shape:[n1,c1,h1,w1]
Ausgaben
- Y:T1,T2
- shape:[n2,c2,h2,w2]
- Detaillierte Einschränkungen stehen in der Attributliste.
- Quantisierungsunterstützung
- per-layer
- shape:[n2,c2,h2,w2]
Attribute
- perm, Reihenfolge der transponierten Achsen: Einschränkungen für unterschiedliche perm folgen (p=268435456,q=65536).
- perm=[0,1,2,3]
- Uneingeschränkt
- perm=[0,1,3,2]
- T1:h1%16=0,h1w1<16p,h1w1<2q
- T2:h1%8=0,h1w1<8p,h1w1<2q
- perm=[0,2,3,1]
- T1:c1<8192,h1w1%8=0,w1c1<p*16
- T2:c1<8192,h1w1%8=0,w1c1<p*8
- perm=[0,2,1,3]
- T1:h1%16=0,h1w1<16p,h1w1<2q,c1*w1<p
- T2:h1%8=0,h1w1<8p,h1w1<2q,c1*w1<p
- perm=[0,3,1,2]
- T1,T2:h1w1<p,w1<8192,h1c1<p
- perm=[0,3,2,1]
- T1:h1%16=0,h1w1<16p,h1w1<2q,c1<p*16
- T2:h1%8=0,h1w1<8p,h1w1<2q,c1<p*8
- perm=[1,0,2,3]
- T1:h1w1<16p,n1<8192,h1*w1<p
- T2:h1w1<8p,n1<8192,h1*w1<p
- perm=[1,0,3,2]
- T1:h1%16=0,c1h1w1<16p,h1w1<2*q
- T2:h1%8=0,c1h1w1<8p,h1w1<2*q
- perm=[1,2,0,3]
- T1:n1w1<p16,c1h1w1<p,w1%16=0
- T2:n1w1<p8,c1h1w1p,w1%8=0
- perm=[1,2,3,0]
- T1:h1w1<p,n1<p16,c1h1w1<p16,n1w1<p*16
- T2:h1w1<p,n1<p8,c1h1w1<p8,n1w1<p*8
- perm=[1,3,0,2]
- T1:c1w1<8192,n1h1<p,w1%16=0
- T2:c1w1<8192,n1h1<p,w1%8=0
- perm=[1,3,2,0]
- T1:c1h1w1<p,n1*h1<p,w1<8192,w1%16=0
- T2:c1h1w1<p,n1*h1<p,w1<8192,w1%8=0
- perm=[2,1,0,3]
- T1,T2:c1<8192,c1h1w1<p,n1*w1<p
- perm=[2,1,3,0]
- T1:c1h1w1<p,n1w1<p16,c1<8192,n1*w1%4=0
- T2:c1h1w1<p,n1w1<p8,c1<8192,n1*w1%4=0
- perm=[2,0,3,1]
- T1,T2:c1<8192,c1h1w1<p
- perm=[2,0,1,3]
- T1:n1c1h1w1<p,h1w1%16=0
- T2:n1c1h1w1<p,h1w1%8=0
- perm=[2,3,1,0]
- T1:c1h1w1<p,n1c1<p,h1w1<8192,h1*w1%16=0
- T2:c1h1w1<p,n1c1<p,h1w1<8192,h1*w1%8=0
- perm=[2,3,0,1]
- T1,T2:h1w1<8192,n1c1<p
- perm=[3,0,2,1]
- T1:h1w1<p,n1c1<8192,c1h1<p,n1w1<8192,n1*w1%16=0
- T2:h1w1<p,n1c1<8192,c1h1<p,n1w1<8192,n1*w1%8=0
- perm=[3,0,1,2]
- T1:h1w1<p,n1c1<8192,c1h1<p,n1w1<8192,n1h1w1%16=0
- T2:h1w1<p,n1c1<8192,c1h1<p,n1w1<8192,n1h1w1%8=0
- perm=[3,2,0,1]
- T1,T2:h1w1<p,n1c1<8192,n1c1w1<p
- perm=[3,2,1,0]
- T1:c1h1w1<p,h1w1<8192,2h1w1<q,n1c1<p*16,h1%16=0
- T2:c1h1w1<p,h1w1<8192,2h1w1<q,n1c1<p*8,h1%8=0
- perm=[3,1,0,2]
- T1,T2:h1w1<p,c1w1<8192,n1*h1<p
- perm=[3,1,2,0]
- T1,T2:h1w1<p,n1c1<8192,n1h1<p,n1c1*w1<p
- perm=[0,1,2,3]
Datentypbeschränkungen
- T1:int8(Tensor)
- T2:int16(Tensor),float16(Tensor)
Weitere Unterstützung
- Zusammenarbeit mehrerer Kerne: noch nicht unterstützt.
