مجموعة من الامتدادات وعمليات تحميل البيانات للتعلم قليلاً والتعلم التعويضي في Pytorch. يحتوي Torchmeta على معايير التعلم الشهيرة ، متوافقة تمامًا مع كل من torchvision و Pytorch's DataLoader .
Module Pytorch ، تسمى MetaModule ، تبسط إنشاء نماذج بعض التعلم التلوي (على سبيل المثال طرق التعلم التلوي المستند إلى التدرج). انظر مثال MAML للحصول على مثال باستخدام MetaModule . يمكنك تثبيت Torchmeta إما باستخدام PIP PAPH'S PACK PAP ، أو من المصدر. لتجنب أي تعارض مع إعداد Python الحالي ، يُقترح العمل في بيئة افتراضية مع virtualenv . لتثبيت virtualenv :
pip install --upgrade virtualenv
virtualenv venv
source venv/bin/activateهذه هي الطريقة الموصى بها لتثبيت Torchmeta:
pip install torchmetaيمكنك أيضًا تثبيت Torchmeta من المصدر. يوصى بذلك إذا كنت تريد المساهمة في Torchmeta.
git clone https://github.com/tristandeleu/pytorch-meta.git
cd pytorch-meta
python setup.py installيوضح هذا المثال الأدنى أدناه كيفية إنشاء dataloader لمجموعة بيانات Omniglot 5-Fay مع Torchmeta. يقوم Dataloader بتحميل مجموعة من المهام التي تم إنشاؤها عشوائيًا ، ويتم تسلسل جميع العينات إلى موتر واحد. لمزيد من الأمثلة ، تحقق من مجلد الأمثلة.
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) وظائف المساعدة متاحة فقط لبعض مجموعات البيانات المتاحة. ومع ذلك ، كلهم متاحون من خلال الواجهة الموحدة التي توفرها Torchmeta. dataset المتغيرة المحددة أعلاه تعادل ما يلي
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 )لاحظ أن Dataloader ، الذي يتلقى مجموعة البيانات ، لا يزال كما هو.
تريستان ديليو ، توبياس وورفل ، ماندانا سامي ، جوزيف بول كوهين ، ويوشوا بينجيو. Torchmeta: مكتبة للتعلم التلوي لـ Pytorch ، 2019 [Arxiv]
إذا كنت ترغب في الاستشهاد Torchmeta ، استخدم إدخال Bibtex التالي:
@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}
}