
Learn2Learn เป็นห้องสมุดซอฟต์แวร์สำหรับการวิจัยเมตาเรียนรู้
Learn2Learn สร้างขึ้นด้านบนของ Pytorch เพื่อเร่งสองด้านของวัฏจักรการวิจัย meta-learning:
Learn2Learn ให้บริการยูทิลิตี้ระดับต่ำและอินเทอร์เฟซแบบครบวงจรเพื่อสร้างอัลกอริทึมและโดเมนใหม่พร้อมกับการใช้งานคุณภาพสูงของอัลกอริทึมที่มีอยู่และมาตรฐานมาตรฐาน มันยังคงความเข้ากันได้กับ Torchvision, Torchaudio, Torchtext, Cherry และห้องสมุดที่ใช้ pytorch อื่น ๆ ที่คุณอาจใช้
หากต้องการเรียนรู้เพิ่มเติมโปรดดู Whitepaper ของเรา: arxiv: 2008.12284
ภาพรวม
learn2learn.data : Taskset และ Transforms เพื่อสร้างงานไม่กี่ชิ้นจากชุดข้อมูล pytorch ใด ๆlearn2learn.vision : โมเดลชุดข้อมูลและมาตรฐานสำหรับการมองเห็นคอมพิวเตอร์และการเรียนรู้ไม่กี่นัดlearn2learn.gym : สิ่งแวดล้อมและสาธารณูปโภคสำหรับการเรียนรู้การเสริมกำลังเมตาlearn2learn.algorithms : wrappers ระดับสูงสำหรับอัลกอริทึมการเรียนรู้เมตาดาต้าที่มีอยู่learn2learn.optim : ยูทิลิตี้และอัลกอริทึมสำหรับการเพิ่มประสิทธิภาพที่แตกต่างกันและเมตา-เดือยทรัพยากร
pip install learn2learnตัวอย่างต่อไปนี้ให้การแอบดูฟังก์ชั่นของ Learn2Learn
สำหรับอัลกอริทึมเพิ่มเติม (Protonets, Anil, Meta-SGD, สัตว์เลื้อยคลาน, Meta-Curvature, KFO) อ้างถึงโฟลเดอร์ตัวอย่าง ส่วนใหญ่สามารถนำไปใช้กับ wrapper GBML ได้ (เอกสาร)
maml = l2l . algorithms . MAML ( model , lr = 0.1 )
opt = torch . optim . SGD ( maml . parameters (), lr = 0.001 )
for iteration in range ( 10 ):
opt . zero_grad ()
task_model = maml . clone () # torch.clone() for nn.Modules
adaptation_loss = compute_loss ( task_model )
task_model . adapt ( adaptation_loss ) # computes gradient, update task_model in-place
evaluation_loss = compute_loss ( task_model )
evaluation_loss . backward () # gradients w.r.t. maml.parameters()
opt . step () เรียนรู้อัลกอริทึมการเพิ่มประสิทธิภาพทุกประเภทด้วย LearnableOptimizer (ตัวอย่างและเอกสาร)
linear = nn . Linear ( 784 , 10 )
transform = l2l . optim . ModuleTransform ( l2l . nn . Scale )
metaopt = l2l . optim . LearnableOptimizer ( linear , transform , lr = 0.01 ) # metaopt has .step()
opt = torch . optim . SGD ( metaopt . parameters (), lr = 0.001 ) # metaopt also has .parameters()
metaopt . zero_grad ()
opt . zero_grad ()
error = loss ( linear ( X ), y )
error . backward ()
opt . step () # update metaopt
metaopt . step () # update linear ชุดข้อมูลมาตรฐานจำนวนมาก (Omniglot, Mini-/Tiered-Imagenet, FC100, CIFAR-FS) พร้อมใช้งานใน learn2learn.vision.datasets (เอกสาร)
dataset = l2l . data . MetaDataset ( MyDataset ()) # any PyTorch dataset
transforms = [ # Easy to define your own transform
l2l . data . transforms . NWays ( dataset , n = 5 ),
l2l . data . transforms . KShots ( dataset , k = 1 ),
l2l . data . transforms . LoadData ( dataset ),
]
taskset = Taskset ( dataset , transforms , num_tasks = 20000 )
for task in taskset :
X , y = task
# Meta-train on the task ขนานกับสภาพแวดล้อมเมตาของคุณเองด้วย AsyncVectorEnv หรือใช้มาตรฐานที่ได้มาตรฐาน (เอกสาร)
def make_env ():
env = l2l . gym . HalfCheetahForwardBackwardEnv ()
env = cherry . envs . ActionSpaceScaler ( env )
return env
env = l2l . gym . AsyncVectorEnv ([ make_env for _ in range ( 16 )]) # uses 16 threads
for task_config in env . sample_tasks ( 20 ):
env . set_task ( task ) # all threads receive the same task
state = env . reset () # use standard Gym API
action = my_policy ( env )
env . step ( action )เรียนรู้และแยกความแตกต่างผ่านการอัปเดตของโมดูล Pytorch (เอกสาร)
model = MyModel ()
transform = l2l . optim . KroneckerTransform ( l2l . nn . KroneckerLinear )
learned_update = l2l . optim . ParameterUpdate ( # learnable update function
model . parameters (), transform )
clone = l2l . clone_module ( model ) # torch.clone() for nn.Modules
error = loss ( clone ( X ), y )
updates = learned_update ( # similar API as torch.autograd.grad
error ,
clone . parameters (),
create_graph = True ,
)
l2l . update_module ( clone , updates = updates )
loss ( clone ( X ), y ). backward () # Gradients w.r.t model.parameters() and learned_update.parameters() changelog ที่มนุษย์อ่านได้มีอยู่ในไฟล์ changelog.md
หากต้องการอ้างถึงที่เก็บข้อมูล learn2learn ในสิ่งพิมพ์ทางวิชาการของคุณโปรดใช้ข้อมูลอ้างอิงต่อไปนี้
อาร์โนลด์, เซบาสเตียน MR, Praatek Mahajan, Debajyoti Datta, Ian Bunner และ Konstantinos Saitas Zarkias 2020.“ Learn2Learn: ห้องสมุดสำหรับการวิจัย meta-learning” arxiv [cs.lg] http://arxiv.org/abs/2008.12284
คุณยังสามารถใช้รายการ BibTex ต่อไปนี้
@article { Arnold2020-ss ,
title = " learn2learn: A Library for {Meta-Learning} Research " ,
author = " Arnold, S{'e}bastien M R and Mahajan, Praateek and Datta,
Debajyoti and Bunner, Ian and Zarkias, Konstantinos Saitas " ,
month = aug,
year = 2020 ,
url = " http://arxiv.org/abs/2008.12284 " ,
archivePrefix = " arXiv " ,
primaryClass = " cs.LG " ,
eprint = " 2008.12284 "
}
nn.Module จะไร้สัญชาติ Learn2Learn ยังคงรักษารูปลักษณ์และความรู้สึกของ pytorch สำหรับข้อมูลเพิ่มเติมโปรดดูที่กระดาษ arxiv ของพวกเขา