Just run the blocks sequentially on a colab notebook the below of this notebook "NonEuclidean_Meta.ipynb".
Or you can also run the "NonEuclidean_Meta.py" file line by line on a colab notebook noneuclidean_meta.py
For experiments with other manifolds change these in omniglot_non_euclidean.py Replace all "mnn.Stiefel" with "mnn.Hyperbolic" For the corresponding training Replace all "moptim.rAdagrad" with "moptim.rSGD" For the corresponding training
PyTorch code for CVPR 2018 paper: Learning to Compare: Relation Network for Few-Shot Learning (Few-Shot Learning part)
For Zero-Shot Learning part, please visit here.
Python 2.7
Pytorch 0.3
For Omniglot experiments, I directly attach omniglot 28x28 resized images in the git, which is created based on omniglot and maml.
For mini-Imagenet experiments, please download mini-Imagenet and put it in ./datas/mini-Imagenet and run proc_image.py to preprocess generate train/val/test datasets. (This process method is based on maml).
omniglot 5way 1 shot:
python omniglot_train_one_shot.py -w 5 -s 1 -b 19
omniglot 5way 5 shot:
python omniglot_train_few_shot.py -w 5 -s 5 -b 15
omniglot 20way 1 shot:
python omniglot_train_one_shot.py -w 20 -s 1 -b 10
omniglot 20way 5 shot:
python omniglot_train_few_shot.py -w 20 -s 5 -b 5
mini-Imagenet 5 way 1 shot:
python miniimagenet_train_one_shot.py -w 5 -s 1 -b 15
mini-Imagenet 5 way 5 shot:
python miniimagenet_train_few_shot.py -w 5 -s 5 -b 10
you can change -b parameter based on your GPU memory. Currently It will load my trained model, if you want to train from scratch, you can delete models by yourself.
omniglot 5way 1 shot:
python omniglot_test_one_shot.py -w 5 -s 1
Other experiments' testings are similar.
If you use this code in your research, please use the following BibTeX entry.
@inproceedings{sung2018learning,
title={Learning to Compare: Relation Network for Few-Shot Learning},
author={Sung, Flood and Yang, Yongxin and Zhang, Li and Xiang, Tao and Torr, Philip HS and Hospedales, Timothy M},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2018}
}