物理驱动深度学习(PINN)代码

主要总结了论文相关代码

物理驱动深度学习代码

  • Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations 用内嵌物理信息的神经网络求解PDE的源头文章,从数据驱动角度提出PINN,求解PDE正逆问题。代码链接
  • DGM, (DGM: A deep learning algorithm for solving partial differential equations): A deep learning algorithm for solving partial differential equations:对于高维PDE用数值方法不能求解,提出DGM方法即用神经网络求解高维PDE问题,同时提出用Monte Carlo估计方法代替PDE中的二阶导数能够加速学习。代码链接
  • hp-VPINNs: Variational Physics-Informed Neural Networks With Domain Decomposition:采用变分区域的方式对区域内采点,这是一种启发式的踩点方法,在准确性上有所提升。代码链接
  • Temperature field inversion of heat-source systems via physics-informed neural network:提出了基于内嵌物理知识神经网络的温度场重构算法。该方法能够减少温度场重构对测点数量的依赖,利用少量测点准确重构温度场。同时改论文提出了一种基于条件数的测点选择方法,能够提升重构模型的鲁棒性。代码链接
  • Extended Physics-Informed Neural Networks (XPINNs): A Generalized Space-Time Domain Decomposition Based Deep Learning Framework for Nonlinear Partial Differential Equations。代码链接
  • PhyGeoNet: Physics-Informed Geometry-Adaptive Convolutional Neural Networks for Solving Parametric PDEs on Irregular Domain:代码链接,python
  • Physics-Informed Neural Networks for Power Systems:代码链接,python
  • Physics-informed neural network (PINN) for solving fluid dynamics problems:代码链接
  • Adversarial Uncertainty Quantification in Physics-Informed Neural Networks:代码链接
  • Accelerating Training PINN with Prior Dictionary:从网络角度引入先验字典对PINN进行改进,加速训练。代码链接
### 关于PINN代码实例 对于希望了解和实践PINN(物理信息神经网络)的人来说,有多个开源项目提供了丰富的代码示例。 #### 使用`pinn`库实现PINN 在`pinn`项目的GitHub页面上提供了一个简单的例子来展示如何设置并运行一个基本的PINN模型[^1]。此项目不仅包含了详细的文档说明,还附带了一些实用的例子帮助初学者快速入门: ```python from pinn import PhysicsInformedNN, DataGenerator import numpy as np # 定义数据集生成器 data_gen = DataGenerator() # 初始化PINN模型 model = PhysicsInformedNN(layer_sizes=[2, 20, 20, 20, 1], lb=np.array([0.0]), ub=np.array([1.0])) # 训练模型 model.train(data=data_gen.generate_data(), epochs=1000) # 预测新样本的结果 prediction = model.predict(np.random.rand(10).reshape(-1, 1)) print(prediction) ``` 这段代码展示了如何创建一个基于两层输入的数据集,并定义一个四隐藏层每层含20个节点的神经网络结构用于逼近未知函数;接着通过调用`.train()`方法来进行训练过程,在完成之后可以通过`.predict()`接口获取预测值。 #### 波动方程求解-PINN_Wave案例研究 另一个具体的实施案例可以在[PINN_Wave](https://gitcode.com/gh_mirrors/pi/pinn_wave)找到,这里专注于利用PINNs解决波动方程问题[^2]。该项目同样给出了完整的Python脚本作为指导材料供开发者参考学习。 #### 更广泛的科学计算工具包-DeepXDE 除了上述特定应用场景外,如果寻求更通用且功能强大的框架,则可以考虑[DeepXDE](https://github.com/lululxvi/deepxde),它是一个专为科学研究设计的支持多领域建模的强大平台[^3]。下面是一段来自官方仓库内的简单演示片段: ```python import deepxde as dde dde.config.set_default_float("float64") def pde(x, y): dy_t = dde.grad.jacobian(y, x, i=0, j=1) dy_xx = dde.grad.hessian(y, x, component=0, i=0, j=0) return dy_t - 0.01 / np.pi * dy_xx + u * dy_x geom = dde.geometry.Interval(-1, 1) timedomain = dde.geometry.TimeDomain(0, 1) geomtime = geom * timedomain bc = dde.DirichletBC(geomtime, lambda _: 0, lambda _, on_boundary: on_boundary) ic = InitialCondition(geomtime, func=lambda x: -np.sin(np.pi * x[:, 0:1])) data = dde.data.PDE( geomtime, pde, [bc, ic], num_domain=2540, num_boundary=80, num_initial=160, train_distribution="pseudo", ) net = dde.nn.FNN([2] + [20] * 3 + [1], "tanh", "Glorot normal") model = dde.Model(data, net) model.compile("adam", lr=1e-3, metrics=["l2 relative error"]) losshistory, train_state = model.train(iterations=15000) ``` 以上代码实现了对一维Burgers' 方程的时间依赖型偏微分方程(PDE) 的数值近似解决方案,其中涉及到边界条件设定、初始状态指定以及损失函数的选择等多个方面的工作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pinn山里娃

原创不易请多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值