การใช้งาน Pytorch ที่เปิดใช้งาน CUDA ของ CapsNet Architecture ในกระดาษ "การกำหนดเส้นทางแบบไดนามิกระหว่างแคปซูล" โดย Kenta Iwasaki ในนามของ Gram.ai
การฝึกอบรมสำหรับโมเดลนั้นทำโดยใช้ Torchnet โดยมีการโหลดชุดข้อมูล MNIST และการประมวลผลล่วงหน้าด้วย Torchvision
แคปซูลเป็นกลุ่มของเซลล์ประสาทที่มีเวกเตอร์กิจกรรมแสดงถึงพารามิเตอร์อินสแตนซ์ของเอนทิตีประเภทเฉพาะเช่นวัตถุหรือชิ้นส่วนวัตถุ เราใช้ความยาวของเวกเตอร์กิจกรรมเพื่อแสดงถึงความน่าจะเป็นที่เอนทิตีมีอยู่และการปฐมนิเทศเพื่อแสดงถึงพารามิเตอร์อินสแตนซ์ แคปซูลที่ใช้งานอยู่ในระดับหนึ่งทำการคาดการณ์ผ่านเมทริกซ์การแปลงสำหรับพารามิเตอร์อินสแตนซ์ของแคปซูลระดับสูง เมื่อการคาดการณ์หลายครั้งเห็นด้วยแคปซูลระดับที่สูงขึ้นจะใช้งานได้ เราแสดงให้เห็นว่าระบบแคปซูลหลายชั้นที่ได้รับการฝึกฝนโดยแยกแยะได้รับประสิทธิภาพที่ทันสมัยบน MNIST และดีกว่าตาข่าย convolutional อย่างมากในการรับรู้ตัวเลขที่ทับซ้อนกันสูง เพื่อให้ได้ผลลัพธ์เหล่านี้เราใช้กลไกการกำหนดเส้นทางแบบซ้ำ ๆ : แคปซูลระดับล่างชอบที่จะส่งเอาต์พุตไปยังแคปซูลระดับที่สูงขึ้นซึ่งเวกเตอร์กิจกรรมมีผลิตภัณฑ์สเกลาร์ขนาดใหญ่พร้อมการทำนายที่มาจากแคปซูลระดับล่าง
กระดาษเขียนโดย Sara Sabour, Nicholas Frosst และ Geoffrey E. Hinton สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบกระดาษที่นี่
ขั้นตอนที่ 1 ปรับจำนวนยุคการฝึกอบรมขนาดแบทช์ ฯลฯ ภายใน capsule_network.py
BATCH_SIZE = 100
NUM_CLASSES = 10
NUM_EPOCHS = 30
NUM_ROUTING_ITERATIONS = 3ขั้นตอนที่ 2 เริ่มการฝึกอบรม ชุดข้อมูล MNIST จะถูกดาวน์โหลดหากคุณยังไม่ได้อยู่ในไดเรกทอรีเดียวกันกับที่สคริปต์ทำงานอยู่ตรวจสอบให้แน่ใจว่ามีเซิร์ฟเวอร์ VISDOM ทำงานอยู่!
$ sudo python3 -m visdom.server & python3 capsule_network.py ความแม่นยำสูงสุดคือ 99.7% ในยุค 443 โมเดลอาจบรรลุความแม่นยำสูงขึ้นตามที่แสดงโดยแนวโน้มของกราฟความแม่นยำ/การสูญเสียกราฟด้านล่าง

Pytorch Adam Optimizer Hyperparameters เริ่มต้นโดยไม่มีการกำหนดค่าอัตราการเรียนรู้ ยุคที่มีขนาดแบทช์ 100 ใช้เวลา ~ 3 นาทีในใบมีดด
ส่วนใหญ่อ้างอิงถึงการใช้งาน Tensorflow และ Keras ทั้งสองนี้:
ขอบคุณมากสำหรับ @innerpeace-wu สำหรับการอภิปรายเกี่ยวกับขั้นตอนการกำหนดเส้นทางแบบไดนามิกที่ระบุไว้ในกระดาษ
ขณะนี้ Gram.ai กำลังพัฒนาโมเดล AI จำนวนมากเพื่อเปิดแหล่งที่มาหรือเปิดตัวฟรีให้กับชุมชนดังนั้นทำไมเราไม่สามารถรับประกันการสนับสนุนที่สมบูรณ์สำหรับงานนี้
หากมีปัญหาใด ๆ เกิดขึ้นกับการใช้งานของการใช้งานนี้หรือหากคุณต้องการมีส่วนร่วมในทางใดทางหนึ่งโปรดส่งอีเมลไปที่ [email protected] หรือเปิดปัญหา GitHub ใหม่ในที่เก็บนี้