1.代码总结
1.自适应激活函数Pytorch:自适应激活函数(Adaptive activation functions),让网络更容易收敛-优快云博客
2.cpinn :守恒pinn 针对的是双曲守恒律方程
https://github.com/AmeyaJagtap/Conservative_PINNs
pytorch实现
https://github.com/comp-physics/CPINN/blob/main/Burger/BurgerTrainAdam.py
3.xpinn:扩展pinn
https://github.com/AmeyaJagtap/XPINNs
2.自适应激活函数
-
逐层增加自适应激活函数(足够使用)
-
逐单元增加自适应激活函数(表达能力过强,容易过拟合)
-
论文名称:Adaptive activation functions accelerate convergence in deep and physics-informed neural networks
- 用自适应激活函数——类似于傅里叶特征嵌入(ntk理论,伸缩变换,将高频问题转划为低频问题) 可进一步了解多尺度问题,多尺度和自适应比较相似 输入变到频率空间,将高频拉到低频
- n是超参数(5,10,20),a是可训练参数
3.区域分解:残差连续
论文名称:Jagtap, Ameya D.; Kharazmi, Ehsan; Karniadakis, George Em (2020). *Conservative physics-informed neural networks on discrete domains for conservation laws: Applications to forward and inverse problems. Computer Methods in Applied Mechanics and Engineering, 365(), 113028–.* doi:10.1016/j.cma.2020.113028
-
区域分解的好处: ①只用初边值条件训练的情况下,传统的PINN网络在训练早期会pollute(污染)解。 ②区域分解将好训练的部分训练好,减少相邻子区域的误差传播,并提高收敛速度。 ③将知识加到loss里面。除了初边值,还应加入其他的信息。例如增加通量连续性。双曲守恒律的一般形式。 ④超参数灵活选取 ⑤提升表达能力,突出局部性,计算更准 ⑥便于处理分段常系数
-
区域分解 ①考虑的方面:解的形态不同,所有要分段处理;或者PDE内部区域取值不同做一个区域分解。
-
区域分解LOSS的构造 通量的连续性:二维构造通量参数时还需要做投影等工作。
-
在边界处尽可能相等
-
残差项:残差点的采样:位置
-
CPINN可以优化逼近误差,泛化误差以及优化误差,原因如下: ①选取合适的位置和分布,泛化误差可以减小 ②减少方法本身的误差,增强网络的表达能力 ③可以减小优化误差,因为采用不同的网络处理不同的优化问题
-
带黏burgers方程有解析解。
-
做超参数
-
XPINN可以对时间上也进行区域分解
-
区域分解+PINN 容易过拟合
3.并行
Parallel physics-informed neural networks via domain decomposition (notion.so)
- 模型并行
- 数据并行