przepływ tensorowy:: ops:: FractionalMaxPool

#include <nn_ops.h>

Wykonuje ułamkowe maksymalne łączenie na wejściu.

Streszczenie

Maksymalne łączenie ułamkowe różni się nieco od zwykłego łączenia maksymalnego. W przypadku zwykłego łączenia maksymalnego zmniejszasz zbiór wejściowy, biorąc maksymalną wartość 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ą. Maksymalne łączenie ułamkowe, jak można się spodziewać po słowie „ułamkowy”, oznacza, że ​​ogólny współczynnik redukcji N nie musi być liczbą całkowitą.

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

Najpierw definiujemy co następuje:

  1. input_row_length : liczba wierszy ze zbioru wejściowego
  2. długość_wiersza_wyjściowego: która będzie mniejsza niż wartość 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 : jest to lista wyników wierszy granic puli

Następnie row_pooling_sequence powinna spełniać:

  1. a[0] = 0: pierwsza wartość ciągu to 0
  2. a[end] = długość_wiersza_wejściowego: 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ść(row_pooling_sequence) = wyjściowa długość_wiersza+1

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

Argumenty:

  • zakres: Obiekt Scope
  • wartość: 4-D z kształtem [batch, height, width, channels] .
  • Pooling_ratio: Współczynnik łączenia dla każdego wymiaru value , obecnie obsługuje tylko wymiar wierszy i kolumn i powinien wynosić >= 1,0. Na przykład prawidłowy współczynnik łączenia 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 łączenie wymiarów partii i kanałów. 1,44 i 1,73 to współczynnik łączenia odpowiednio wysokości i szerokości.

Opcjonalne atrybuty (patrz Attrs ):

  • pseudo_random: Po ustawieniu na True generuje sekwencję łączenia w sposób pseudolosowy, w przeciwnym razie w sposób losowy. Sprawdź artykuł Benjamina Grahama, Fractional Max-Pooling pod kątem różnicy między pseudolosowością a losowością.
  • nakładanie się: ustawienie na True 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. Wynikiem będzie [20, 16] dla ułamkowego maksymalnego łączenia.

  • deterministyczny: po ustawieniu wartości True podczas iteracji po węźle FractionalMaxPool na wykresie obliczeniowym używany będzie stały obszar puli. Używane głównie w teście jednostkowym, aby uczynić FractionalMaxPool deterministycznym.
  • ziarno: Jeśli ziarno lub ziarno2 jest ustawione na wartość różną od zera, generator liczb losowych jest zaszczepiany przez dane ziarno. W przeciwnym razie jest on zaszczepiany losowo.
  • nasiono2: Drugie ziarno, aby uniknąć kolizji nasion.

Zwroty:

  • Wyjście Output : tensor wyjściowy po ułamkowym maksymalnym łą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:: Atrybuty

Opcjonalne moduły ustawiające atrybuty dla FractionalMaxPool .

Atrybuty publiczne

col_pooling_sequence

::tensorflow::Output col_pooling_sequence

działanie

Operation operation

wyjście

::tensorflow::Output output

row_pooling_sequence

::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
)

Nasienie2

Attrs Seed2(
  int64 x
)