PINN求解一维波动方程,pytorch框架,附代码(二)
浏览:1987 评论:1
PINN求解一维波动方程,pytorch框架,附代码(二)
pytorch和tensorflow区别
以下tensorflow简称TF
- pytorch具有更加易用的API,目前的TF 2.x + Keras也提供类似的易用的API
- pytorch构建动态计算图,方便调试,TF以静态图为主,有利于部署和加速,目前也支持动态图,鼓励用语法糖转化为静态图获得性能提升
- 部署方面,TF有完整的工具链,目前pytorch也增强了部署能力
- 可视化工具,TF集成有TensorBoard,pytorch也支持用TensorBoard
总结:但随着版本迭代,两者正在相互借鉴优点,差距逐渐缩小。学习阶段可以采用pytorch,获得成熟可用的项目后可以转用tensorflow部署获得更高的性能。
正问题
正问题是已知一切条件预测结果,这是一个确定性的计算过程。
- 已知方程形式,且已知:
初始条件:
边界条件:
解析解: 根据达朗贝尔公式可得:
表达式如下:
损失函数表达式:
- 网络架构
- 输入层:空间坐标(
- )
- 隐藏层:3层,每层50个神经元
- 输出层:物理场预测值
值得一提的是: PINN本身并不提供解的存在唯一性证明。这个保证来自于应用数学领域的微分方程理论。在将一个问题交给PINN求解之前,我们通常依赖于已知的数学定理来确保问题是一个“适定性问题”,即:
- 存在性:至少有一个解。
- 唯一性:最多有一个解。
- 稳定性:解连续地依赖于初始条件或边界条件。
例如将上述波动方程初始条件中的一阶导公式去掉,解就失去了唯一性,PINN就无法按预期工作。
原始采样点
损失函数变化
真实结果、预测结果、绝对误差
逆问题
逆问题是已知一些观测数据,但是不确定方程中的一些系数是多少,目标是利用这些观测数据来反推出方程中的系数。更进一步,有大量的观测数据,但是不知道方程的具体形式,利用已有数据来推出方程的表达式,因此逆问题可能不具备适定性,求解更困难。
- 将上述正问题做两点改动,1.添加一些已知观测数据。2.参数c的数值未知。那么上述正问题就变成了一个逆问题。
此时损失函数表达式:
表示的是和参数的集合。
原始采样点
损失函数变化、参数变化
真实结果、预测结果、绝对误差
本本文涉及的完整代码,请后台回复关键词" pinn-2" 获取。
感谢每一位朋友的关注!期待能和大家在这个领域携手前行,后续会有更多技术解读和实战技巧分享,我们一起学习,共同成长!~~~🤞🤞🤞
技术邻APP
工程师必备
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
1
1




















