텐서플로우:: ops:: FractionalMaxPool

#include <nn_ops.h>

입력에 대해 부분 최대 풀링을 수행합니다.

요약

분수형 맥스 풀링은 일반 맥스 풀링과 약간 다릅니다. 일반 맥스 풀링에서는 입력 데이터셋을 N x N 크기의 작은 부분집합(대개 2x2)들의 최댓값을 취하여 크기를 줄이고, 전체 데이터셋을 정수 N만큼 축소하려고 합니다. 반면 분수형 맥스 풀링은 이름에서 알 수 있듯이, 전체 축소 비율 N이 정수가 아니어도 된다는 것을 의미합니다.

풀링 영역의 크기는 무작위로 생성되지만 비교적 균일합니다. 예를 들어 높이 차원과 풀 경계가 될 행 목록에 대한 제약 조건을 살펴보겠습니다.

먼저 다음과 같이 정의합니다.

  1. input_row_length: 입력 데이터셋의 행 수
  2. output_row_length : 입력보다 작을 것입니다.
  3. 알파 = 입력 행 길이 / 출력 행 길이 : 감소 비율
  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

논거:

  • 범위: Scope 객체
  • 값: [batch, height, width, channels] 형태의 4차원.
  • 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이 두 번 사용됩니다. 분수 최대 풀링의 경우 결과는 [20, 16]이 됩니다.

  • 결정론적: True로 설정하면 계산 그래프에서 FractionalMaxPool 노드를 순회할 때 고정된 풀링 영역이 사용됩니다. 주로 단위 테스트에서 FractionalMaxPool을 결정론적으로 만들기 위해 사용됩니다.
  • seed: seed 또는 seed2 중 하나라도 0이 아닌 값으로 설정되면, 지정된 시드를 사용하여 난수 생성기를 초기화합니다. 그렇지 않으면 임의의 시드를 사용합니다.
  • seed2: 시드 충돌을 방지하기 위한 두 번째 시드입니다.

보고:

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

구조

텐서플로우:: ops:: FractionalMaxPool:: Attrs

FractionalMaxPool 에 대한 선택적 속성 설정기입니다.

공개 속성

col_pooling_sequence

::tensorflow::Output col_pooling_sequence

작업

Operation operation

산출

::tensorflow::Output output

행 풀링 시퀀스

::tensorflow::Output row_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
)

공개 정적 함수

결정론적

Attrs Deterministic(
  bool x
)

겹치는

Attrs Overlapping(
  bool x
)

의사난수

Attrs PseudoRandom(
  bool x
)

씨앗

Attrs Seed(
  int64 x
)

시드2

Attrs Seed2(
  int64 x
)