テンソルフロー::作戦:: FractionalMaxPool

#include <nn_ops.h>

入力に対してフラクショナル最大プーリングを実行します。

まとめ

フラクショナル最大プーリングは、通常の最大プーリングとは少し異なります。通常の最大プーリングでは、セットの小さい N x N サブセクション (多くの場合 2x2) の最大値を取得して入力セットをダウンサイズし、セットを N 倍に削減しようとします (N は整数)。 「フラクショナル」という言葉から予想されるように、フラクショナル最大プーリングは、全体の減速比 N が整数である必要がないことを意味します。

プーリング領域のサイズはランダムに生成されますが、かなり均一です。たとえば、高さの寸法と、プール境界となる行のリストの制約を見てみましょう。

まず、以下を定義します。

  1. input_row_length : 入力セットの行数
  2. Output_row_length : 入力よりも小さくなります
  3. alpha = input_row_length / Output_row_length : 縮小率
  4. K = フロア(アルファ)
  5. row_pooling_sequence : これはプール境界行の結果リストです。

次に、row_pooling_sequence は次を満たす必要があります。

  1. a[0] = 0 : シーケンスの最初の値は 0 です
  2. a[end] = input_row_length : シーケンスの最後の値がサイズです
  3. K <= (a[i+1] - a[i]) <= K+1 : すべての間隔は K または K+1 サイズです
  4. 長さ(行プーリングシーケンス) = 出力行の長さ+1

フラクショナル マックス プーリングの詳細については、次の論文を参照してください: Benjamin Graham、Fractional Max-Pooling

引数:

  • スコープ:スコープオブジェクト
  • 値: 形状[batch, height, width, channels]の 4-D。
  • pooling_ratio: valueの各次元のプーリング比率。現在は行次元と列次元のみをサポートしており、1.0 以上である必要があります。たとえば、有効なプーリング率は [1.0, 1.44, 1.73, 1.0] のようになります。バッチおよびチャネル ディメンションでのプーリングが許可されていないため、最初と最後の要素は 1.0 である必要があります。 1.44 と 1.73 は、それぞれ高さと幅の寸法のプーリング率です。

オプションの属性 ( Attrsを参照):

  • pseudo_random: True に設定すると、擬似ランダム方式でプーリング シーケンスが生成され、それ以外の場合はランダム方式でプーリング シーケンスが生成されます。擬似ランダムとランダムの違いについては、Benjamin Graham、Fractional Max-Pooling の論文を確認してください。
  • 重複: True に設定すると、プーリング時に、隣接するプーリング セルの境界にある値が両方のセルで使用されることを意味します。例えば:

index 0 1 2 3 4

value 20 5 16 3 7

プーリング シーケンスが [0, 2, 4] の場合、インデックス 2 の 16 が 2 回使用されます。フラクショナル最大プーリングの場合、結果は [20, 16] になります。

  • deterministic: True に設定すると、計算グラフ内のFractionalMaxPoolノードを反復するときに固定プーリング領域が使用されます。主に単体テストでFractionalMaxPoolを決定的にするために使用されます。
  • シード: シードまたはシード 2 のいずれかが 0 以外に設定されている場合、乱数ジェネレーターには指定されたシードがシードされます。それ以外の場合は、ランダム シードによってシードされます。
  • seed2: シードの衝突を避けるための 2 番目のシード。

戻り値:

  • Output出力: フラクショナル最大プーリング後の出力テンソル。
  • Output row_pooling_sequence: 勾配の計算に必要な行プーリング シーケンス。
  • Output col_pooling_sequence: 勾配の計算に必要な列プーリング シーケンス。

コンストラクターとデストラクター

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)

パブリック属性

col_pooling_sequence
operation
output
row_pooling_sequence

パブリック静的関数

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

構造体

tensorflow:: ops:: FractionalMaxPool:: Attrs

FractionalMaxPoolのオプションの属性セッター。

パブリック属性

Col_pooling_sequence

::tensorflow::Output col_pooling_sequence

手術

Operation operation

出力

::tensorflow::Output output

row_pooling_sequence

::tensorflow::Output row_pooling_sequence

公共機能

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
)

パブリック静的関数

決定論的

Attrs Deterministic(
  bool x
)

重複

Attrs Overlapping(
  bool x
)

擬似ランダム

Attrs PseudoRandom(
  bool x
)

シード

Attrs Seed(
  int64 x
)

シード2

Attrs Seed2(
  int64 x
)