# XPINN_pytorch
**Repository Path**: dalerxli/xpinn_pytorch
## Basic Information
- **Project Name**: XPINN_pytorch
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2025-04-14
- **Last Updated**: 2025-04-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# XPINN_pytorch
## 介绍
PINN是基于物理信息的神经网络,XPINNs则是PINN的一个变体,将区域分解技术引入了PINN网络,并通过定义界面点解的连续性和残差连续性从而推广到了求解一般的PDE中,在原论文提供的代码中,作者用TensorFlow实现了求解二维泊松方程的算例,基于本人研究的是Pytorch深度学习框架,因此对原文中的二维泊松方程算例重新使用MatLab采点+Pytorch构建XPINNs网络来进行实现,并也得到了较好的精度,说明了复现的效果还是不错的。
## 文件说明
### MatLab文件部分
* Collect_Point_graph.m文件
这个文件实现了根据原论文所指的求解区域的可视化功能,得到了训练的边界点和对应的标签,同时对整个区域进行划分为domain1,domain2,domain3,同时求出它们的边界点,并对domain1,domain2,domain3内部进行均匀采样得到所需要训练的残差点。
* Xpinn_data.mat文件
这个文件存储了Collect_Point_graph.m文件中所采集的边界点,标签数据点,界面点和残差点用于后续XPINNs模型的训练。
* XPINN_2D_PoissonEqn.mat文件
这个文件为原论文作者提供的数据文件,其中包括了精确解,可以用来预测。
### Python文件部分
* Xpinn_Xpinn_data.py文件
这个文件根据原文求解二维泊松方程的算例运用Pytorch框架构建了XPINNs神经网络,用了Xpinn_data.mat文件的数据进行训练。
* Xpinn.py文件
这个文件属于复现模型文件,运用了原作者的数据XPINN_2D_PoissonEqn.mat的数据进行训练。
### Graph文件夹
其中包含三张图片,loss_graph.png记录了Xpinn_Xpinn_data.py中模型训练的三个子网络训练的损失随epoch变化的过程;Point_domain.png展示了Collect_Point_graph.m中的可视化求解区域和配置点,test_loss记录了Xpinn.py文件对于模型的训练损失和对于方程三个子域中每个点的平方误差情况。
## 总结
本人实现了模型的训练部分的内容,并完善了预测求解部分,在精读了XPINNs以及了解了一些其他区域分解的PINN,对这个方面的知识还是挺感兴趣的,因此想研究一下,所以自己用Pytorch框架对原文的算例进行求解,同时也参考了一些其他论文的代码,如cPINNs等,收获还是很大的。
参考论文: Karniadakis, A. D. J. & G. E. Extended Physics-Informed Neural Networks (XPINNs): A Generalized Space-Time Domain Decomposition Based Deep Learning Framework for Nonlinear Partial Differential Equations. CiCP 2020, 28 (5), 2002–2041. https://doi.org/10.4208/cicp.OA-2020-0164.