Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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.