当前位置: 首页 > news >正文

PINA开源程序用于高级建模的 Physics-Informed 神经网络

​一、软件介绍

文末提供程序和源码下载

PINA 是一个开源 Python 库,旨在简化和加速科学机器学习 (SciML) 解决方案的开发。PINA 基于 PyTorch、PyTorch Lightning 和 PyTorch Geometry 构建,提供了一个直观的框架,用于使用神经网络、物理信息神经网络 (PINN)、神经运算符等定义、试验和解决复杂问题

  • Modular Architecture: Designed with modularity in mind and relying on powerful yet composable abstractions, PINA allows users to easily plug, replace, or extend components, making experimentation and customization straightforward.
    模块化架构:PINA 在设计时考虑了模块化,并依赖于强大但可组合的抽象,允许用户轻松插入、替换或扩展组件,使实验和定制变得简单明了。

  • Scalable Performance: With native support for multi-device training, PINA handles large datasets efficiently, offering performance close to hand-crafted implementations with minimal overhead.
    可扩展的性能:凭借对多设备训练的原生支持,PINA 可以高效处理大型数据集,以最小的开销提供接近手工构建的性能。

  • Highly Flexible: Whether you're looking for full automation or granular control, PINA adapts to your workflow. High-level abstractions simplify model definition, while expert users can dive deep to fine-tune every aspect of the training and inference process.
    高度灵活:无论您是在寻找完全自动化还是精细控制,PINA 都能适应您的工作流程。高级抽象简化了模型定义,而专家用户可以深入研究以微调训练和推理过程的各个方面。

二、Installation 安装

Installing a stable PINA release
安装稳定的 PINA 版本

Install using pip: 使用 pip 安装:

pip install "pina-mathlab"

Install from source: 从源码安装:

git clone https://github.com/mathLab/PINA
cd PINA
git checkout master
pip install .

Install with extra packages:
使用额外的软件包进行安装:

To install extra dependencies required to run tests or tutorials directories, please use the following command:
要安装运行 tests 或 tutorials 目录所需的额外依赖项,请使用以下命令:

pip install "pina-mathlab[extras]" 

Available extras include:
可用的额外服务包括:

  • dev for development purpuses, use this if you want to Contribute.
    dev 对于开发目的,如果您想要 贡献,请使用此项。
  • test for running test locally.
    test 用于在本地运行 TEST。
  • doc for building documentation locally.
    doc 用于本地构建文档。
  • tutorial for running Tutorials.
    tutorial 用于运行 Tutorials。

三、Quick Tour for New Users新用户快速导览

Solving a differential problem in PINA follows the four steps pipeline:
在 PINA 中求解差分问题遵循四个步骤 pipeline:

  1. Define the problem to be solved with its constraints using the Problem API.
    使用 Problem API 定义要解决的问题及其约束。

  2. Design your model using PyTorch, or for graph-based problems, leverage PyTorch Geometric to build Graph Neural Networks. You can also import models directly from the Model API.
    使用 PyTorch 设计模型,或者对于基于图形的问题,利用 PyTorch Geometric 构建图形神经网络。您还可以直接从 Model API 导入模型。

  3. Select or build a Solver for the Problem, e.g., supervised solvers, or physics-informed (e.g., PINN) solvers. PINA Solvers are modular and can be used as-is or customized.
    为问题选择或构建求解器,例如,监督式求解器或物理信息(例如 PINN)求解器。PINA 求解器是模块化的,可以按原样使用或自定义使用。

  4. Train the model using the Trainer API class, built on PyTorch Lightning, which supports efficient, scalable training with advanced features.
    使用基于 PyTorch Lightning 构建的 Trainer API 类训练模型,该类支持具有高级功能的高效、可扩展训练。

Do you want to learn more about it? Look at our Tutorials.
您想了解更多相关信息吗?查看我们的教程。

四、Solve Data Driven Problems解决数据驱动的问题

Data driven modelling aims to learn a function that given some input data gives an output (e.g. regression, classification, ...). In PINA you can easily do this by:
数据驱动建模旨在学习给定一些输入数据给出输出的函数(例如回归、分类等)。在 PINA 中,您可以通过以下方式轻松做到这一点:

