หมายเหตุ:ฉันทำการคำนวณเหล่านี้โดยเฉพาะดังนั้นข้อผิดพลาดบางอย่างอาจพุ่งเข้ามาโปรดแจ้งข้อผิดพลาดดังกล่าวเพื่อให้ฉันสามารถแก้ไขได้
โดยทั่วไปใน CNN ใด ๆ เวลาสูงสุดของการฝึกอบรมจะเกิดขึ้นใน Back-Propagation ของข้อผิดพลาดใน Layer ที่เชื่อมต่อเต็มที่ (ขึ้นอยู่กับขนาดของภาพ) นอกจากนี้หน่วยความจำสูงสุดยังครอบครองโดยพวกเขา นี่คือสไลด์จาก Stanford เกี่ยวกับพารามิเตอร์ VGG Net:
เห็นได้ชัดว่าคุณสามารถเห็นเลเยอร์ที่เชื่อมต่อเต็มที่มีส่วนร่วมกับพารามิเตอร์ประมาณ 90% ดังนั้นหน่วยความจำสูงสุดจะถูกครอบครองโดยพวกเขา
( 3 ∗ 3 ∗ 3 )( 3 ∗ 3 ∗ 3 )224 ∗ 224224 ∗ 224 ∗ ( 3 ∗ 3 ∗ 3 )64224 ∗ 22464 ∗ 224 ∗ 224 ∗ ( 3 ∗ 3 ∗ 3 ) ≈ 87 ∗ 106
56 ∗ 56 ∗ 25656 ∗ 56( 3 ∗ 3 ∗ 256 )56 ∗ 56256 ∗ 56 ∗ 56 ∗ ( 3 ∗ 3 ∗ 256 ) ≈ 1850 ∗ 106
s t r i de = 1
c h a n n e l so u t p u t* ( P ฉันx อีลิตรโอยูทีพียูทีh e i gเอชที* หน้าฉันx อีลิตรโอยูทีพียูทีW ฉันdt h)∗ ( fฉันลิตรทีอีอาร์h e i gเอชที∗ fฉันลิตรทีอีอาร์W ฉันdt h∗ c h a n n e l sฉันn พียูที)
ขอบคุณ GPU ที่รวดเร็วของเราทำให้เราสามารถจัดการการคำนวณขนาดใหญ่เหล่านี้ได้อย่างง่ายดาย แต่ในชั้น FC นั้นจำเป็นต้องโหลดเมทริกซ์ทั้งหมดซึ่งทำให้เกิดปัญหาหน่วยความจำซึ่งโดยทั่วไปไม่ใช่กรณีของเลเยอร์ convolutional ดังนั้นการฝึกอบรมเลเยอร์ convolutional จึงยังคงง่าย นอกจากนี้สิ่งเหล่านี้จะต้องถูกโหลดในหน่วยความจำ GPU เองและไม่ใช่ RAM ของ CPU
นี่คือแผนภูมิพารามิเตอร์ของ AlexNet:
และนี่คือการเปรียบเทียบประสิทธิภาพของสถาปัตยกรรม CNN ต่างๆ:
ฉันขอแนะนำให้คุณดูCS231n Lecture 9โดย Stanford University เพื่อทำความเข้าใจเกี่ยวกับซอกและ crannies ของสถาปัตยกรรมของ CNN