Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/schatty/prototypical-networks-tf
Implementation of Prototypical Networks for Few-shot Learning in TensorFlow 2.0
https://github.com/schatty/prototypical-networks-tf
few-shot-learning omniglot one-shot-learning prototypical-networks tensorflow2
Last synced: 3 months ago
JSON representation
Implementation of Prototypical Networks for Few-shot Learning in TensorFlow 2.0
- Host: GitHub
- URL: https://github.com/schatty/prototypical-networks-tf
- Owner: schatty
- License: mit
- Created: 2019-03-30T02:19:29.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-17T22:57:26.000Z (over 1 year ago)
- Last Synced: 2024-08-02T19:01:41.124Z (6 months ago)
- Topics: few-shot-learning, omniglot, one-shot-learning, prototypical-networks, tensorflow2
- Language: Python
- Homepage:
- Size: 906 KB
- Stars: 51
- Watchers: 3
- Forks: 17
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- Awesome-Tensorflow2 - schatty/prototypical-networks-tf
README
# Prototypical Networks for Few-shot in TensorFlow 2.0
Implementation of Prototypical Networks for Few-shot Learning paper (https://arxiv.org/abs/1703.05175) in TensorFlow 2.0. Model has been tested on Omniglot and miniImagenet datasets with the same splitting as in the paper.### Dependencies and Installation
* The code has been tested on Ubuntu 18.04 with Python 3.6.8 and TensorFflow 2.0.0-alpha0
* The two main dependencies are TensorFlow and Pillow package (Pillow is included in dependencies)
* To install `prototf` lib run `pytnon setup.py install`
* Run `bash data/download_omniglot.sh` from repo's root directory to download Omniglot dataset
* miniImagenet was downloaded from brilliant repo from `renmengye` (https://github.com/renmengye/few-shot-ssl-public) and placed into `data/mini-imagenet` folder### Repository Structure
The repository organized as follows. `data` directory contains scripts for dataset downloading and used as a default directory for datasets. `prototf` is the library containing the model itself (`prototf/models`) and logic for datasets loading and processing (`prototf/data`). `scripts` directory contains scripts for launching the training. `train/run_train.py` and `eval/run_eval.py` launch training and evaluation respectively. `tests` folder contains basic training procedure on small-valued parameters to check general correctness. `results` folder contains .md file with current configuration and details of conducted experiments.
### Training
* Training and evaluation configurations are specified through config files, each config describes single train+eval evnironment.
* Run `python scripts/train/run_train.py --config scripts/config_omniglot.conf` to run training on Omniglot with default parameters.
* Run `python scripts/train/run_train.py --config scripts/config_miniimagenet.conf` to run training on miniImagenet with default parmeters### Evaluating
* Run `python scripts/eval/run_eval.py --config scripts/config_omniglot.conf` to run evaluation on Omniglot
* Run `python scripts/eval/run_eval.py --config scripts/config_miniimagenet.conf` to run evaluation on miniImagenet### Tests
* Run `python -m unittest tests/test_omniglot.py` from repo's root to test Omniglot
* Run `python -m unittest tests/test_mini_imagenet.py` from repo's root test miniImagenet### Results
Omniglot:
| Evnironment | 5-way-5-shot | 5-way-1-shot | 20-way-5-shot | 20-way-1shot |
|-----------------------------|------------------|------------------|------------------|------------------|
| Accuracy | 99.4% | 97.4% | 98.4% | 92.2% |miniImagenet
| Evnironment | 5-way-5-shot | 5-way-1-shot |
|-----------------------------|------------------|------------------|
| Accuracy | 66.0% | 43.5% |Additional settings can be found in `results` folder in the root of repository.