from pina import Trainer
from pina.model import FeedForward
from pina.solver import SupervisedSolver
from pina.problem.zoo import SupervisedProbleminput_tensor  = torch.rand((10, 1))
output_tensor = input_tensor.pow(3)# Step 1. Define problem
problem = SupervisedProblem(input_tensor, target_tensor)
# Step 2. Design model (you can use your favourite torch.nn.Module in here)
model   = FeedForward(input_dimensions=1, output_dimensions=1, layers=[64, 64])
# Step 3. Define Solver
solver  = SupervisedSolver(problem, model)
# Step 4. Train
trainer = Trainer(solver, max_epochs=1000, accelerator='gpu')
trainer.train()

Solve Physics Informed Problems
解决 Physics Informed 问题

Physics-informed modeling aims to learn functions that not only fit data, but also satisfy known physical laws, such as differential equations or boundary conditions. For example, the following differential problem:
基于物理场的建模旨在学习不仅拟合数据,而且满足已知物理定律(例如微分方程或边界条件)的函数。例如,以下 differential 问题:

{����(�)=�(�)�∈(0,1)�(�=0)=1

in PINA, can be easily implemented by:
在 PINA 中,可以通过以下方式轻松实现:

from pina import Trainer, Condition
from pina.problem import SpatialProblem
from pina.operator import grad
from pina.solver import PINN
from pina.model import FeedForward
from pina.domain import CartesianDomain
from pina.equation import Equation, FixedValuedef ode_equation(input_, output_):u_x = grad(output_, input_, components=["u"], d=["x"])u = output_.extract(["u"])return u_x - u# build the problem
class SimpleODE(SpatialProblem):output_variables = ["u"]spatial_domain = CartesianDomain({"x": [0, 1]})domains = {"x0": CartesianDomain({"x": 0.0}),"D": CartesianDomain({"x": [0, 1]}),}conditions = {"bound_cond": Condition(domain="x0", equation=FixedValue(1.0)),"phys_cond": Condition(domain="D", equation=Equation(ode_equation)),}# Step 1. Define problem
problem = SimpleODE()
# Step 2. Design model (you can use your favourite torch.nn.Module in here)
model   = FeedForward(input_dimensions=1, output_dimensions=1, layers=[64, 64])
# Step 3. Define Solver
solver  = PINN(problem, model)
# Step 4. Train
trainer = Trainer(solver, max_epochs=1000, accelerator='gpu')
trainer.train()

五、Application Programming Interface
应用程序编程接口

Here's a quick look at PINA's main module. For a better experience and full details, check out the documentation.
以下是 PINA 的主模块的快速浏览。要获得更好的体验和完整的详细信息,请查看文档。

五、软件下载

迅雷云盘

本文信息来源于GitHub作者地址:https://github.com/mathLab/PINA

http://www.lryc.cn/news/571517.html

相关文章:

  • 实验分享|自研局部DIC-GPU算法与开源GPU算法对比实验
  • jenkins打包问题jar问题
  • Layui的table实现鼠标移入单元格后tips弹框提示
  • 【RocketMQ 生产者和消费者】- 消费者重平衡(1)
  • 《开窍》读书笔记9
  • day40- 硬件学习之 51单片机II (中断处理)
  • 开源 Arkts 鸿蒙应用 开发(一)工程文件分析
  • MIT 6.S081 2020 Lab9 File Systems 个人全流程
  • 使用 Java + WebSocket 实现简单实时双人协同 pk 答题
  • 什么是状态机?状态机入门
  • 神奇的bug之docker compose启动mysql失败
  • 服务器带宽小优化建议以及实战操作
  • 【在线五子棋对战】七、数据管理模块实现
  • Java 21 新特性深度解析:虚拟线程、结构化并发来袭!
  • 服务器静态ip,网关不能占用*.*.*.1
  • 【音视频】SIP基础、搭建服务器和客户端
  • Axios 知识点全面总结
  • 详解 MyBatis - Plus 服务层设计:让 CRUD 更高效、业务拓展更灵活——补充
  • React 国际化方案最佳实践调研
  • agentformer论文阅读
  • Python 目录操作详解
  • 6-16阿里前端面试记录
  • 云原生时代配置中心全景解读:从Spring Cloud Config到Nacos深度实践
  • (十八)自然语言处理:从理解到创造
  • Java 时间处理指南:从“踩坑”到“填坑”实战
  • 基于CNN卷积神经网络识别汉字合集-视频介绍下自取
  • C++----剖析stack、queue
  • 唯杰地图文档AI搜索-为二次开发者打造的智能开发助手
  • 山东大学 软件项目管理知识点总结
  • ffmpeg python rgba图片合成 4444格式mov视频,保留透明通道