Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Pooling (input,
poolKind, # "max" or "average"
{kernel dimensions},
stride = {stride dimensions},
autoPadding = {padding flags (boolean)},
lowerPad = {lower padding (int)},
upperPad = {upper padding (int)})
Die Poolvorgänge berechnen eine neue Matrix, indem Sie den maximalen (max. Pooling) oder den Mittelwert in der Pooleingabe auswählen. Bei durchschnittlichen Pooling enthält die Anzahl des Mittelwerts keine gepolsterten Werte.
N-dimensionale Pooling ermöglicht das Erstellen von max. oder durchschnittlichem Pooling beliebiger Dimensionen, Stride oder Abstand. Die Syntax ist:
Dabei gilt:
input- Pooling-EingabepoolKind- "max" oder "Mittelwert"{kernel dimensions}- Abmessungen des Poolfensters, als BrainScript-Vektor, z. B.(4:4).stride- [benannt, optional, Standard ist 1] Strides.autoPadding- [benannt, optional, Standard ist wahr] automatische Abstandskennzeichnungen für jede Eingabedimension.lowerPad- [benannt, optional, Standard ist 0] präziser niedrigerer Abstand für jede EingabedimensionupperPad- [benannt, optional, Standard ist 0] präzise oberer Abstand für jede Eingabedimension
Alle Dimensionsarrays sind doppeltrennt. Hinweis: Wenn Sie die veraltete NDLNetworkBuilderVersion verwenden, müssen sie stattdessen durch Kommas getrennt und eingeschlossen { } werden.
Da das Poolingfenster beliebige Dimensionen aufweisen kann, kann dies verschiedene Poolkonfigurationen erstellen, z. B. eine "Maxout"-Ebene (siehe Goodfellow et al ).
MaxOutPool (inp, kW, kH, kC, hStride, vStride) =
Pooling (inp, "max", (kW:kH:kC), stride=(hStride:vStride:kC), true:true:false))
Vereinfachte Syntax für 2D-Pooling
Es gibt eine vereinfachte Syntax für 2D-Pooling:
MaxPooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
AveragePooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
Mit den folgenden Parameter aus:
m- die Eingabematrix.windowWidth- Breite des PoolfensterswindowHeight- Höhe des PoolfenstersstepW- Schritt (oder Stride), der in der Breite richtung verwendet wirdstepH- Schritt (oder Stride), der in der Höhenrichtung verwendet wirdimageLayout- [benannt] das Speicherformat jedes Bilds. Dies ist eine Legacyoption, die Sie wahrscheinlich nicht benötigen. Standardmäßig ist esHWC, was bedeutet, dass jedes Bild wie[channel, width, height]in der Spalten-Hauptnotation gespeichert wird. Für eine bessere Leistung wird empfohlen, cuDNN zu verwenden, in diesem Fall sollten Sie escudnnauf festlegen, was bedeutet, dass jedes Bild als [Breite, Höhe, Kanal] in der Hauptnotation von Spalten gespeichert wird. Beachten Sie, dasscudnndas Format sowohl auf GPU als auch auf CPU funktioniert.
Beispiel (ConvReLULayer NDL-Makro):
# pool2
pool2W = 2
pool2H = 2
pool2hStride = 2
pool2vStride = 2
pool2 = MaxPooling (conv2, pool2W, pool2H, pool2hStride, pool2vStride, imageLayout="$imageLayout$")
Hinweis: Wenn Sie stattdessen den veralteten NDLNetworkBuilderParameter verwenden, wird stattdessen "HWC" der optionale imageLayout Parameter verwendet.