ในAlex Krizhevsky และคณะ การจัดหมวดหมู่ของ Imagenet ด้วยเครือข่ายนิวรัล convolutionalพวกเขาระบุจำนวนของเซลล์ประสาทในแต่ละชั้น (ดูแผนภาพด้านล่าง)
อินพุตของเครือข่ายคือ 150,528 มิติและจำนวนของเซลล์ประสาทในเลเยอร์ที่เหลือของเครือข่ายนั้นมอบให้โดย 253,440–186,624–64,896–64,896–43,896–43,264–4096–4096–1000
มุมมอง 3 มิติ
จำนวนเซลล์ประสาทสำหรับเลเยอร์ทั้งหมดหลังจากที่แรกมีความชัดเจน วิธีง่ายๆในการคำนวณเซลล์ประสาทคือการคูณสามมิติของชั้นนั้น ( planes X width X height
):
- ชั้นที่ 2:
27x27x128 * 2 = 186,624
- ชั้นที่ 3:
13x13x192 * 2 = 64,896
- เป็นต้น
อย่างไรก็ตามการดูเลเยอร์แรก:
- ชั้นที่ 1:
55x55x48 * 2 = 290400
ขอให้สังเกตว่านี่ไม่ใช่ 253,440
ตามที่ระบุไว้ในกระดาษ!
คำนวณขนาดผลงาน
อีกวิธีหนึ่งในการคำนวณเมตริกซ์เอาท์พุทของการแปลงคือ:
หากภาพอินพุตเป็น 3D เทนเซอร์
nInputPlane x height x width
ขนาดภาพออกจะเป็นnOutputPlane x owidth x oheight
ที่ใด
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(จากเอกสารประกอบ SpatialConvolution ของ Torch )
ภาพอินพุตคือ:
nInputPlane = 3
height = 224
width = 224
และเลเยอร์ convolution คือ:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(เช่นขนาดเคอร์เนล11
กางเกง4
)
เสียบหมายเลขที่เราได้รับ:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
ดังนั้นเราจึงเป็นหนึ่งใน55x55
มิติที่เราต้องการเพื่อให้ตรงกับกระดาษ พวกเขาอาจจะแพ็ดดิ้ง (แต่cuda-convnet2
รูปแบบการตั้งค่าการแพ็ดดิงเป็น 0)
ถ้าเราใช้54
ขนาด - เราได้รับ96x54x54 = 279,936
เซลล์ประสาท - ยังคงมากเกินไป
ดังนั้นคำถามของฉันคือ:
พวกเขาจะได้รับ 253,440 เซลล์ประสาทสำหรับชั้นแรกเป็นอย่างไร ฉันพลาดอะไรไป