Eine Sammlung von Erweiterungen und Datenladern für wenige Schüsse-Lernen & Meta-Learning in Pytorch. Torchmeta enthält beliebte Meta-Learning-Benchmarks, die sowohl mit torchvision als auch mit Pytorch- DataLoader vollständig kompatibel sind.
Module , die als MetaModule bezeichnet wird, die die Erstellung bestimmter Meta-Learning-Modelle (z. B. Gradienten-basierte Meta-Learning-Methoden) vereinfacht. Siehe das Beispiel für MAML -Beispiel für ein Beispiel mit MetaModule . Sie können Torchmeta entweder mit Python Package Manager PIP oder aus Quelle installieren. Um Konflikte mit Ihrem vorhandenen Python -Setup zu vermeiden, wird empfohlen, in einer virtuellen Umgebung mit virtualenv zu arbeiten. So installieren Sie virtualenv :
pip install --upgrade virtualenv
virtualenv venv
source venv/bin/activateDies ist die empfohlene Methode zur Installation von Torchmeta:
pip install torchmetaSie können auch Torchmeta von der Quelle installieren. Dies wird empfohlen, wenn Sie zu Torchmeta beitragen möchten.
git clone https://github.com/tristandeleu/pytorch-meta.git
cd pytorch-meta
python setup.py installDieses minimale Beispiel unten zeigt, wie ein Dataloader für den 5-Wege-Omniglot-Datensatz mit Tarchmeta erstellt wird. Der Dataloader lädt eine Stapel von zufällig erzeugten Aufgaben, und alle Proben werden zu einem einzelnen Tensor verkettet. Weitere Beispiele überprüfen Sie den Beispiel -Ordner.
from torchmeta . datasets . helpers import omniglot
from torchmeta . utils . data import BatchMetaDataLoader
dataset = omniglot ( "data" , ways = 5 , shots = 5 , test_shots = 15 , meta_train = True , download = True )
dataloader = BatchMetaDataLoader ( dataset , batch_size = 16 , num_workers = 4 )
for batch in dataloader :
train_inputs , train_targets = batch [ "train" ]
print ( 'Train inputs shape: {0}' . format ( train_inputs . shape )) # (16, 25, 1, 28, 28)
print ( 'Train targets shape: {0}' . format ( train_targets . 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) Helferfunktionen sind nur für einige der verfügbaren Datensätze verfügbar. Alle von ihnen sind jedoch über die von Torchmeta bereitgestellte einheitliche Schnittstelle erhältlich. Der oben definierte variable dataset entspricht den folgenden
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 )Beachten Sie, dass der Dataloader, der den Datensatz empfängt, gleich bleibt.
Tristan DeLeu, Tobias Würfl, Mandana Samiei, Joseph Paul Cohen und Yoshua Bengio. Torchmeta: Eine Meta-Learning-Bibliothek für Pytorch, 2019 [Arxiv]
Wenn Sie Torchmeta zitieren möchten, verwenden Sie den folgenden Bibtex -Eintrag:
@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}
}