analysiscenter / pydens Goto Github PK
View Code? Open in Web Editor NEWPyDEns is a framework for solving Ordinary and Partial Differential Equations (ODEs & PDEs) using neural networks
License: Apache License 2.0
PyDEns is a framework for solving Ordinary and Partial Differential Equations (ODEs & PDEs) using neural networks
License: Apache License 2.0
Tutorial was renamed to 1. Basic PDE solving.ipynb but path is old
I was trying to test the examples you put in the repository (torch_examples.ipynb), but several things did not work for me, so I get the impression that the project has done some refactoring and this notebook has not been updated.
The first thing is that the CustomModel
type is not implemented in model_torch.py
. Then the second problem I encountered is that the ConvBlockModel
type imports ConvBlock
type is not implemented in batchflow.models.torch.layers
.
What causes me more doubt about these errors is that the ConvBlock
type has not been implemented since a few releases ago, they deleted it and do not plan to use it anymore? In that case, they would have to resolve the layouts in the ConvBlockModel
type definition.
Hi,
@roman-kh @akoryagin @SergeyTsimfer @dpodvyaznikov
Firstly I want to thanks to you guys for making great library for solving PDE with NN. Now I'm going on project for solving PDE with NN too and interested to used your library and on practicing using it. But, I have an issue when try to solve Poisson eq with 4 different bc. For the example I practiced to solve this eq:
Uxx+Uyy = 4,
with BC:
u(x, 0) = x^2, u(x, 2) = (x-2)^2, 0<= x <=1
u(0, y) = y^2, u(1, y) = (y-1)^2, 0<= y <=2
I can't find the correct solution to solving this PDE. I realized that there was a mistake when writing the code.
But I can't find any correction in your documentation. Could you please help me how to write the correct code for this kind of PDE? Thank you very much.
pde = {
'n_dims': 2,
'form': lambda u, x, y: D(D(u, x), x) + D(D(u, y), y) - 4,
'boundary_condition': ......... <------- (how to write those BC mentioned above to here?)
}
Dear sir:
I need to know what python libraries and corresponding versions need to be installed in this project to get the code running, I've tried a lot of things, but I can't fix the proper installation of the environment, which has been bothering me for a long time, and thank you very much for taking the time to answer my questions. Thank you very much!
Best
zmzhang
How can I plot the graphs of the examples of "Solving parametric families of PDEs" and "Solving PDEs with trainable coefficients"? Can you release the full scripts?
Sorry if this is obvious of a question, but is there a way to learn the PDE from data? I don't have the PDE as is shown throughout the examples https://github.com/analysiscenter/pydens/blob/master/tutorials/1.%20Solving%20PDEs.ipynb to define a function for the solver.
While running the solved example:
import os
import warnings
import sys
warnings.filterwarnings('ignore')
from tensorflow import logging
logging.set_verbosity(logging.ERROR)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import numpy as np
import tensorflow as tf
from tqdm import tqdm_notebook
import matplotlib.pyplot as plt
sys.path.append('..')
from pydens import Solver, NumpySampler, cart_prod
from pydens import plot_loss, plot_2d, plot_pair_1d, plot_sections_2d, plot_sections_3d
from pydens import add_tokens
add_tokens()
# describing pde-problem in pde-dict
pde = {'n_dims': 1,
'form': lambda u, t: D(u, t) - 2 * np.pi * cos(2 * np.pi * t),
'initial_condition': 1 # will be transformed into callable returning 1
}
# put it together in model-config
config = {'pde': pde,
'track': {'dt': lambda u, t: D(u, t)}}
# uniform sampling scheme
s = NumpySampler('uniform')
#
## train the network on batches of 100 points
dg = Solver(config)
I run into the following error:
TypeError: 'SyntaxTreeNode' object is not iterable
The stacktrace is:
File "<ipython-input-21-1b5c74329633>", line 1, in <module>
runfile('/home/nirvik/Documents/neuronal_model_python/temp.py', wdir='/home/nirvik/Documents/neuronal_model_python')
File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/home/nirvik/Documents/neuronal_model_python/temp.py", line 38, in <module>
dg = Solver(config)
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/wrapper.py", line 21, in __init__
self.model = model_class(config)
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/batchflow/batchflow/models/tf/base.py", line 262, in __init__
super().__init__(*args, **kwargs)
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/batchflow/batchflow/models/base.py", line 38, in __init__
self.build(*args, **kwargs)
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/batchflow/batchflow/models/tf/base.py", line 331, in build
config = self.build_config()
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/model_tf.py", line 117, in build_config
n_parameters = get_num_parameters(form[0])
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/syntax_tree.py", line 77, in get_num_parameters
tree = form(*[SyntaxTreeNode('_' + str(i)) for i in range(n_args)])
File "/home/nirvik/Documents/neuronal_model_python/temp.py", line 25, in <lambda>
'form': lambda u, t: D(u, t) - 2 * np.pi * 2 * t^3,
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/tokens.py", line 63, in <lambda>
if isinstance(args[0], SyntaxTreeNode) else method_(*args, **kwargs))
File "/home/nirvik/.local/lib/python3.6/site-packages/pydens/letters.py", line 82, in D
return np.stack([self.D(func, coordinate) for coordinate in coordinates],
```
I am new to using this package...please help.
Dear all,
I have a problem installing the packages.
In Jypyter notebook , Python 3; I use pip install pydens
and it has installed successfully.
Next when writing
from pydens import Solver, NumpySampler, add_tokens
getting error
"module 'tensorflow' has no attribute 'layers'"
Plz fix it.
Hi
I was just trying to run your tutorials notebook when I ran into this error. I'm running my code on colab and I can't change tf version to 1.14 as colab sets it to 1.15.
I hope someone can help me here.
Thanks
For example:
"""
body = {'layout': 'fa f',
'units': [10, 1],
'activation': [tf.nn.tanh,]}
"""
This means that there are one first full connected layer with 10 units and activation "tanh" ('fa') and a final full connected layer with no activation ('f').
But what about:
"""
body = {'layout': 'faR fa fa+ f',
'units': [10, 25, 10, 1],
'activation': [tf.nn.tanh, tf.nn.tanh, tf.nn.tanh]}
"""
What does 'R' mean? And the character '+'?
Thank you.
Make batchflow a requirement
Dear Guys
I am extremely interested in working with your product but I have a problem installing the packages. I installed using different ways but I faced "No module named 'pydens.batchflow'" and I do not have any idea to solve it. I will appreciate it if could do a favor of installing.
Thanks in advanced
OperatorNotAllowedInGraphError Traceback (most recent call last)
in ()
----> 1 dg = Solver(config)
2 dg.fit(batch_size=50, sampler=s, n_iters=300, bar='notebook')
15 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/ops.py in _disallow_in_graph_mode(self, task)
521 raise errors.OperatorNotAllowedInGraphError(
522 "{} is not allowed in Graph execution. Use Eager execution or decorate"
--> 523 " this function with @tf.function.".format(task))
524
525 def _disallow_bool_casting(self):
OperatorNotAllowedInGraphError: iterating over tf.Tensor
is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
Hi,
Can Pydens handle the PDE with more than 2 boundary conditions?
In the parametric heat-equation example, would you please show me how to change the boundary condition to:
case 1:
u(x,y,t=0)=1000
u(x=0, y=0, t)=200
case 2:
u(x,y,t=0)=1000
u(x=0, y=0, t)=200
u(xe,0)=u(-xe,0)=u(0,ye)=u(ye,0)=1000 (e represents edge, which indicates all boundaries have same value)
The code block below results in error:
solver = Solver(equation=pde, ndims=2,constraints=constraints,domain=domain,layout='fa fa f', units=(10,20,1), activation='Sigmoid')
solver.fit(batch_size=100, niters=5000, lr=0.01,optimizer='LBFGS')
Error:
0%| | 0/5000 [00:00<?, ?it/s]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File <timed exec>:8, in <module>
File D:\anaconda3\envs\pydens_gpu\lib\site-packages\pydens\model_torch.py:461, in Solver.fit(self, niters, batch_size, sampler, loss_terms, optimizer, criterion, lr, **kwargs)
459 # Optimizer step.
460 loss.backward()
--> 461 self.optimizer.step()
463 # Gather and store training stats.
464 self.losses.append(loss.detach().cpu().numpy())
File D:\anaconda3\envs\pydens_gpu\lib\site-packages\torch\optim\optimizer.py:88, in Optimizer._hook_for_profile.<locals>.profile_hook_step.<locals>.wrapper(*args, **kwargs)
86 profile_name = "Optimizer.step#{}.step".format(obj.__class__.__name__)
87 with torch.autograd.profiler.record_function(profile_name):
---> 88 return func(*args, **kwargs)
File D:\anaconda3\envs\pydens_gpu\lib\site-packages\torch\autograd\grad_mode.py:27, in _DecoratorContextManager.__call__.<locals>.decorate_context(*args, **kwargs)
24 @functools.wraps(func)
25 def decorate_context(*args, **kwargs):
26 with self.clone():
---> 27 return func(*args, **kwargs)
TypeError: step() missing 1 required positional argument: 'closure'
Any idea on how to use LBFGS optimizer ?
I'm using Spyder3 to run this code:
`
import pydens as pde
from pydens import D
import numpy as np
import tensorflow as tf
pde.add_tokens()
pde = {'n_dims': 2,
'form': lambda u, x, y: D(D(u, x), x) + D(D(u, y), y) - 5 * pde.sin(np.pi * (x + y)),
'boundary_condition': 1}
body = {'layout': 'fa fa fa f', #estrutura da rede neural (layers)
'units': [15, 25, 15, 1], #neurônios por camada
'activation': [tf.nn.tanh, tf.nn.tanh, tf.nn.tanh]} #ativação advinda do TFlow
config = {'body': body,
'pde': pde}
us = pde.NumpySampler('uniform', dim=2)
dg = pde.Solver(config)
dg.fit(batch_size=100, sampler=us, n_iters=1500)
`
...and I'm getting this error:
`File "C:\Users\my_user\Anaconda3\lib\site-packages\pydens\letters.py", line 20, in
from .batchflow.models.tf.layers import conv_block
ModuleNotFoundError: No module named 'pydens.batchflow'`
My tersorflow are actualized and I got PyDEns and Batchflow with pip on conda terminal.
Can pydens be used to solve a system of PDEs?
Is Pydens Capable of solving PDEs for Elasticity?
Hello,
I want to code according to the pydens and during compilation I am using an error at "dg solver line".
Kindly fix it ASAP so that I can move further to code my problem.
I am using tensorflow 1.15 version
======================code================
%tensorflow_version 1.x
import os
import sys
import warnings
warnings.filterwarnings('ignore')
from tensorflow import logging
logging.set_verbosity(logging.ERROR)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import numpy as np
import tensorflow as tf
from tqdm import tqdm_notebook
import matplotlib.pyplot as plt
sys.path.append('..') # this line is not needed if PyDEns is installed as package
from pydens import Solver, NumpySampler, cart_prod, add_tokens
from pydens import plot_loss, plot_pair_1d, plot_2d, plot_sections_2d, plot_sections_3d
add_tokens()
pde = {
'n_dims': 1,
'form': lambda u, t: D(u, t) - 2 * np.pi * cos(2 * np.pi * t),
'initial_condition': 1
}
config = {
'pde': pde,
'track': {'dt': lambda u, t: D(u, t)} # allows to later fetch this value from the model
}
s = NumpySampler('uniform')
dg = Solver(config)
dg.fit(batch_size=100, sampler=s, n_iters=2000, bar='notebook')
plot_loss(dg.loss, color='cornflowerblue')
pts = np.linspace(0, 1, 200).reshape(-1, 1)
sol = lambda t: np.sin(2 * np.pi * t) + 1
true = [sol(t[0]) for t in pts]
approxs = dg.solve(pts)
plt.plot(pts, true, 'b--', linewidth=3, label='True solution')
plt.plot(pts, approxs, 'r', label='Network approximation')
plt.xlabel(r'$t$', fontdict={'fontsize': 14})
plt.legend()
plt.show()
der = lambda t: 2 * np.pi * np.cos(2 * np.pi * t)
true_der = [der(t[0]) for t in pts]
ders = dg.solve(pts, fetches='dt')
plt.plot(pts, true_der, 'b--', linewidth=3, label=r'True derivative')
plt.plot(pts, ders, 'r', label=r'Network approximation of
plt.xlabel(r'$t$', fontdict={'fontsize': 14})
plt.legend()
plt.show()
plot_pair_1d(model=dg,
solution=lambda t: np.sin(2np.pit)+1,
confidence=0.15, alpha=0.2)
plot_pair_1d(model=dg,
solution=lambda t: 2 * np.pi * np.cos(2 * np.pi * t),
fetches='dt')
======================error is====================
OperatorNotAllowedInGraphError Traceback (most recent call last)
in ()
40
41 # train the network on batches of 100 points
---> 42 dg = Solver(config)
43 dg.fit(batch_size=100, sampler=s, n_iters=2000, bar='notebook')
44
15 frames
/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py in _disallow_in_graph_mode(self, task)
521 raise errors.OperatorNotAllowedInGraphError(
522 "{} is not allowed in Graph execution. Use Eager execution or decorate"
--> 523 " this function with @tf.function.".format(task))
524
525 def _disallow_bool_casting(self):
OperatorNotAllowedInGraphError: iterating over tf.Tensor
is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
Hello Everyone
I want to change the interval of x. Instead of using the default one [0,1], I want to have [1, 1.5] so I can define my boundary conditions in these two points?
How could I modify the code?
Hello! Is there any possibility to use custom function, e.g. scipy.interpolate or any function from my own .py file in differential equation? It would be very useful
pyDens not plotting after running solver.fit() on both Jupyter notebook and google colaboratory.
Using the first example from Github solver.fit() seems to run fine but I was expecting a plot of the results to appear. What am i missing?
When I dont define a "body", whats is the structure of the network?
Theres some easy way to save my trained network, so I can use it?
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.