Comments (2)
After reading the code maml.py, I changed my code this way.
Could anybody tell me if it seems right..? Just one more thing, I have no idea when to use learner.module
or learner
. For example, which one should I return at the end of the code? Which one to pass on to maml_update
?
from torch import autograd
from learn2learn.algorithms import maml_update
def inner_loop(learner, support_dl, fast_lr, adaptation_steps):
all_loss = []
# initiliaze gradients to zero for all parameters
accum_grads = tuple(torch.zeros(param.size(), device=device) for param in learner.module.parameters())
for step in range(adaptation_steps):
loss = 0.0
for inputs in support_dl:
outputs = learner(**inputs)
accum_step = len(support_dl.dataset) / support_dl.batch_size # number of steps to accumulate gradients
curr_loss = outputs.loss / accum_step
curr_grads = autograd.grad(curr_loss, learner.module.parameters(), create_graph=False) # False for FOMAML
accum_grads = tuple(torch.add(accum_grads[i], curr_grads[i]) for i in range(len(curr_grads)))
loss += curr_loss.item() # accum loss for logging
del outputs, curr_loss, curr_grads
maml_update(learner, lr=fast_lr, grads=accum_grads) # update learner parameters with accumulated gradients
all_loss.append(loss)
return learner
from learn2learn.
Hello @jkang1640,
Sequence models are notoriously tricky to train with MAML as it's easy to run into OOM like you did.
Unfortunately there's no easy fix for when you're trying to accumulate gradients in the inner loop. My advice is to either pretrain and freeze some of the parameters of the model as in ANIL (to reduce memory consumption during meta-learning), or maybe go for a first-order algorithm (FOMAM, ANIL).
I'll close this for now.
from learn2learn.
Related Issues (20)
- Aircraft dataset num classes = 51? HOT 4
- CUB200 extraction problem HOT 3
- Bug:TypeError: __init__() missing 2 required positional arguments: 'model_path' and 'frame_skip' HOT 1
- Cant recognize PyTorch installed from conda HOT 2
- pip install not working HOT 3
- A bug when creating the mujoco environment HOT 2
- Failed building wheel on Python 3.11 - "longintrepr.h”: No such file or directory HOT 3
- pip install pqth problem HOT 2
- pip problem with qpth HOT 1
- .pyx scripts are in the package but in setup.py exxtension is c HOT 1
- Installation: ERROR: Could not build wheels for learn2learn, which is required to install pyproject.toml-based projects HOT 3
- Distribute wheels on pypi HOT 1
- unable to retrieve input images after sampling a task HOT 3
- Parameters of cloned learner is not updating HOT 1
- Issue with running learn2learn-master\examples\rl\maml_trpo.py
- Unable to Reproduce ANIL Results
- About the adapt function in fast_adapt process in MAML
- Is it possible to use Random Forest with the package
- Developing audio examples
- TypeError: An invalid dataloader was passed to `Trainer.fit(train_dataloaders=...)`. Found <learn2learn.utils.lightning.EpisodicBatcher object at 0x7f3bade9bca0>.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from learn2learn.