Altifigence Academy

11 / 24 · Konzept

ReLU und Max-Pooling verbinden

Wenden Sie bei uint8-Ausgabenullpunkt 100 ReLU und 2×2-Max-Pooling auf [98,103;101,97] an.

Nachverarbeitungsstufen einschließen

Inferenz kann über die Faltung hinausgehen. ReLU wählt das Maximum jedes reellen Werts und Null. Max-Pooling wählt den größten Wert in einem räumlichen Fenster. Das eine arbeitet elementweise, das andere verändert die räumliche Größe und benötigt eine andere Abschlussbedingung. Unser Pfad requantisiert, wendet ReLU an und führt dann ungefülltes 2×2-Max-Pooling mit Schrittweite zwei aus. Die Abrundungskonvention verwirft eine unvollständige letzte Zeile oder Spalte.

Bei roher quantisierter Ausgabe ist reelle Null der Ausgabenullpunkt zy. Positive Skalierung erhält die Reihenfolge, daher verwendet ReLU max(q,zy). Ein Vergleich von uint8-Codes mit wörtlicher Null bei zy=128 würde negative reelle Werte fälschlich erhalten.

Durchgerechnete Verarbeitungskette

Akkumulatoren [−2,4;6,−8] werden bei Multiplikator 0.5 und Nullpunkt Null zu [−1,2;3,−4]. ReLU erzeugt [0,2;3,0] und Pooling wählt drei. Räumliche Abtastreduktion und numerische Neuskalierung sind getrennte Ideen. Max-Pooling wählt einen vorhandenen Code und erhält daher in dieser Übung seine Skalierung.

Bei Nullpunkt 128 werden Codes [126,132;134,120] nach ReLU zu [128,132;134,128] und durch Pooling zu Code 134. Die Referenz bleibt reelle Null, auch wenn sich die Speicherdarstellung ändert. Average-Pooling würde Division und Rundung einführen und ist daher nicht mit dieser Implementierung austauschbar.

Ein negatives Fenster vor ReLU [−8,−5;−3,−6] hat Maximum −3. Fehlerhaftes Einfügen von Null an einer aufgefüllten Grenze lässt eine nicht existierende Probe gewinnen. Eine aufgefüllte Implementierung muss diese Position ausschließen oder den festgelegten Minimalwert verwenden. Unsere ausführbare Poolingfunktion unterstützt keine Auffüllung.

Die Verschmelzung von Stufen kann Zwischenspeicherverkehr verringern, muss aber beobachtbare Werte zur Verifikation erhalten. Vergleichen Sie Akkumulatoren, requantisierte Codes, aktivierte Werte und Poolingausgabe getrennt. Eine 4×4-Eingabe liefert vier Poolingwerte, eine 3×3-Eingabe nach der definierten Abrundungsregel einen. Dokumentieren Sie die Regel für unvollständige Fenster in Tests. Siehe die Primärdefinitionen in ONNX Relu und ONNX MaxPool.

Selbst ausprobieren

Wenden Sie bei uint8-Ausgabenullpunkt 100 ReLU und 2×2-Max-Pooling auf [98,103;101,97] an.

Erklärung lesen

ReLU begrenzt auf Code 100 und erzeugt [100,103;101,100]. Max-Pooling wählt 103 und erhält die Ausgabeskalierung.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.