Implementasi Pytorch dari algoritma reptil Openai untuk pembelajaran yang diawasi.
Saat ini, berjalan di omniglot tetapi belum pada miniimagenet.
Kode belum diuji secara luas. Kontribusi dan umpan balik lebih dari disambut!
Sudah ada kelas dataset Omniglot di TorchVision, namun tampaknya lebih disesuaikan untuk belajar-belajar yang diawasi daripada beberapa pembelajaran shot.
omniglot.py menyediakan cara untuk mencicipi tugas dasar N-way dari omniglot, dan berbagai utilitas untuk membagi set meta-pelatihan serta tugas-tugas dasar.
Unduh dua bagian dataset Omniglot:
Buat omniglot/ folder di repo, unzip dan gabungkan kedua file untuk memiliki struktur folder berikut:
./train_omniglot.py
...
./omniglot/Alphabet_of_the_Magi/
./omniglot/Angelic/
./omniglot/Anglo-Saxon_Futhorc/
...
./omniglot/ULOG/
Sekarang mulailah berlatih dengan
python train_omniglot.py log --cuda 0 $HYPERPARAMETERS # with CPU
python train_omniglot.py log $HYPERPARAMETERS # with CUDA
Di mana $ hyperparameter tergantung pada tugas dan hiperparameter Anda.
Perilaku:
log/ , ini akan membuat log/ folder untuk menyimpan informasi dan pos pemeriksaan Tensorboard.log/ , ini akan dilanjutkan dari pos pemeriksaan terakhir. Pelatihan dapat terganggu kapan saja dengan ^C , dan dilanjutkan dari pos pemeriksaan terakhir dengan menjalankan kembali perintah yang sama.
Set hiperparameter berikut berfungsi dengan baik. Mereka diambil dari implementasi OpenAI tetapi sedikit diadaptasi untuk meta-batch=1 .


Untuk 5-arah 5-shot (kurva merah):
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.001Untuk 5-arah 1-shot (Kurva Biru):
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