Krizhevsky '12 CNN ได้รับเซลล์ประสาท 253,440 ในชั้นแรกอย่างไร


24

ใน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 เซลล์ประสาทสำหรับชั้นแรกเป็นอย่างไร ฉันพลาดอะไรไป


คุณเคยแก้ไขปัญหานี้หรือไม่? เพื่ออวดความสามารถในการคำนวณของคุณ: จริง ๆ แล้วความน่าจะเป็น 54.25 ฉันพยายามคิดออกและเป็นขั้นตอนแรกแบ่งเซลล์ประสาท 253440 ควรจาก 96 ตัวกรองซึ่งให้ 2,640 เซลล์ประสาทต่อตัวกรอง นี่ไม่ใช่ตัวเลขจตุรัส ดังนั้นเราทั้งคู่ต่างก็มีความเข้าใจผิดที่นี่หรืออาจจะมีข้อผิดพลาดจากผู้เขียน ... คุณติดต่อพวกเขาหรือไม่?
anderas

เดียวกันกับฉันมันทำให้ฉันสับสนมาก btw มีความจริงอินพุตเป็น 224x224x3 หรือไม่ ฉันคิดว่ามันต้องเป็น 227x227x3 ให้เราดูว่าเรามี 227x227, 5 เซลล์ทางซ้ายแรกและ 5 เซลล์ทางขวาสุดไม่สามารถเป็นจุดศูนย์กลางของเคอร์เนลที่มีขนาด 11x11 ดังนั้นศูนย์กลางแรกของเคอร์เนลคือเซลล์ (6,6) และสุดท้ายของเคอร์เนลตรงกลางในแถวแรกคือเซลล์ (6x222) ด้วย stride-4 เราจะได้ศูนย์กลางของเคอร์เนลในแถวที่หกคือ: เซลล์ในคอลัมน์: 6,10,14, ... , 222 และสูตรง่าย ๆ สำหรับศูนย์กลางของ kernel-k อยู่ในคอลัมน์ = 6+ (k -1) * 4 ดังนั้นคอลัมน์ 222 คือ k-th center = (222-6) / 4 +1 = 55

4
โปรดทราบว่า 48 * 48 * 55 * 2 = 253440 ดังนั้นจึงเป็นไปได้ที่พวกเขาจะพิมพ์ผิดเมื่อคำนวณจำนวนของเซลล์ประสาทในชั้นแรก (คูณด้วย 48 แทน 55)
tsiki

ที่เกี่ยวข้อง: area51.stackexchange.com/proposals/93481/…
kenorb

@Firebug นี่เป็นการใช้งานที่น่าสนใจของแท็ก [การอ้างอิง] ฉันคิดว่าเราใช้สำหรับคำถามที่ขอการอ้างอิงเท่านั้น แต่บางทีฉันผิด คุณใช้มันแตกต่างกันหรือไม่?
อะมีบาพูดว่า Reinstate Monica

คำตอบ:


8

จากหมายเหตุ stanfords บน NN:

ตัวอย่างโลกแห่งความจริง Krizhevsky และคณะ สถาปัตยกรรมที่ได้รับรางวัล ImageNet ในปี 2555 รับภาพขนาด [227x227x3] ใน Convolutional Layer แรกมันใช้เซลล์ประสาทที่มีขนาดฟิลด์ที่รับได้ F = 11, stride S = 4 และไม่มีการเติมเต็มศูนย์ P = 0 ตั้งแต่ (227 - 11) / 4 + 1 = 55 และเนื่องจากชั้น Conv มีความลึก K = 96 ปริมาณการส่งออก Conv ชั้นจึงมีขนาด [55x55x96] เซลล์ประสาท 55 * 55 * 96 แต่ละตัวในเล่มนี้เชื่อมต่อกับพื้นที่ขนาด [11x11x3] ในปริมาณอินพุต ยิ่งไปกว่านั้นเซลล์ประสาททั้ง 96 ในคอลัมน์ความลึกแต่ละคอลัมน์เชื่อมต่อกับภูมิภาค [11x11x3] ของอินพุต แต่แน่นอนว่ามีน้ำหนักแตกต่างกัน สนุกกันถ้าคุณอ่านกระดาษจริงมันอ้างว่าภาพที่ป้อนเป็น 224x224 ซึ่งไม่ถูกต้องแน่นอนเพราะ (224 - 11) / 4 + 1 ค่อนข้างชัดเจนไม่ใช่จำนวนเต็ม สิ่งนี้ทำให้หลายคนสับสนในประวัติศาสตร์ ConvNets และไม่ค่อยมีใครรู้เกี่ยวกับสิ่งที่เกิดขึ้น สิ่งที่ฉันคาดเดาได้ดีที่สุดก็คืออเล็กซ์ใช้การเติมเต็มศูนย์แบบไม่มีพิกเซลเพิ่มอีก 3 พิกเซลซึ่งเขาไม่ได้กล่าวถึงในกระดาษ

อ้างอิง: http://cs231n.github.io/convolutional-networks/

บันทึกเหล่านี้มาพร้อมกับชั้นเรียนของ Stanford CS คลาส CS231n: Convolutional Neural Networks สำหรับการจดจำภาพ สำหรับคำถาม / ข้อสงสัย / รายงานข้อผิดพลาดเกี่ยวกับการติดต่อ Justin Johnson เกี่ยวกับการมอบหมายหรือติดต่อ Andrej Karpathy เกี่ยวกับบันทึกหลักสูตร


เป็นไปได้ไหมที่จะให้เครดิตโดยการตั้งชื่อผู้แต่งโน้ตเหล่านั้น?
Silverfish

ผู้เขียนอ้างอิงตนเองอย่างชัดเจนในบันทึกให้ดูที่cs231n.github.io
เบคอน

2
แม้ว่าพวกเขาจะมีการอ้างอิงอย่างชัดเจนหากคุณไปที่ลิงค์ข้อความที่ปรากฏที่นี่ด้วยดังนั้นควรมีเครดิตที่นี่ด้วย นั่นเป็นความอนุเคราะห์ส่วนหนึ่ง แต่เนื่องจากลิงก์อาจหยุดทำงาน (เช่นหากวัสดุถูกลบออก / paywalled / ย้ายไปยังที่อยู่ใหม่) น่าเสียดายที่เรามีปัญหาอย่างรุนแรงกับ "ลิงค์เน่า" ในเว็บไซต์นี้ - ในขณะที่เราตั้งใจที่จะใช้เป็นแหล่งเก็บข้อมูลระยะยาวของคำตอบที่มีคุณภาพสูงสำหรับคำถามเชิงสถิติ . ดังนั้นจึงเป็นเรื่องที่ปลอดภัยกว่าที่จะพยายามหาคำตอบที่เป็นของตัวเองให้ได้มากที่สุด
Silverfish

0

กระดาษนี้ทำให้สับสนจริงๆ ก่อนอื่นขนาดอินพุตของภาพไม่ถูกต้อง 224x224 จะไม่ให้ผลลัพธ์เป็น 55 เซลล์ประสาทเหล่านั้นก็เหมือนกับกลุ่มพิกเซลในหนึ่งเดียวดังนั้นเอาต์พุตจึงเป็นภาพ 2D ของค่าสุ่ม (ค่าเซลล์ประสาท) ดังนั้นโดยทั่วไปจำนวนของเซลล์ประสาท = widthxheightxdepth ไม่มีความลับที่จะคิดออก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.