Hi everyone. I want to use the DiffEqFlux.jl package to model a system of interest. I have access to a dataset which contains measurements of all system states as well as the external control inputs that act on it. A first order model of some of the states is also known. Can this knowledge be incorporated into the NeuralODE framework talked about here ?
I am new to Julia having previously programmed in Python and MATLAB. What would be the requisite background in Julia needed to be able to achieve the above?
Indeed I would recommend using this route of SciMLSensitivity.jl directly instead of DiffEqFlux.jl as it will be a bit more flexible than the full NeuralODE form. DiffEqFlux is really about pre-made layers.
Hi @ChrisRackauckas@albheim Thank you both for your very helpful suggestions. This is a good starting point. I played around with this example a little and realized that the trained network is very sensitive to u0 (which was set by the random seed). If I changed the random seed, and compared solution from the ODE and the predicted solution using the pre-trained model, the UDE approximation was way off and even diverged. Is there a way in which I can train this network on multiple trajectories to rule out overfitting ?
@ChrisRackauckas I did try out the multiple shooting technique using the tutorial you linked. The performance was much better compared to just training on the full trajectory once as in the missing physics example. Also, found out that ReLu worked better than rbf. I still don’t fully understand how Bayesian Neural ODE would apply here? Multiple shooting is great but I want to be able to train over other trajectories too. The reason is that in any given trajectory the control inputs have fairly low variation. It is among the different trajectories that control input varies. Any suggestions ?