การใช้งาน Pytorch ของอัลกอริทึมสัตว์เลื้อยคลานของ OpenAI สำหรับการเรียนรู้ภายใต้การดูแล
ปัจจุบันมันทำงานบน omniglot แต่ยังไม่ได้อยู่ใน miniimagenet
รหัสยังไม่ได้รับการทดสอบอย่างกว้างขวาง การมีส่วนร่วมและข้อเสนอแนะเป็นมากกว่าการต้อนรับ!
มีคลาสชุดข้อมูล Omniglot อยู่แล้วใน Torchvision แต่ดูเหมือนว่าจะถูกปรับให้เข้ากับการเรียนรู้ภายใต้การดูแลมากกว่าการเรียนรู้ไม่กี่นัด
omniglot.py ให้วิธีการสุ่มตัวอย่างงานฐาน K-shot n-way จาก omniglot และยูทิลิตี้ต่างๆเพื่อแยกชุดการฝึกอบรมเมตาดาต้ารวมถึงงานฐาน
ดาวน์โหลดชุดข้อมูล Omniglot สองส่วน:
สร้าง omniglot/ โฟลเดอร์ใน repo, unzip และรวมไฟล์สองไฟล์เพื่อให้มีโครงสร้างโฟลเดอร์ต่อไปนี้:
./train_omniglot.py
...
./omniglot/Alphabet_of_the_Magi/
./omniglot/Angelic/
./omniglot/Anglo-Saxon_Futhorc/
...
./omniglot/ULOG/
ตอนนี้เริ่มฝึกด้วย
python train_omniglot.py log --cuda 0 $HYPERPARAMETERS # with CPU
python train_omniglot.py log $HYPERPARAMETERS # with CUDA
โดยที่ $ hyperparameters ขึ้นอยู่กับงานและพารามิเตอร์ของคุณ
พฤติกรรม:
log/ สิ่งนี้จะสร้าง log/ โฟลเดอร์เพื่อจัดเก็บข้อมูล Tensorboard และจุดตรวจlog/ สิ่งนี้จะกลับมาจากจุดตรวจสุดท้าย การฝึกอบรมสามารถถูกขัดจังหวะได้ตลอดเวลาด้วย ^C และกลับมาทำงานต่อจากจุดตรวจครั้งสุดท้ายโดยการรันคำสั่งเดียวกันอีกครั้ง
ชุดพารามิเตอร์ hyperparameters ต่อไปนี้ทำงานได้อย่างเหมาะสม พวกเขาถูกนำมาจากการใช้งาน OpenAI แต่ได้รับการดัดแปลงเล็กน้อยสำหรับ meta-batch=1


สำหรับ 5-way 5-shot (เส้นโค้งสีแดง):
python train_omniglot.py log/o55 --classes 5 --shots 5 --train-shots 10 --meta-iterations 100000 --iterations 5 --test-iterations 50 --batch 10 --meta-lr 0.2 --lr 0.001สำหรับ 5-way 1-shot (เส้นโค้งสีน้ำเงิน):
python train_omniglot.py log/o51 --classes 5 --shots 1 --train-shots 12 --meta-iterations 200000 --iterations 12 --test-iterations 86 --batch 10 --meta-lr 0.33 --lr 0.00044