ใช้ AveragePooling2D แทนที่จะเป็น GlobalAveragePooling 2D ต้องการจะแทนที่เป้าหมายของชั้นหลังจากที่ FCN สำหรับการแบ่งประเภท

0

คำถาม

ฉันสามารถใช้เป็น AveragePooling2D เลเยอร์กับ pool_size เท่ากับขนาดของความสามารถของคุณสมบัติบนแผนที่แทนที่จะเป็น GlobalAveragePooling2D เลเยอร์? จุดประสงค์ของเรื่องนี้จะแทนที่เป็นเป้าหมายของเลเยอร์หลังจากที่ FCN. คือ GlobalAveragePooling2D เป็นกรณีพิเศษของ AveragePooling2D??

deep-learning keras tensorflow
2021-11-22 13:35:20
2

คำตอบที่ดีที่สุด

2

GlobalAveragePooling2D จะ downsample การนำเข้าข้อมูลจากการฆ่าคนโดยเฉลี่ยนค่าตาม spatial มิติและกลับมาเป็น 1D ผลส่งออกโดยปริยายออกจากคุณตั้งค่า keepdims= True. AveragePooling2D ยัง downsamples การนำเข้าข้อมูลแต่ต้องใช้คนโดยเฉลี่ยนค่ามาเป็นค่าหน้าต่างถูกกำหนดโดยที่ pool_size พารามิเตอร์. ดังนั้นมันจะกลับไปเป็น 3 มิติแสดงผล:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
print(avg_pool_2d(x).shape)
print(avg_global_2d(x).shape)
(1, 2, 2, 1)
(1, 1)

คุณอาจจะต้องลบรูของคุณส่งออกจาก AveragePooling2D เลเยอร์ถ้าคุณต้องการแหล่งป้อนมันจะเป็น Dense เลเยอร์หลังจากนั้น:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
print(tf.keras.layers.Flatten()(avg_pool_2d(x)).shape)
print(avg_global_2d(x).shape)
(1, 4)
(1, 1)

ถ้ามันไม่ใช่อย่างนั้นคุณสามารถทิ้งมันไว้อย่างนี้ก็ได้

ปรับปรุง: GlobalAveragePooling2D แล้ว AveragePooling2D สามารถบางครั้งทำตัวเหมือนๆกันถ้าคุณปรับแก้ strides แล้ว pool_size พารามิเตอร์ได้ตามคาด:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(3, 3), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()

print(avg_pool_2d(x))
print(avg_global_2d(x))
tf.Tensor([[[[3.]]]], shape=(1, 1, 1, 1), dtype=float32)
tf.Tensor([[5.]], shape=(1, 1), dtype=float32)

หรือ

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(3, 3),
   strides=(2, 2), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
tf.Tensor([[[[5.]]]], shape=(1, 1, 1, 1), dtype=float32)
tf.Tensor([[5.]], shape=(1, 1), dtype=float32)
2021-11-22 14:51:04

'x=ข้อมูลเข้า(รูปร่าง=(128,128,3))'หลังจากหลายคนมากก FCN เลเยอร์ฉันต้อง:'เป็=Conv2D(200,(1,1),นุ่นช่วย='กับ',การกระตุ้นการทำงาน='softmax',data_format='channels_last')(output_of_the_layer_before)'เป็นครั้งสุดท้ายที่ convolutional เลเยอร์แล้วฉันทำ'b=Lambda(lambda ตำแหน่งทางแกน x:บีบ(x กษะ=2))(AveragePooling2D(pool_size=(1,128))(เป็น)
DSPinterested

มันทำงานไม่เป็นไรสำหรับเฉพาะงานผมซึ่งทำให้ฉันสงสัยว่านั่นใช้ GlobalaveragePooling2D อาจจะไม่ใช่คนเดียวที่ตัวเลือกสำหรับแทนที่เป้าหมายของเสื้อผ้าหลายชั้น...ยังกับ GlobalAveragePooling2D คุณมีตัวเลือกของ keepdims=เรื่องจริง'หรือ'keepdims=ปลอม'ไม่สามารถแบ่งปันของฉันรหัสฉันหวังว่านี่คงจะมีเหตุผลกับคุณ
DSPinterested

ใช่มันได้เป็นการฆาตกรรม..แต่อะไรคือคำถามของคุณตอนนี้หรือสิ่งที่คุณไม่เข้าใจรึเปล่า?
AloneTogether

ยังไงโดยใช้ AveragePooling2D เลเยอร์เหมือนถูกระบุไว้ด้านบนทางไปเกือบจะเหมือนกันผลตรวจรจัดแบ่งประเภทที่ GlobalAveragePooling2D! ปกติแล้วในวรรณกรรมฉันเกือบเสมองเห็น GlobalAveragePooling2D เป็นคนที่จะมาแทนสำหรับละเอียดชั้นใน FCN แต่ไม่เคยเห็น AveragePooling2D ถูกใช้แทนที่จะเป็นเป้าหมายของเลเยอร์
DSPinterested

ปรับปรุงคำตอบแต่ไม่สามารถ reproduce รหัสคุณเพิ่มเข้าไปในคอมเมนท์..ได้โปรดปรับปรุงของคำถามกับคนที่เกี่ยวข้องรหัสผลและคำถามของนาย
AloneTogether

โกลบอลเฉลี่ย pooling คือไม่มีอะไรพิเศษ คุณสามารถใช้เฉลี่ย pooling กับตัวกรองขนาดเท่ากับที่นำเข้าข้อมูลขนาดและถูกต้อนุ่นช่วยแล้วมันเป็นคนเดียวกันแน่นอน คุณสามารถทำได้แม้กระทั่งใช้ฟังก์ชันเหมือน tf.reduce_mean. เหตุผลที่ไม่มีใครทำเรื่องนี้มันเป็นแค่ทางที่ง่ายกว่าที่จะใช้ทั่วไป pooling โดยตรง...
xdurch0

@xdurch0,สมเหตุสมผล!
DSPinterested
0

เพิ่มไปที่คำตอบชั้นโกลบอลเฉลี่ย pooling สามารถถูกใช้สำหรับพาตัวแปรขนาดภาพต่างๆเป็น inputs. ถ้าข้อมูลรูปร่างก่อนที่โกลบอล pooling คือ (N,H,W,C) งั้นก็ออกจะเป็น (N,1,1,C) สำหรับตอนที่ keras keepdims=True. มันทำให้คนแสดงผลภาพของภาพต่างกัน (H,W) ผลิตที่คล้ายกันรูปร่างแสดงผล.

จะอ้างอิงไปยัง:

2021-11-22 13:59:40

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่