Tujuan repositori ini adalah untuk berisi kode yang bersih, mudah dibaca, dan diuji untuk mereproduksi beberapa penelitian pembelajaran.
Proyek ini ditulis dalam Python 3.6 dan Pytorch dan menganggap Anda memiliki GPU.
Lihat artikel medium ini untuk beberapa informasi lebih lanjut
Tercantum dalam requirements.txt . Instal dengan pip install -r requirements.txt lebih disukai di VirtualEnv.
Edit variabel DATA_PATH di config.py ke lokasi tempat Anda menyimpan dataset omniglot dan miniimagenet.
Setelah memperoleh data dan menjalankan skrip pengaturan yang seharusnya terlihat seperti struktur folder Anda
DATA_PATH/
Omniglot/
images_background/
images_evaluation/
miniImageNet/
images_background/
images_evaluation/
Dataset Omniglot . Unduh dari https://github.com/brendenlake/omniglot/tree/master/python, tempatkan file yang diekstraksi ke dalam DATA_PATH/Omniglot_Raw dan jalankan scripts/prepare_omniglot.py
Dataset MiniMagenet . Unduh file dari https://drive.google.com/file/d/0b3irx3uqnobmq1flnxjszudywee/view, tempatkan dalam data/miniImageNet/images dan jalankan scripts/prepare_mini_imagenet.py
Setelah menambahkan dataset menjalankan pytest di direktori root untuk menjalankan semua tes.
experiments/experiments.txt File berisi hiperparameter yang saya gunakan untuk mendapatkan hasil yang diberikan di bawah ini.

Jalankan experiments/proto_nets.py untuk mereproduksi hasil dari jaringan prototical untuk pembelajaran beberapa shot (Snell et al).
Argumen
| Omniglot | ||||
|---|---|---|---|---|
| K-Way | 5 | 5 | 20 | 20 |
| n-shot | 1 | 5 | 1 | 5 |
| Diterbitkan | 98.8 | 99.7 | 96.0 | 98.9 |
| Repo ini | 98.2 | 99.4 | 95.8 | 98.6 |
| miniimagenet | ||
|---|---|---|
| K-Way | 5 | 5 |
| n-shot | 1 | 5 |
| Diterbitkan | 49.4 | 68.2 |
| Repo ini | 48.0 | 66.2 |
Klasifikasi tetangga terdekat yang dapat dibedakan.

Jalankan experiments/matching_nets.py untuk mereproduksi hasil dari jaringan pencocokan untuk pembelajaran satu bidikan (Vinyals et al).
Argumen
Saya mengalami kesulitan mereproduksi hasil makalah ini menggunakan metrik jarak cosinus karena saya menemukan konverge menjadi lambat dan kinerja akhir tergantung pada inisialisasi acak. Namun saya dapat mereproduksi (dan sedikit melebihi) hasil makalah ini menggunakan metrik jarak L2.
| Omniglot | ||||
|---|---|---|---|---|
| K-Way | 5 | 5 | 20 | 20 |
| n-shot | 1 | 5 | 1 | 5 |
| Diterbitkan (cosine) | 98.1 | 98.9 | 93.8 | 98.5 |
| Repo ini (cosinus) | 92.0 | 93.2 | 75.6 | 77.8 |
| Repo ini (l2) | 98.3 | 99.8 | 92.8 | 97.8 |
| miniimagenet | ||
|---|---|---|
| K-Way | 5 | 5 |
| n-shot | 1 | 5 |
| Diterbitkan (Cosine, FCE) | 44.2 | 57.0 |
| Repo ini (cosinus, fce) | 42.8 | 53.6 |
| Repo ini (l2) | 46.0 | 58.4 |

Saya menggunakan max pooling alih -alih konvolusi yang diikat agar konsisten dengan kertas lain. Eksperimen miniimagenet menggunakan pesanan ke -2 MAML membutuhkan waktu lebih dari satu hari.
Jalankan experiments/maml.py untuk mereproduksi hasil dari meta-learning model-agnostik (Finn et al).
Argumen
NB: Untuk maml n, k dan q ditetapkan antara kereta dan tes. Anda mungkin perlu menyesuaikan ukuran meta-batch agar sesuai dengan GPU Anda. Pesanan ke -2 MAML menggunakan lebih banyak memori.
| Omniglot | ||||
|---|---|---|---|---|
| K-Way | 5 | 5 | 20 | 20 |
| n-shot | 1 | 5 | 1 | 5 |
| Diterbitkan | 98.7 | 99.9 | 95.8 | 98.9 |
| Repo ini (1) | 95.5 | 99.5 | 92.2 | 97.7 |
| Repo ini (2) | 98.1 | 99.8 | 91.6 | 95.9 |
| miniimagenet | ||
|---|---|---|
| K-Way | 5 | 5 |
| n-shot | 1 | 5 |
| Diterbitkan | 48.1 | 63.2 |
| Repo ini (1) | 46.4 | 63.3 |
| Repo ini (2) | 47.5 | 64.7 |
Nomor dalam tanda kurung menunjukkan maml pesanan pertama atau 2.