Need help with pytorch-meta?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

tristandeleu
1.3K Stars 150 Forks MIT License 342 Commits 31 Opened issues

Description

A collection of extensions and data-loaders for few-shot learning & meta-learning in PyTorch

Services available

!
?

Need anything else?

Contributors list

# 6,048
Python
pytorch
ml
meta-le...
263 commits
# 246,025
Python
Jupyter...
meta-le...
pytorch
8 commits
# 180,483
Python
C++
Shell
pytorch
6 commits
# 150,840
meta-le...
pytorch
few-sho...
C++
4 commits
# 194,158
Tensorf...
shuffle...
pytorch
few-sho...
3 commits
# 390,562
Python
meta-le...
pytorch
few-sho...
1 commit
# 442,032
Python
meta-le...
pytorch
few-sho...
1 commit
# 62,097
MongoDB
pytorch
wavefor...
stt
1 commit

Torchmeta

PyPI Build Status Documentation

A collection of extensions and data-loaders for few-shot learning & meta-learning in PyTorch. Torchmeta contains popular meta-learning benchmarks, fully compatible with both

torchvision
and PyTorch's
DataLoader
.

Features

  • A unified interface for both few-shot classification and regression problems, to allow easy benchmarking on multiple problems and reproducibility.
  • Helper functions for some popular problems, with default arguments from the literature.
  • An thin extension of PyTorch's
    Module
    , called
    MetaModule
    , that simplifies the creation of certain meta-learning models (e.g. gradient based meta-learning methods). See the MAML example for an example using
    MetaModule
    .

Datasets available

Installation

You can install Torchmeta either using Python's package manager pip, or from source. To avoid any conflict with your existing Python setup, it is suggested to work in a virtual environment with

virtualenv
. To install

virtualenv
:
bash
pip install --upgrade virtualenv
virtualenv venv
source venv/bin/activate

Requirements

  • Python 3.6 or above
  • PyTorch 1.4 or above
  • Torchvision 0.5 or above

Using pip

This is the recommended way to install Torchmeta:

bash
pip install torchmeta

From source

You can also install Torchmeta from source. This is recommended if you want to contribute to Torchmeta.

bash
git clone https://github.com/tristandeleu/pytorch-meta.git
cd pytorch-meta
python setup.py install

Example

Minimal example

This minimal example below shows how to create a dataloader for the 5-shot 5-way Omniglot dataset with Torchmeta. The dataloader loads a batch of randomly generated tasks, and all the samples are concatenated into a single tensor. For more examples, check the examples folder. ```python from torchmeta.datasets.helpers import omniglot from torchmeta.utils.data import BatchMetaDataLoader

dataset = omniglot("data", ways=5, shots=5, testshots=15, metatrain=True, download=True) dataloader = BatchMetaDataLoader(dataset, batchsize=16, numworkers=4)

for batch in dataloader: traininputs, traintargets = batch["train"] print('Train inputs shape: {0}'.format(traininputs.shape)) # (16, 25, 1, 28, 28) print('Train targets shape: {0}'.format(traintargets.shape)) # (16, 25)

test_inputs, test_targets = batch["test"]
print('Test inputs shape: {0}'.format(test_inputs.shape))      # (16, 75, 1, 28, 28)
print('Test targets shape: {0}'.format(test_targets.shape))    # (16, 75)
#### Advanced example
Helper functions are only available for some of the datasets available. However, all of them are available through the unified interface provided by Torchmeta. The variable `dataset` defined above is equivalent to the following
```python
from torchmeta.datasets import Omniglot
from torchmeta.transforms import Categorical, ClassSplitter, Rotation
from torchvision.transforms import Compose, Resize, ToTensor
from torchmeta.utils.data import BatchMetaDataLoader

dataset = Omniglot("data", # Number of ways num_classes_per_task=5, # Resize the images to 28x28 and converts them to PyTorch tensors (from Torchvision) transform=Compose([Resize(28), ToTensor()]), # Transform the labels to integers (e.g. ("Glagolitic/character01", "Sanskrit/character14", ...) to (0, 1, ...)) target_transform=Categorical(num_classes=5), # Creates new virtual classes with rotated versions of the images (from Santoro et al., 2016) class_augmentations=[Rotation([90, 180, 270])], meta_train=True, download=True) dataset = ClassSplitter(dataset, shuffle=True, num_train_per_class=5, num_test_per_class=15) dataloader = BatchMetaDataLoader(dataset, batch_size=16, num_workers=4)

Note that the dataloader, receiving the dataset, remains the same.

Citation

Tristan Deleu, Tobias Würfl, Mandana Samiei, Joseph Paul Cohen, and Yoshua Bengio. Torchmeta: A Meta-Learning library for PyTorch, 2019 [ArXiv]

If you want to cite Torchmeta, use the following Bibtex entry:

@misc{deleu2019torchmeta,
  title={{Torchmeta: A Meta-Learning library for PyTorch}},
  author={Deleu, Tristan and W\"urfl, Tobias and Samiei, Mandana and Cohen, Joseph Paul and Bengio, Yoshua},
  year={2019},
  url={https://arxiv.org/abs/1909.06576},
  note={Available at: https://github.com/tristandeleu/pytorch-meta}
}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.