SciML / NeuralPDE.jl

Physics-Informed Neural Networks (PINN) Solvers of (Partial) Differential Equations for Scientific Machine Learning (SciML) accelerated simulation
https://docs.sciml.ai/NeuralPDE/stable/
Other
961 stars 195 forks source link

DeepONets #268

Closed ChrisRackauckas closed 2 years ago

ChrisRackauckas commented 3 years ago

https://arxiv.org/abs/1910.03193

lamorton commented 3 years ago

See also Fourier Neural Operators.

ChrisRackauckas commented 3 years ago

That should be a separate issue. I thought we had an issue for it but I'm not seeing it right now.

troyrock commented 3 years ago

I would like to take a stab at this. Since I'm new, I'll explain what I think is asked for and the method that I'll use to go about implementing it. I don't see any way to include equations so I'll include the code for them in hopes that it's possible but that I'm not seeing it.

  1. Implement the solution to the simple linear ODE $\frac{ds(x)}{dx} = u(x)$ using differentialequations.jl with $u(x)$ as either a Gaussian Random Field (GRF) with mean zero and correlation function $exp(−\frac{|| x1 − x2 ||^2}{2l^2})$ or Nth degree orthogonal Chebyshev polynomials constructed as: $\sum_{i=0}^{N-1} a_i T_i$ with $T_i$ being Chebyshev polynomials of the first kind and a_i randomly sampled between -M and M for $M > 0$.
  2. Create a Physics Informed Neural Network to solve the ODE in 1. with depth 2-4, width 10-2560, and learning rate from 1e-2 to 1e-4.
  3. Create a stacked DeepONet to solve the ODE in 1.
  4. Create an unstacked DeepONet to solve the ODE in 1.
  5. Repeat 1-4 with the ODE $\frac{ds(x)}{dx} = -s(x)^2 + u(x)$
  6. Repeat 1-4 with the "Gravity pendulum with an external force" ODE
ChrisRackauckas commented 3 years ago

Yeah, go for it. Though we do not recognize claims to issues: instead of licking the cookie, I will assume no one is working on this until there is code.

troyrock commented 3 years ago

Good, I don't want to be in anyone's way. I have started working on it. Where does the code for things like this go and at what level of readiness should it be before I put it there? Thanks

lamorton commented 3 years ago

@troyrock I can't speak for Chris, but I'd assume you put the code in an appropriately-named file under NeuralPDE/src/. You probably already know this, but make your commits in a development branch rather than the master branch. You can create a pull request even before the code is finished -- just mark it as 'Work in progress' during the Github PR creation process. That way the maintainers can look at your progress & comment if they want. Edit: forgot a phrase.

RohitRathore1 commented 3 years ago

Hey @ChrisRackauckas do we have any progress in it? Just curious.

troyrock commented 3 years ago

I made some progress but then I got a new job and I'm in the process of moving from California to Colorado. My computer is packed away with the current progress on it. I apologize for not uploading my progress first, moving has been hectic.

ChrisRackauckas commented 2 years ago

This is NeuralOperators.jl