จุดมุ่งหมายสำหรับพื้นที่เก็บข้อมูลนี้คือการมีรหัสที่สะอาดอ่านง่ายและทดสอบเพื่อทำซ้ำการวิจัยการเรียนรู้ไม่กี่นัด
โครงการนี้เขียนด้วย Python 3.6 และ Pytorch และสมมติว่าคุณมี GPU
ดูบทความขนาดกลางเหล่านี้สำหรับข้อมูลเพิ่มเติม
รายการใน requirements.txt . txt ติดตั้งด้วย pip install -r requirements.txt โดยเฉพาะอย่างยิ่งใน virtualenv
แก้ไขตัวแปร DATA_PATH ใน config.py ไปยังตำแหน่งที่คุณจัดเก็บชุดข้อมูล omniglot และ miniimagenet
หลังจากได้รับข้อมูลและเรียกใช้สคริปต์การตั้งค่าโครงสร้างโฟลเดอร์ของคุณควรมีลักษณะ
DATA_PATH/
Omniglot/
images_background/
images_evaluation/
miniImageNet/
images_background/
images_evaluation/
ชุดข้อมูล Omniglot ดาวน์โหลดจาก https://github.com/brendenlake/omniglot/tree/master/python วางไฟล์ที่แยกลงใน DATA_PATH/Omniglot_Raw และเรียกใช้ scripts/prepare_omniglot.py
ชุดข้อมูล MINIIMAGENET ดาวน์โหลดไฟล์จาก https://drive.google.com/file/d/0b3irx3uqnobmq1flnxjszudywee/view วางใน data/miniImageNet/images scripts/prepare_mini_imagenet.py
หลังจากเพิ่มชุดข้อมูลเรียกใช้ pytest ในไดเรกทอรีรูทเพื่อเรียกใช้การทดสอบทั้งหมด
ไฟล์ experiments/experiments.txt มี hyperparameters ที่ฉันใช้เพื่อให้ได้ผลลัพธ์ที่ได้รับด้านล่าง

เรียกใช้ experiments/proto_nets.py เพื่อทำซ้ำผลลัพธ์จากเครือข่าย prototpyical สำหรับการเรียนรู้ไม่กี่นัด (Snell et al)
ข้อโต้แย้ง
| ไม้สวย | ||||
|---|---|---|---|---|
| K-Way | 5 | 5 | 20 | 20 |
| N-shot | 1 | 5 | 1 | 5 |
| ที่ตีพิมพ์ | 98.8 | 99.7 | 96.0 | 98.9 |
| repo นี้ | 98.2 | 99.4 | 95.8 | 98.6 |
| ขนาดเล็ก | ||
|---|---|---|
| K-Way | 5 | 5 |
| N-shot | 1 | 5 |
| ที่ตีพิมพ์ | 49.4 | 68.2 |
| repo นี้ | 48.0 | 66.2 |
ตัวจําแนกเพื่อนบ้านที่ใกล้เคียงที่สุดที่แตกต่างกัน

เรียกใช้ experiments/matching_nets.py เพื่อทำซ้ำผลลัพธ์จากเครือข่ายที่ตรงกันสำหรับการเรียนรู้หนึ่งนัด (Vinyals et al)
ข้อโต้แย้ง
ฉันมีปัญหาในการทำซ้ำผลลัพธ์ของบทความนี้โดยใช้ตัวชี้วัดระยะทางโคไซน์เนื่องจากฉันพบว่าการบรรจบกันช้าและประสิทธิภาพสุดท้ายขึ้นอยู่กับการเริ่มต้นแบบสุ่ม อย่างไรก็ตามฉันสามารถทำซ้ำ (และเกินเล็กน้อย) ผลลัพธ์ของบทความนี้โดยใช้ตัวชี้วัดระยะทาง L2
| ไม้สวย | ||||
|---|---|---|---|---|
| K-Way | 5 | 5 | 20 | 20 |
| N-shot | 1 | 5 | 1 | 5 |
| เผยแพร่ (Cosine) | 98.1 | 98.9 | 93.8 | 98.5 |
| repo นี้ (โคไซน์) | 92.0 | 93.2 | 75.6 | 77.8 |
| repo นี้ (L2) | 98.3 | 99.8 | 92.8 | 97.8 |
| ขนาดเล็ก | ||
|---|---|---|
| K-Way | 5 | 5 |
| N-shot | 1 | 5 |
| เผยแพร่ (Cosine, FCE) | 44.2 | 57.0 |
| repo นี้ (Cosine, FCE) | 42.8 | 53.6 |
| repo นี้ (L2) | 46.0 | 58.4 |

ฉันใช้การรวม Max แทนการโน้มน้าวใจเพื่อให้สอดคล้องกับเอกสารอื่น ๆ การทดลอง miniimagenet โดยใช้ลำดับที่ 2 MAML พาฉันไปหนึ่งวันในการวิ่ง
เรียกใช้ experiments/maml.py เพื่อทำซ้ำผลลัพธ์จากการเรียนรู้ meta-age-agnostic (Finn et al)
ข้อโต้แย้ง
NB: สำหรับ MAML N, K และ Q ได้รับการแก้ไขระหว่างรถไฟและการทดสอบ คุณอาจต้องปรับขนาดชุดเมตาเพื่อให้พอดีกับ GPU ของคุณ ลำดับที่ 2 MAML ใช้หน่วยความจำ มาก ขึ้น
| ไม้สวย | ||||
|---|---|---|---|---|
| K-Way | 5 | 5 | 20 | 20 |
| N-shot | 1 | 5 | 1 | 5 |
| ที่ตีพิมพ์ | 98.7 | 99.9 | 95.8 | 98.9 |
| repo นี้ (1) | 95.5 | 99.5 | 92.2 | 97.7 |
| repo นี้ (2) | 98.1 | 99.8 | 91.6 | 95.9 |
| ขนาดเล็ก | ||
|---|---|---|
| K-Way | 5 | 5 |
| N-shot | 1 | 5 |
| ที่ตีพิมพ์ | 48.1 | 63.2 |
| repo นี้ (1) | 46.4 | 63.3 |
| repo นี้ (2) | 47.5 | 64.7 |
หมายเลขในวงเล็บระบุคำสั่งที่ 1 หรือ 2 MAML