tensorflow:: ops:: FractionalMaxPool

#include <nn_ops.h>

Wykonuje ułamkowe maksymalne grupowanie na wejściu.

Streszczenie

Ułamkowe łączenie maksymalne różni się nieco od zwykłego łączenia maksymalnego. W zwykłym łączeniu maksymalnym zmniejsza się rozmiar zbioru wejściowego, biorąc wartość maksymalną z mniejszych N x N podsekcji zbioru (często 2x2) i próbując zmniejszyć zbiór o współczynnik N, gdzie N jest liczbą całkowitą. Ułamkowe łączenie maksymalne, jak można się spodziewać po słowie „ułamkowe”, oznacza, że ​​całkowity współczynnik redukcji N nie musi być liczbą całkowitą.

Rozmiary obszarów puli są generowane losowo, ale są dość jednolite. Przyjrzyjmy się na przykład wymiarowi wysokości i ograniczeniom listy wierszy, które będą granicami puli.

Najpierw zdefiniujmy następujące kwestie:

  1. input_row_length : liczba wierszy z zestawu wejściowego
  2. output_row_length: która będzie mniejsza niż długość wejściowa
  3. alfa = długość_wiersza_wejściowego / długość_wiersza_wyjściowego : nasz współczynnik redukcji
  4. K = podłoga (alfa)
  5. row_pooling_sequence: to jest lista wyników wierszy granic puli

Następnie row_pooling_sequence powinno spełniać:

  1. a[0] = 0 : pierwsza wartość sekwencji to 0
  2. a[end] = input_row_length : ostatnia wartość sekwencji to rozmiar
  3. K <= (a[i+1] - a[i]) <= K+1 : wszystkie przedziały mają rozmiar K lub K+1
  4. długość(sekwencja_row_poolingu) = długość_wiersza_wyjściowego+1

Więcej szczegółów na temat ułamkowego maksymalnego łączenia grup można znaleźć w tym artykule: Benjamin Graham, Fractional Max-Pooling

Argumenty:

  • zakres: obiekt zakresu
  • wartość: 4-D z kształtem [batch, height, width, channels] .
  • pooling_ratio: Współczynnik poolingu dla każdego wymiaru value , obecnie obsługuje tylko wymiar wiersza i kolumny i powinien być ≥ 1,0. Na przykład, prawidłowy współczynnik poolingu wygląda następująco: [1,0, 1,44, 1,73, 1,0]. Pierwszy i ostatni element muszą mieć wartość 1,0, ponieważ nie zezwalamy na pooling w wymiarach wsadowych i kanałowych. 1,44 i 1,73 to współczynnik poolingu odpowiednio dla wymiarów wysokości i szerokości.

Atrybuty opcjonalne (patrz Attrs ):

  • pseudo_random: Po ustawieniu na True, sekwencja puli jest generowana w sposób pseudolosowy, w przeciwnym razie w sposób losowy. Sprawdź artykuł Benjamina Grahama, Fractional Max-Pooling, aby poznać różnicę między pseudolosowością a losowością.
  • Nakładanie: Ustawienie na „Prawda” oznacza, że ​​podczas łączenia wartości na granicy sąsiednich komórek łączenia są używane przez obie komórki. Na przykład:

index 0 1 2 3 4

value 20 5 16 3 7

Jeśli sekwencja łączenia to [0, 2, 4], wówczas 16 o indeksie 2 zostanie użyte dwukrotnie. Wynik będzie wynosić [20, 16] dla łączenia ułamkowego maksymalnego.

  • deterministyczny: Po ustawieniu na wartość „Prawda” podczas iteracji po węźle FractionalMaxPool na grafie obliczeniowym używany będzie stały obszar puli. Używane głównie w testach jednostkowych, aby uczynić FractionalMaxPool deterministycznym.
  • seed: Jeśli albo seed, albo seed2 są ustawione na wartość różną od zera, generator liczb losowych jest zasiewany na podstawie podanego seeda. W przeciwnym razie jest zasiewany na podstawie losowego seeda.
  • seed2: Drugie nasiono zapobiegające kolizji z nasionami.

Zwroty:

  • Wyjście Output : tensor wyjściowy po ułamkowym maksymalnym połączeniu.
  • Output row_pooling_sequence: sekwencja łączenia wierszy potrzebna do obliczenia gradientu.
  • Output col_pooling_sequence: sekwencja łączenia kolumn potrzebna do obliczenia gradientu.

Konstruktory i destruktory

FractionalMaxPool (const :: tensorflow::Scope & scope, :: tensorflow::Input value, const gtl::ArraySlice< float > & pooling_ratio)
FractionalMaxPool (const :: tensorflow::Scope & scope, :: tensorflow::Input value, const gtl::ArraySlice< float > & pooling_ratio, const FractionalMaxPool::Attrs & attrs)

Atrybuty publiczne

col_pooling_sequence
operation
output
row_pooling_sequence

Publiczne funkcje statyczne

Deterministic (bool x)
Overlapping (bool x)
PseudoRandom (bool x)
Seed (int64 x)
Seed2 (int64 x)

Struktury

tensorflow:: ops:: FractionalMaxPool:: Attrs

Opcjonalne settery atrybutów dla FractionalMaxPool .

Atrybuty publiczne

sekwencja_grupowania_kolumn

::tensorflow::Output col_pooling_sequence

działanie

Operation operation

wyjście

::tensorflow::Output output

sekwencja_row_pooling

::tensorflow::Output row_pooling_sequence

Funkcje publiczne

FractionalMaxPool

 FractionalMaxPool(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input value,
  const gtl::ArraySlice< float > & pooling_ratio
)

FractionalMaxPool

 FractionalMaxPool(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input value,
  const gtl::ArraySlice< float > & pooling_ratio,
  const FractionalMaxPool::Attrs & attrs
)

Publiczne funkcje statyczne

Deterministyczny

Attrs Deterministic(
  bool x
)

Nakładające się

Attrs Overlapping(
  bool x
)

Pseudolosowy

Attrs PseudoRandom(
  bool x
)

Nasienie

Attrs Seed(
  int64 x
)

Seed2

Attrs Seed2(
  int64 x
)