tensorflow::ops::FractionalMaxPool

#include <nn_ops.h>

ทำการรวมค่าสูงสุดแบบเศษส่วน (Fractional max pooling) กับข้อมูลอินพุต

สรุป

การทำ Max Pooling แบบเศษส่วนนั้นแตกต่างจากการทำ Max Pooling แบบปกติเล็กน้อย ในการทำ Max Pooling แบบปกติ คุณจะลดขนาดชุดข้อมูลอินพุตโดยการเลือกค่าสูงสุดจากส่วนย่อย N x N ที่มีขนาดเล็กกว่า (มักจะเป็น 2x2) และพยายามลดขนาดของชุดข้อมูลลงด้วยตัวคูณ N โดยที่ N เป็นจำนวนเต็ม ส่วนการทำ Max Pooling แบบเศษส่วนนั้น ดังที่คุณอาจคาดเดาได้จากคำว่า "เศษส่วน" หมายความว่าอัตราส่วนการลดขนาดโดยรวม N ไม่จำเป็นต้องเป็นจำนวนเต็ม

ขนาดของพื้นที่พูลลิ่งถูกสร้างขึ้นแบบสุ่ม แต่ค่อนข้างสม่ำเสมอ ตัวอย่างเช่น ลองพิจารณาขนาดความสูง และข้อจำกัดของรายการแถวที่จะเป็นขอบเขตของพูล

ขั้นแรก เรากำหนดนิยามของสิ่งต่อไปนี้:

  1. input_row_length: จำนวนแถวจากชุดข้อมูลอินพุต
  2. output_row_length : ซึ่งจะมีขนาดเล็กกว่า input
  3. อัลฟา = ความยาวแถวอินพุต / ความยาวแถวเอาต์พุต : อัตราส่วนการลดทอนของเรา
  4. K = floor(alpha)
  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

ข้อโต้แย้ง:

  • ขอบเขต: วัตถุ ขอบเขต
  • ค่า: 4 มิติที่มีรูปร่าง [batch, height, width, channels]
  • 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] แล้ว 16 ที่ดัชนี 2 จะถูกใช้สองครั้ง ผลลัพธ์ที่ได้จะเป็น [20, 16] สำหรับการพูลลิ่งสูงสุดแบบเศษส่วน

  • กำหนดได้แน่นอน: เมื่อตั้งค่าเป็น True จะใช้ขอบเขตการพูลแบบคงที่เมื่อวนซ้ำผ่านโหนด FractionalMaxPool ในกราฟการคำนวณ โดยส่วนใหญ่ใช้ในการทดสอบหน่วยเพื่อให้ FractionalMaxPool เป็นแบบกำหนดได้แน่นอน
  • seed: หาก seed หรือ seed2 ตัวใดตัวหนึ่งถูกตั้งค่าเป็นค่าที่ไม่ใช่ศูนย์ ตัวสร้างเลขสุ่มจะเริ่มต้นด้วยค่า seed ที่กำหนดให้ มิฉะนั้น จะเริ่มต้นด้วยค่า seed แบบสุ่ม
  • seed2: เมล็ดพันธุ์ที่สองเพื่อหลีกเลี่ยงการชนกันของเมล็ดพันธุ์

การส่งคืนสินค้า:

  • Output : เทนเซอร์ผลลัพธ์หลังจากทำการพูลลิ่งสูงสุดแบบเศษส่วน (Fractional Max Pooling)
  • Output row_pooling_sequence: ลำดับการรวมแถว (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

คุณลักษณะสาธารณะ

ลำดับการรวมคอลัมน์

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