Implementación de Pytorch del algoritmo de reptiles de Opensei para el aprendizaje supervisado.
Actualmente, se ejecuta en Omniglot pero aún no en Miniimagenet.
El código no ha sido probado ampliamente. ¡Las contribuciones y los comentarios son más que bienvenidos!
Ya hay una clase de conjunto de datos Omniglot en Vision TorchVision, sin embargo, parece estar más adaptada para el aprendizaje supervisado que el aprendizaje de pocos disparos.
omniglot.py proporciona una forma de probar tareas base K-Shot N-Way de Omniglot, y diversas utilidades para dividir los conjuntos de metaetraining, así como tareas base.
Descargue las dos partes del conjunto de datos OmnigLot:
Cree una carpeta omniglot/ en el repositorio, descomprima y fusione los dos archivos para tener la siguiente estructura de carpeta:
./train_omniglot.py
...
./omniglot/Alphabet_of_the_Magi/
./omniglot/Angelic/
./omniglot/Anglo-Saxon_Futhorc/
...
./omniglot/ULOG/
Ahora comience a entrenar con
python train_omniglot.py log --cuda 0 $HYPERPARAMETERS # with CPU
python train_omniglot.py log $HYPERPARAMETERS # with CUDA
Donde $ Hyperparameters depende de su tarea e hiperparámetros.
Comportamiento:
log/ , esto creará un log/ carpeta para almacenar información de tensorboard y puntos de control.log/ , esto se reanudará desde el último punto de control. La capacitación se puede interrumpir en cualquier momento con ^C y reanudarse desde el último punto de control volviendo a ejecutar el mismo comando.
El siguiente conjunto de hiperparámetros funciona de manera decente. Se toman de la implementación de OpenAI pero se adaptan ligeramente para meta-batch=1 .


Para 5-vías 5-shot (curva roja):
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.001Para 1-shot de 5 vías (curva azul):
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