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 ไม่จำเป็นต้องเป็นจำนวนเต็ม
ขนาดของพื้นที่พูลลิ่งถูกสร้างขึ้นแบบสุ่ม แต่ค่อนข้างสม่ำเสมอ ตัวอย่างเช่น ลองพิจารณาขนาดความสูง และข้อจำกัดของรายการแถวที่จะเป็นขอบเขตของพูล
ขั้นแรก เรากำหนดนิยามของสิ่งต่อไปนี้:
- input_row_length: จำนวนแถวจากชุดข้อมูลอินพุต
- output_row_length : ซึ่งจะมีขนาดเล็กกว่า input
- อัลฟา = ความยาวแถวอินพุต / ความยาวแถวเอาต์พุต : อัตราส่วนการลดทอนของเรา
- K = floor(alpha)
- row_pooling_sequence: นี่คือรายการผลลัพธ์ของแถวขอบเขตพูล
ดังนั้น row_pooling_sequence ควรมีคุณสมบัติดังต่อไปนี้:
- a[0] = 0 : ค่าแรกของลำดับคือ 0
- a[end] = input_row_length : ค่าสุดท้ายของลำดับคือขนาด
- K <= (a[i+1] - a[i]) <= K+1 : ช่วงทั้งหมดมีขนาด K หรือ K+1
- ความยาวของลำดับการพูลแถว = ความยาวแถวเอาต์พุต + 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) -
Outputrow_pooling_sequence: ลำดับการรวมแถว (row pooling sequence) ที่จำเป็นสำหรับการคำนวณเกรเดียนต์ -
Outputcol_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 )