基于深度学习的微分方程求解框架
pydens的Python项目详细描述
皮登斯
PyDEns是一个使用神经网络求解常微分方程和偏微分方程(ODEs&pde)的框架。使用PyDEns可以解决
- 一个大家族中的pde&ODEs,包括heat-equation、poisson equation和{a7}
- 偏微分方程的参数族
- 具有可训练系数的偏微分方程。在
本页概述了PyDEns的主要功能。为了深入了解,我们建议您也阅读the tutorial。在
PyDEns入门:解决常见的pde
我们来解泊松方程
在
使用带有tahn
-激活的简单前馈神经网络。第一步是向当前名称空间添加tokens语法(用于写微分方程的表达式):
frompydensimportSolver,NumpySampler,add_tokensimportnumpyasnpadd_tokens()# we've now got functions like sin, cos, D in our namespace. More on that later!
现在可以设置一个^{str1}$PyDEns-模型,使用configuration dictionary解决手头的任务。注意区分标记D
和sin
-标记的用法:
然后运行优化程序
dg=Solver(config)dg.fit(batch_size=100,sampler=us,n_iters=1500)
在几分之一秒内,我们就得到了[0,1]X[0,1]-平方上解的无网格近似:
在
深入研究PyDEns-功能
PyDEns不仅可以解决常见的偏微分方程:它还可以处理(i)参数偏微分方程族和(ii)具有可训练系数的偏微分方程。在
求解偏微分方程的参数族
考虑常微分方程的族
在
显然,解决方案是一个sin波,其相位参数为ϵ:
在
解决这个问题和解决常见的pde一样容易。您只需在等式中引入参数,使用标记P
:
pde={'n_dims':1,'form':lambdau,t,e:D(u,t)-P(e)*np.pi*cos(P(e)*np.pi*t),'initial_condition':1}config={'pde':pde}# One for argument, one for parameters=NumpySampler('uniform')&NumpySampler('uniform',low=1,high=5)dg=Solver(config)dg.fit(batch_size=1000,sampler=s,n_iters=5000)# solving the whole family takes no more than a couple of seconds!
查看结果:
在
求解可训练系数
使用PyDEns可以让事情变得更加有趣!假设系统的初始状态未知,且尚未确定:
在
当然,如果没有其他信息,the problem is undefined。为了让事情变得更好,让我们在其他地方修复系统的状态:
在
设置此问题需要一个slightly more complex configuring。注意在问题的初始条件中使用了V
-token,它代表可训练变量。还要注意train_steps
-键,config
,其中两个列车步骤配置:一个用于更好地解方程,另一个用于满足附加约束:
pde={'n_dims':1,'form':lambdau,t:D(u,t)-2*np.pi*cos(2*np.pi*t),'initial_condition':lambda:V(3.0)}config={'pde':pde,'track':{'u05':lambdau,t:u-2},'train_steps':{'initial_condition_step':{'scope':'addendums','loss':{'name':'mse','predictions':'u05'}},'equation_step':{'scope':'-addendums'}}}s1=NumpySampler('uniform')s2=ConstantSampler(0.5)
模型拟合现在分为两部分:(i)求解方程和(ii)调整初始条件以满足附加约束:
dg.fit(batch_size=150,sampler=s1,n_iters=2000,train_mode='equation_step')dg.fit(batch_size=150,sampler=s2,n_iters=2000,train_mode='initial_condition_step')
查看结果:
在
安装
首先,您必须手动安装tensorflow, 因为您可能需要CPU/GPU的特定版本或特定版本。在
稳定的python包
用现代的pipenv
pipenv install pydens
用老式的pip
pip3 install pydens
开发版本
pipenv install git+https://github.com/analysiscenter/pydens.git
pip3 install git+https://github.com/analysiscenter/pydens.git
作为项目存储库进行安装:
不要忘记使用标志--recursive
来确保BatchFlow
子模块也被克隆。在
git clone --recursive https://github.com/analysiscenter/pydens.git
在这种情况下,您需要手动安装依赖项。在
引用皮登斯
如果有助于您的研究,请引用PyDEns。在
Roman Khudorozhkov, Sergey Tsimfer, Alexander Koryagin. PyDEns framework for solving differential equations with deep learning. 2019.
@misc{pydens_2019,
author = {Khudorozhkov R. and Tsimfer S. and Koryagin. A.},
title = {PyDEns framework for solving differential equations with deep learning},
year = 2019
}
- 项目
标签: