emiliendupont / augmented-neural-odes Goto Github PK
View Code? Open in Web Editor NEWPytorch implementation of Augmented Neural ODEs :sunflower:
License: MIT License
Pytorch implementation of Augmented Neural ODEs :sunflower:
License: MIT License
Hi Emilien,
Besides your excellent work, I also like the symbols you type in the commit message, like the the 'bug'.
Could you kindly let me know how you type it out so I can follow it.
Thnak you
GUANGYUAN
Hello! Thank you so much for the work and providing codes.
I am new to this field. I tried the code on Google Colab following the pattern you have provided, but my efforts went in vain (Mainly, the dataloader.). I would be very thankful if you provide any notebook for any of the image dataset.
Regards
The cell
from viz.plots import multi_feature_plt
multi_feature_plt(feature_history, targets)
raises
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-26-0ca89ec1decb> in <module>
1 from viz.plots import multi_feature_plt
2
----> 3 multi_feature_plt(feature_history, targets)
~/Code/augmented-neural-odes/viz/plots.py in multi_feature_plt(features, targets, save_fig)
312 labelbottom=False, right=False, left=False,
313 labelleft=False)
--> 314 ax.set_aspect(get_square_aspect_ratio(ax))
315
316 fig.subplots_adjust(wspace=0.01)
/usr/lib/python3.8/site-packages/matplotlib/axes/_base.py in set_aspect(self, aspect, adjustable, anchor, share)
1278
1279 if (not cbook._str_equal(aspect, 'auto')) and self.name == '3d':
-> 1280 raise NotImplementedError(
1281 'It is not currently possible to manually set the aspect '
1282 'on 3D axes')
NotImplementedError: It is not currently possible to manually set the aspect on 3D axes
so the notebook isn't reproduced.
scipy 1.4.1
numpy 1.18.1
torch 1.4.0
torchvision 0.5.0a0
matplotlib 3.1.3
After I adding the package to SIte-packages and add to the environment variables as well, still can not figure out the package.
from experiments.dataloaders import mnist, cifar10, tiny_imagenet
from experiments.dataloaders import ConcentricSphere, ShiftedSines
ModuleNotFoundError: No module named 'experiments.dataloaders'; 'experiments' is not a package
NotImplementedError Traceback (most recent call last)
in
1 from viz.plots import multi_feature_plt
2
----> 3 multi_feature_plt(feature_history, targets)
~/Box/recent_ML/augmented-neural-odes/viz/plots.py in multi_feature_plt(features, targets, save_fig)
312 labelbottom=False, right=False, left=False,
313 labelleft=False)
--> 314 ax.set_aspect(get_square_aspect_ratio(ax))
315
316 fig.subplots_adjust(wspace=0.01)
~/opt/anaconda3/lib/python3.7/site-packages/mpl_toolkits/mplot3d/axes3d.py in set_aspect(self, aspect, adjustable, anchor, share)
322 if aspect != 'auto':
323 raise NotImplementedError(
--> 324 "Axes3D currently only supports the aspect argument "
325 f"'auto'. You passed in {aspect!r}."
326 )
NotImplementedError: Axes3D currently only supports the aspect argument 'auto'. You passed in 0.9608689503197515.
I try to run experiments_img.py but got the ModuleNotFoundError: No module named 'anode'.
I cannot even simplily pip install it from anaconda, as shown "Could not find a version that satisfies the requirement anode".
If anyone can give some suggestion would very helpful.
Hi,
Thanks for deliverying this amazing work!
I'm think about visualization the vector field of my model, however, it is a high dimensional one with shape [16, 16, 256].
Do you have any idea abou how to visualization it?
Cheers,
Hilbert
I was following the README instructions, however, I get an ImportError "cannot import name 'ConvODENet'.
import torch
from anode.models import ODENet, ConvODENet
I do not have a solution, but some preliminary google's indicate that there might be a circular dependency stackoverflow post.
Hi guys, your works and codes are great.
However, I am a little confused about why there were no accuracy comparsion between NODE and your ANODE on CIFAR-10 since you did tests with both methods.
I am trying to do the test on CIFAR-10, and I noticed that training time per epoch of ANODE increasing very fast rather than NODE, is that how things should going on with ANODE?
Regards
Hello,
Thank you very much for the nice work. I am playing around your code and was wondering would it be possible for you to share the config files to train the NODE or ANODE on cifar10? I am able to get good accuracy on mnist, but for cifar using the same configs as you mentioned here, I can only get around 55%. Is that normal?
Hello again,
I'm pretty new to neural ODEs and differential equations in general. I hope I'm not wasting your time as this may be a sort of dumb question.
I am trying to learn the functions that govern the light curves of astronomical objects for my internship according to this data spec.
Eventually, I am going to try and classify the light curves (and use the other parameters they give), but for now I want to understand just how to learn the function for brightness over time (for a given object). So this I believe is going to be 1-Dimensional data per time point.
Right now I have a DataLoader with a getitem() that gives me a ([352, 2], class id) tensor where the first axis is the time values corresponding to the brightness (flux) at that time. I was going to do it this way so that I could try to learn the light curve functions in batches (my intuition is that the ODE might be able to better estimate the curves of one object based on how it evaluated others).
I see that for the Trainer class, you provide an ODENet instantiation as an argument. I was wondering how you are able to then provide the ODEBlock with the eval_times for the flux data in the forward function, as the ODENet.forward() function does not take in eval_times as an argument.
So I've probably demonstrated a couple misunderstandings. For one, is it just going to be flawed methodology to try and chunk up my data according to individual astronomical objects? ie: should I just train one huge ODE for the entire time series? (this seems wrong if I ignore the object id and other data, since the fluxes of one object aren't related to those of another).
TL;DR: I'm not exactly sure how to provide the solver eval_times (from a DataLoader) in ODENet's forward function / training.Trainer class.
Thanks again.
Hi, @EmilienDupont , thanks for the code implementation!
I am concerned about the structure implemented in this repo, actually, the architecture in the orginal Neural ODE (chen et al. ) has a feature extractor that consists of purely convolutional layers followed by the ODE represetation transformation layer and the final classification layer, while in this repo, only ode layers are present,
so in your experiments, when you compare to the neural ode, the neural ode you used actually does not have the feature extraction layer? but you only remove the concatenated channels (zeros) compared to the augmented neural ode?
I personally do not think if of a fair comparison, since removing the feature extraction layer will affect the classification model? A better comparison will be evaluting the two models when a proper feature extractor is present.
Please correct me if I am wrong
raise(RuntimeError("Wrong arguments, use python main_experiment.py <path_to_config>"))
RuntimeError: Wrong arguments, use python main_experiment.py <path_to_config>
Hey Emilien!
In my understanding, if I run main_experiment.py as is in the current repo, I would train ResNet, ANODE, and NODE on two datasets---one being concentric spheres. I also understand that in your paper you proved that NODE cannot represent this sphere dataset. Why is it that the loss for NODE is quite close to the other two (near zero)? Is that just a display of NODE "approximately solving the problem"? Thanks!
Once I have trained the ODEFun, how can I make future time prediction as an initial value problem if the network does not accept first and second derivative initial values?
Or is this project only considering first order ODEs?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.