meta-blocks

Meta-Blocks is a modular toolbox for research, experimentation, and reproducible benchmarking of learning-to-learn algorithms. The toolbox provides flexible APIs for working with MetaDatasets, TaskDistributions, and MetaLearners (see the figure below). The APIs make it easy to implement a variety of meta-learning algorithms, run them on well-established and emerging benchmarks, and add your own meta-learning problems to the suite and benchmark algorithms on them.

system_illustration

Meta-Blocks package comes with:

  • Flexible APIs, detailed documentation, and multiple examples.
  • Popular models and algorithms such as MAML [1], Reptile [2], Protonets [3].
  • Supervised and unsupervised meta-learning setups compatible with all algorithms.
  • Customizable modules and utility functions for quick prototyping on new meta-learning algorithms.

Installation

It is recommended to use pip for installation. Please make sure
the latest version is installed, as meta-blocks is updated frequently:

$ pip install meta-blocks            # normal install
$ pip install --upgrade meta-blocks  # or update if needed
$ pip install --pre meta-blocks      # or include pre-release version for new features

Alternatively, you could clone and run setup.py file:

$ git clone https://github.com/alshedivat/meta-blocks.git
$ cd meta-blocks
$ pip install .

Required Dependencies\ :

  • albumentations
  • hydra-core
  • numpy
  • Pillow
  • scipy
  • scikit-learn
  • tensorflow>=2.1

Examples

TODO:
We should provide a minimal example so people could run immediately.
Ideally, the running time should be within a few mins.


Development

For development and contributions, please make sure to install pre-commit hooks to ensure proper code style and formatting:

$ pip install pre-commit      # install pre-commit
$ pre-commit install          # install git hooks
$ pre-commit run --all-files  # run pre-commit on all the files

Status

Meta-Blocks is currently under development as of Apr, 2020.

Watch & Star to get the latest update! Also feel free to contact for suggestions and ideas.


Citing Meta-Blocks

TODO: add citation information as soon as available.


Reference

[1] Finn, C., Abbeel, P. and Levine, S. Model-agnostic meta-learning for fast adaptation of deep networks. ICML 2017.

[2] Nichol, A., Achiam, J. and Schulman, J. On first-order meta-learning algorithms. arXiv preprint arXiv:1803.02999.

[3] Snell, J., Swersky, K. and Zemel, R. Prototypical networks for few-shot learning. NeurIPS 2017.

GitHub