Closed at-chantada closed 3 years ago
:exclamation: No coverage uploaded for pull request base (
master@46786b0
). Click here to learn what that means. The diff coverage is67.91%
.
@@ Coverage Diff @@
## master #118 +/- ##
=========================================
Coverage ? 89.63%
=========================================
Files ? 17
Lines ? 2807
Branches ? 0
=========================================
Hits ? 2516
Misses ? 291
Partials ? 0
Impacted Files | Coverage Δ | |
---|---|---|
neurodiffeq/solvers.py | 79.94% <17.94%> (ø) |
|
neurodiffeq/generators.py | 93.93% <85.33%> (ø) |
|
neurodiffeq/conditions.py | 93.87% <100.00%> (ø) |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 46786b0...89c2675. Read the comment docs.
Hi Augusto. This is amazing! I'm merging it into master
. In the future, I might make some very minor changes (e.g. arg names).
I'm thinking of a way to allow more flexible bundle learning. If we rewrite the logic for every reparameterization we have, there would be much code duplication sooner or later.
Another thing is that, while GeneratorND
is a nice idea, we could also ensemble a generator
that's essentially equivalent to an GeneratorND
instance:
ga = Generator1D(...)
gb = Generator1D(...)
gc = Generator1D(...)
...
generator = ga * gb * gc * ...
With inspiration from this paper, in this pull request are classes that allow one to train neural networks that are solutions of an ODE or system of ODEs for different values of its parameters and initial conditions. The highest dimensional case possible that this solver is capable of doing is a bundle in
t_0
,u_0
,u_0_prime
, and all parameters of the ODE or system of ODEs. To illustrate how it works, here is an example where a network is trained to be a solution for the damped harmonic oscillator, with different values for the initial positionx_0
(between 0 and 1) and the damping parameterb
(between 0.5 and 1.5):First let's create the analytical solution to check how good is the network once it's trained:
Then the actual code to train the network:
Finally some plots to see the loss and, qualitatively, how good the solutions are in comparison with the analytical solution: