Sdílet prostřednictvím


Sdružování

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

Operace sdružování vypočítá novou matici výběrem maximální (maximální hodnoty sdružování) nebo průměrné hodnoty ve vstupu sdružování. V případě průměrného sdružování nezahrnuje počet průměrovaných hodnot.

Ndimenzionální sdružování umožňuje vytvořit maximální nebo průměrné sdružování libovolných dimenzí, stride nebo odsazení. Syntaxe je:

kde:

  • input - vstup ve fondu
  • poolKind - "max" nebo "průměr"
  • {kernel dimensions}- rozměry okna sdružování, jako vektor BrainScriptu, např. (4:4)
  • stride - [pojmenované, volitelné, výchozí hodnota je 1] kroky.
  • autoPadding - [pojmenovaný, volitelný, výchozí je true] automatické odsazení příznaky pro každou vstupní dimenzi.
  • lowerPad - [pojmenované, volitelné, výchozí hodnota je 0] přesné dolní odsazení pro každou vstupní dimenzi
  • upperPad - [pojmenovaný, volitelný, výchozí hodnota je 0] přesné horní odsazení pro každou vstupní dimenzi

Všechna pole dimenzí jsou oddělená dvojtečkami. Poznámka: Pokud používáte zastaraléNDLNetworkBuilder, musí být tyto hodnoty oddělené čárkami a uzavřeny.{ }

Vzhledem k tomu, že okno sdružování může mít libovolné rozměry, umožňuje vytvářet různé konfigurace sdružování, například vrstvu Maxout (podrobnosti viz Goodfellow et al ):

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

Zjednodušená syntaxe pro 2D sdružování

Pro sdružování 2D existuje zjednodušená syntaxe:

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

s následujícími parametry:

  • m - vstupní matice.
  • windowWidth - šířka okna sdružování
  • windowHeight - výška okna bazénu
  • stepW - krok (nebo krok) použitý ve směru šířky
  • stepH - krok (nebo krok) použitý ve směru výšky
  • imageLayout - [pojmenované volitelné] formát úložiště jednotlivých imagí. Jedná se o starší možnost, kterou pravděpodobně nebudete potřebovat. Ve výchozím nastavení je HWCto , což znamená, že každý obrázek je uložený jako [channel, width, height] v hlavním zápisu sloupce. Pro lepší výkon se doporučuje použít cuDNN v takovém případě, že byste ho měli nastavit na cudnn, což znamená, že každý obrázek se uloží jako [šířka, výška, kanál] v hlavním zápisu sloupce. Všimněte si, že cudnn formát funguje jak na GPU, tak na procesoru.

Příklad (makro ConvReLULayer NDL):

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

Poznámka: Pokud používáte zastaralé NDLNetworkBuilder, volitelný imageLayout parametr se "HWC" místo toho použije.