Altifigence Academy

7 / 24 · Konzept

Akkumulatorbreite, Rundung und Sättigung

Reichen achtzehn vorzeichenbehaftete Bits für neun signed-int8-Produkte bei Bias Null?

Akkumulation benötigt eine eigene Breite

Acht-Bit-Operanden und eine Acht-Bit-Ausgabe bedeuten keinen Acht-Bit-Akkumulator. Vorzeichenbehaftete Acht-Bit-Codes haben maximalen Betrag 128. Bei Nullpunkten Null und L Termen ist eine konservative Summenbetragsgrenze L×128×128 plus Biasbetrag. Wählen Sie eine vorzeichenbehaftete Breite, deren positives Maximum diese Grenze abdeckt; das Vorzeichen benötigt ein Bit.

Durchgerechnete Breitenberechnung

Für C=3 und einen 3×3-Kernel ist L=27. Sind beide Operanden −128, beträgt jedes Produkt +16384 und die Summe 442368. Neunzehn vorzeichenbehaftete Bits reichen nur bis 262143. Zwanzig Bits reichen bis 524287 und decken auch einen erlaubten Biasbetrag 1000 ab, der die Grenze 443368 ergibt. Kleinere nachgewiesene Operandenbereiche können die benötigte Breite verringern, aber wenige gewöhnliche Testeingaben beweisen keine Grenze.

Vorzeichenlose Codes mit Nullpunkt Null erreichen 255, daher gilt die Annahme 128 nicht. Berechnen Sie zuerst A=max(abs(qmin−zx),abs(qmax−zx)) und das entsprechende B für Gewichte. Verwenden Sie L×A×B+abs(b). Schon das Zentrieren kann mehr Bits als der gespeicherte Code benötigen.

Die Reihenfolge der Ausgabeumwandlung festlegen

Der Multiplikator ist sx×sw/sy. Bei Multiplikator 0.5 und Ausgabenullpunkt 128 wird Akkumulator neun zum Gleichstand 4.5, zum geraden vier gerundet und ergibt 132. Akkumulator elf rundet 5.5 auf sechs und ergibt 134. Akkumulator −3 rundet −1.5 auf −2. Abschneiden, Abschneiden gegen Null und arithmetische Rechtsverschiebung unterscheiden sich für negative Werte. Die Übungen nutzen eine spezielle Routine zur Rundung auf den nächsten ganzzahligen Wert mit geradem Ergebnis bei Gleichstand statt der Standardrundungsfunktion der Sprache.

Bei int8-Ausgabe sättigt umgewandeltes 300 zu 127 und −300 zu −128. Das Entfernen hoher Bits würde zu unzusammenhängenden Werten umlaufen. Protokollieren Sie Werte vor der Begrenzung und die Sättigungsanzahl. Definieren Sie in den Verhaltensregeln den Ort von ReLU und dessen Darstellung von Null.

Verifizieren Sie große positive und negative Summen, exakte Gleichstände, beide Sättigungsgrenzen und großen Bias. Vergleichen Sie bewusst eine breite Referenz mit einem zu kleinen Akkumulator, um Überlauf aufzudecken. Unsere ausführbaren Testfälle bleiben im exakten JavaScript-Ganzzahlbereich; eine größere Referenz muss auch die Genauigkeit der Arithmetik ihrer Laufzeitumgebung begründen.

Selbst ausprobieren

Reichen achtzehn vorzeichenbehaftete Bits für neun signed-int8-Produkte bei Bias Null?

Erklärung lesen

Die positive Grenze ist 9×16384=147456 und liegt über dem Achtzehn-Bit-Maximum 131071. Neunzehn vorzeichenbehaftete Bits reichen bis 262143.

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