Delen via


In een groep plaatsen

Pooling (input,
         poolKind, # "max" or "average"
         {kernel dimensions}, 
         stride = {stride dimensions}, 
         autoPadding = {padding flags (boolean)},
         lowerPad = {lower padding (int)},
         upperPad = {upper padding (int)})

Met de poolbewerkingen wordt een nieuwe matrix berekend door de maximumwaarde (maximale pooling) of de gemiddelde waarde in de poolinvoer te selecteren. In het geval van gemiddelde pooling bevat het aantal gemiddelden geen opgevulde waarden.

N-dimensionale pooling maakt het mogelijk om maximale of gemiddelde pooling van dimensies,ride of opvulling te maken. De syntaxis is:

Hierbij

  • input - poolinvoer
  • poolKind - "max" of "average"
  • {kernel dimensions} - dimensies van het poolvenster, als een BrainScript-vector, bijvoorbeeld (4:4).
  • stride - [benoemd, optioneel, standaard is 1] stappen.
  • autoPadding - [benoemd, optioneel, standaardwaarde is waar] automatische opvullingsvlagmen voor elke invoerdimensie.
  • lowerPad - [benoemd, optioneel, standaardwaarde is 0] exacte lagere opvulling voor elke invoerdimensie
  • upperPad - [benoemd, optioneel, standaardwaarde is 0] nauwkeurige bovenste opvulling voor elke invoerdimensie

Alle dimensiematrices zijn gescheiden door dubbele puntjes. Opmerking: Als u de afgeschafte NDLNetworkBuilderwaarden gebruikt, moeten deze door komma's gescheiden en in plaats daarvan worden ingesloten { } .

Aangezien het poolvenster willekeurige dimensies kan hebben, kan dit verschillende poolconfiguraties bouwen, bijvoorbeeld een 'Maxout'-laag (zie Goodfellow et al voor meer informatie):

MaxOutPool (inp, kW, kH, kC, hStride, vStride) =
    Pooling (inp, "max", (kW:kH:kC), stride=(hStride:vStride:kC), true:true:false))

Vereenvoudigde syntaxis voor 2D-pooling

Er is een vereenvoudigde syntaxis voor 2D-pooling:

MaxPooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
AveragePooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )

met de volgende parameters:

  • m - de invoermatrix.
  • windowWidth - breedte van het poolvenster
  • windowHeight - hoogte van het poolvenster
  • stepW - stap (of stride) gebruikt in de breedterichting
  • stepH - stap (of stride) gebruikt in de hoogterichting
  • imageLayout - [benoemd optioneel] de opslagindeling van elke afbeelding. Dit is een verouderde optie die u waarschijnlijk niet nodig hebt. Dit betekent standaard HWCdat elke afbeelding wordt opgeslagen als [channel, width, height] in de primaire kolom-notatie. Voor betere prestaties is het raadzaam cuDNN te gebruiken. In dat geval moet u deze instellen op cudnn, wat betekent dat elke afbeelding wordt opgeslagen als [breedte, hoogte, kanaal] in de primaire kolom notatie. Houd er rekening mee dat cudnn de indeling werkt op GPU en CPU.

Voorbeeld (ConvReLULayer NDL-macro):

# pool2
pool2W = 2
pool2H = 2
pool2hStride = 2
pool2vStride = 2
pool2 = MaxPooling (conv2, pool2W, pool2H, pool2hStride, pool2vStride, imageLayout="$imageLayout$")

Opmerking: Als u de afgeschafte NDLNetworkBuilderparameter gebruikt, wordt de optionele imageLayout parameter standaard ingesteld "HWC" op.