Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pooling (input,
poolKind, # "max" or "average"
{kernel dimensions},
stride = {stride dimensions},
autoPadding = {padding flags (boolean)},
lowerPad = {lower padding (int)},
upperPad = {upper padding (int)})
Operacje puli obliczają nową macierz, wybierając maksymalną (maksymalną pulę) lub średnią wartość w danych wejściowych puli. W przypadku średniej puli liczba średnich wartości nie obejmuje wartości wypełnionych.
Tworzenie puli nwymiarowej umożliwia tworzenie maksymalnej lub średniej puli dowolnych wymiarów, kroków lub dopełnień. Składnia jest następująca:
gdzie:
input— dane wejściowe pulipoolKind- "max" lub "average"{kernel dimensions}- wymiary okna buforowania, jako wektor BrainScript, np.(4:4).stride- [nazwane, opcjonalne, wartość domyślna to 1] krok.autoPadding- [nazwane, opcjonalne, domyślne jest prawdziwe] automatyczne flagi wypełniania dla każdego wymiaru wejściowego.lowerPad- [nazwane, opcjonalne, wartość domyślna to 0] dokładne dopełnienie dolne dla każdego wymiaru wejściowegoupperPad- [nazwane, opcjonalne, wartość domyślna to 0] precyzyjne wypełnienie górne dla każdego wymiaru wejściowego
Wszystkie tablice wymiarów są rozdzielone dwukropkiem. Uwaga: jeśli używasz przestarzałego NDLNetworkBuilderelementu , należy je rozdzielać przecinkami i zamiast nich ujęć.{ }
Ponieważ okno buforowania może mieć dowolne wymiary, pozwala to tworzyć różne konfiguracje puli, na przykład warstwę "Maxout" (zobacz Goodfellow et al. ):
MaxOutPool (inp, kW, kH, kC, hStride, vStride) =
Pooling (inp, "max", (kW:kH:kC), stride=(hStride:vStride:kC), true:true:false))
Uproszczona składnia puli 2D
Istnieje uproszczona składnia buforowania 2D:
MaxPooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
AveragePooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
z następującymi parametrami:
m— macierz wejściowa.windowWidth- szerokość okna puliwindowHeight- wysokość okna pulistepW- krok (lub krok) używany w kierunku szerokościstepH- krok (lub krok) używany w kierunku wysokościimageLayout- [nazwany opcjonalnie] format przechowywania każdego obrazu. Jest to starsza opcja, której prawdopodobnie nie potrzebujesz. Domyślnie jest toHWCwartość , co oznacza, że każdy obraz jest przechowywany jako[channel, width, height]w notacji głównej kolumny. Aby uzyskać lepszą wydajność, zaleca się użycie cuDNN w tym przypadku, aby ustawić go nacudnnwartość , co oznacza, że każdy obraz jest przechowywany jako [szerokość, wysokość, kanał] w notacji głównej kolumny. Należy pamiętać, żecudnnformat działa zarówno na procesorze GPU, jak i na procesorze CPU.
Przykład (makro NDL ConvReLULayer):
# pool2
pool2W = 2
pool2H = 2
pool2hStride = 2
pool2vStride = 2
pool2 = MaxPooling (conv2, pool2W, pool2H, pool2hStride, pool2vStride, imageLayout="$imageLayout$")
Uwaga: jeśli używasz przestarzałego NDLNetworkBuilderparametru , zamiast tego opcjonalny imageLayout parametr jest domyślny "HWC" .