ippqw5 / PINNLearning

Implement PINN with high level APIs of TF2.0, including a solution of coupled PDEs with PINN
23 stars 5 forks source link
deep-learning physics-informed-neural-networks tensorflow2

学习PINNs and TensorFlow

记录每日 TensorFlow 学习 & PINN 模型学习

参考教材:《30天吃掉那只TensorFlow2》 https://github.com/lyhue1991/eat_tensorflow2_in_30_days

PINN相关代码 放在 "./PINN学习记录/"中

详细的每日学习内容记录 放在 "./PINN学习记录/PINNs.md"

永远祝愿祖国山河统一!

日期 学习内容 备注
8.20-8.21 Coupled viscous Burgers‘ equation 三个数值算例:两个带解析解,一个无解析解。
实验成果/cBurgers_eg1.ipynb,
实验成果/cBurgers_eg2.ipynb,
实验成果/cBurgers_eg3.ipynb,
更新cPINNs报告.md
8.17 3D_Parabolic参数反问题 实验成果/3D_Parabolic区域反问题.ipynb
8.15 3D_Parabolic区域反问题 实验成果/3D_Parabolic区域反问题.ipynb
8.13-14 cPINNs报告 实验成果/cPINNs报告.md
8.8 实验成果 实验成果/3D_Parabolic正问题.ipynb
8.5 各种优化算法学习 记录 随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam、Nadam的原理。更新PINN学习记录。
8.4 DeepXDE论文阅读(3) 完结DeepXDE论文,更新PINN学习记录。
8.3 DeepXDE论文阅读(2) 阅读DeepXDE论文,更新PINN学习记录。
8.2 Effective Tensorflow2(下)
DeepXDE论文阅读(1)
阅读Effective Tensorflow2文档,阅读DeepXDE论文,看看大佬的优化思路,更新PINN学习记录。
8.1 Effective Tensorflow2(上) 阅读Effective Tensorflow2文档,更新PINN学习记录。
7.30 3d-parabolic耦合pde代码优化 0730_3D_Parabolic耦合模型_优化.ipynb
添加多种指标Metrics,以便观察训练过程
绘图优化
7.27 3d-parabolic耦合pde代码编写 0727_3D_Parabolic耦合模型.ipynb
(未完工部分:研究3d热力图画法ing)
7.26 构造3d的parabolic耦合pde算例
DeepXDE库,TensorDiffEq库
之前用的2d parabolic耦合pde算例的解析解构造是有规律的,可能拓展到n维。
DeepXDE库,TensorDiffEq库为现有的基于PINN等方法求解pde的库。
阅读论文:Deep Learning-An Introduction.pdf
7.23 参数反问题 0723_参数反问题_Parabolic耦合模型.ipynb
知道部分、全部真解,反推模型参数。
7.22 区域反问题 0722_区域反问题 Parabolic耦合模型.ipynb
简单地说,区域反问题是指边界条件未知,但知道部分内部数值解、真解,反推整个区域的解
7.21 优化训练步骤 0721_自适应&LBFGS_Parabolic耦合模型.ipynb
比较Adam算法和LBFGS算法的训练表现。
(有必要深入了解Adam的性质,在训练后期表现远不如LBFGS)
7.20 封装耦合PINN代码,使用内置fit
自适应因子&预训练模型
代码见 PINN学习记录/7_20_Self_Adaptive_Parabolic耦合pde模型
有关自适应和预训练的说明在PINN学习记录/PINNs.md
7.18 更新PINN学习记录&tensorflow学习记录
代码 & 论文阅读
Metric评估函数 & 论文阅读
7.15 改进parabolic耦合pde的代码。 ①耦合训练5000次,loss不怎么下降 ②两个区域分布进行单独的PINN训练 训练准确度提升
7.13 与2位学长会议交流,讨论PINN 解决了不少疑问,PINN在边界处的拟合效果确实一般。
7.12 更新PINN学习记录。 训练模型parabolic模型,通过图像,将真实解和PINN模型解做对比。 u1拟合地很好,u2在多次训练后效果仍然很差。 可能是因为u2中含有y的二次项,而u1中只有y的一次项。 也可能是代码细节出错,正在研究。。。
7.11 更新PINN学习记录。使用PINN求解parabolic耦合pde模型 代码见 7_11_Parabolic耦合pde模型.ipynb 画图部分还没写,训练数据的生成代码,写的有些冗长,后面会优化一下。
7.8 阅读一篇论文,关于pde耦合模型的数值求解方法。 尝试小批量训练模型,即把训练数据分组,规模减少,但训练次数相应会上升。
7.7 阅读张学长的论文:PINN求解naiver-stokes/Darcy耦合模型的正反问题 简单来说,Inputs连接两个独立的NN,分别预测U{ns} 和 U{d}, 构造naiver-stokes方程组和Darcy方程组的各自微分方程残差项, 以及interface处的残差项,最后加到一起,形成loss。
7.6 今天阅读学习了一些NN在PDE求解问题中的多种方法。
7.5 更新PINN学习记录,Debug完成,代码框架搭建告一段落!。 后续开始阅读PINN相关论文。 Debug比写代码要费时间,有一个小错误,看了2个小时硬是没看出来 让我一度以为,搭建思路不行,需要重新搭,或者抄别人。 还有一个“错误”,仅仅仅仅是写法不同,却能导致训练失败。 具体分析在: PINNs学习记录/PINNs.md
7.4 更新PINN学习记录,Data Prep & Plot 代码,调试模型进行训练 使用Google colab进行云计算,白嫖算力😍 模型训练没有达到预期,正在debug
7.1 更新PINN学习记录,讨论优化器Adam&L-BFGS,写优化器的代码 Adam优化器调用起来很简单。 而L-BFGS 需要安装tfp,需要一些复杂的操作才能使用🤣。
6.30 更新PINN学习记录,完成PINN框架代码搭建。 以Burgers_Equation为例,模型训练运行成功,之后将完善细节。 今天大概写了一天代码,看了很多官方文档, 本来想调用高阶API训练模型,发现自带的高阶API局限性太强 不如自己重新定义训练过程😢
6.29 更新PINN学习记录、阅读TensorFlow官方文档
6.28 11_Loss&Regularizer 常用损失函数 & 自定义loss & 正则化器
6.27 10_tf.layers 若干模型层 & 自定义模型层
6.25 - 6.26 8_tf.data 数据管道 + 9_tf.Activations 激活函数 NULL
~6.25 1_Graph ~ 7_Module NULL