208 Star 856 Fork 633

GVPMindSpore / mindscience

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_CN.md 8.67 KB
一键复制 编辑 原始数据 按行查看 历史

ENGLISH | 简体中文

目录

Fractional PINNs 描述

Fractional PINNs(FPINNs)模型主要解决的问题是时空域中带有分数阶偏导的对流-扩散方程(ADE)。 该模型在计算残差时,对整数阶算子和分数阶算子采取了不同的计算方法。 对于整数阶算子,仍然采用自动微分的方式(AD),而对于分数阶算子则采用数值离散的方法计算。 该方法克服了自动微分技术无法应用于分数阶算子的困难。 该困难来源于整数微积分中的链式法则在分数微积分中并不成立。 另外,在合适的初始条件下,通过该方法得到的模型在较大的噪声下,仍然能够得到准确的预测值。

论文: Pang G, Lu L, Karniadakis G E. fPINNs: Fractional physics-informed neural networks[J]. SIAM Journal on Scientific Computing, 2019, 41(4): A2603-A2626.

案例详情: 使用PINNs解决一维分数阶偏导扩散模型。

数据集

用于每个案例的数据集在训练过程中随机生成。 数据集的大小取决于样本的数量,这些样本由config.yaml中的num_domainnum_boundarynum_initial控制。

预训练checkpoints文件将会在首次启动时自动下载。 您如果需要手动下载checkpoints文件, 请访问此链接

环境要求

快速开始

通过官网安装好MindSpore后,就可以开始训练和验证如下:

  • 在 Ascend 或 GPU 上运行

默认:

python train.py

完整命令:

python train.py \
    --problem fractional_diffusion_1d \
    --layers 2 20 20 20 20 1 \
    --x_range 0 1 \
    --t_range 0 1 \
    --num_domain 400 \
    --num_boundary 0 \
    --num_initial 0 \
    --num_test 400 \
    --lr 1e-3 \
    --save_ckpt true \
    --save_fig true \
    --load_ckpt false \
    --save_ckpt_path ./checkpoints/fractional_diffusion_1d \
    --load_ckpt_path ./checkpoints/fractional_diffusion_1d/model_iter_10000_float32.ckpt \
    --figures_path ./figures/fractional_diffusion_1d \
    --log_path ./logs \
    --print_interval 100 \
    --epochs 10001 \
    --download_data fpinns \
    --force_download false \
    --amp_level O0 \
    --device_id 0 \
    --mode 0

脚本说明

脚本和示例代码

文件结构如下:

├── fpinns
│   ├── checkpoints                  # checkpoint文件
│   ├── data                         # 数据文件
│   ├── figures                      # 结果图片
│   ├── logs                         # 日志文件
│   ├── src                          # 源代码
│   │   ├── network.py               # 网络架构
│   │   ├── plot.py                  # 绘制结果
│   │   ├── problem.py               # 抽象问题类
│   │   └── process.py               # 流程处理
│   ├── config.yaml                  # 超参数配置
│   ├── README.md                    # 英文模型说明
│   ├── README_CN.md                 # 中文模型说明
│   ├── train.py                     # python训练脚本
│   └── eval.py                      # python评估脚本

脚本参数

train.py中的重要参数如下:

参数 描述 默认值
problem 问题场景 fractional_diffusion_1d
layers 神经网络结构 2 20 20 20 20 1
x_range 空间范围 0 1
t_range 时间范围 0 1
num_domain 域内数据数量 400
num_boundary 边界数据数量 0
num_initial 初始条件数据数量 0
num_test 测试数据数量 400
lr 学习率 1e-3
save_ckpt 是否保存checkpoint true
save_fig 是否保存和绘制图片 true
load_ckpt 时间与loss打印间隔 false
save_ckpt_path checkpoint保存路径 ./checkpoints/fractional_diffusion_1d
load_ckpt_path checkpoint加载路径 ./checkpoints/fractional_diffusion_1d/model_iter_10000_float32.ckpt
figures_path 图片保存路径 ./figures/fractional_diffusion_1d
log_path 日志保存路径 ./logs
print_interval 时间与loss打印间隔 100
epochs 时期(迭代次数) 10001
download_data 模型所需数据集与(或)checkpoints fpinns
force_download 是否强制下载数据 false
amp_level MindSpore自动混合精度等级 O0
device_id 需要设置的设备号 None
mode MindSpore静态图模式(0)或动态图模式(1) 0

训练流程

  • 在 GPU/Ascend 上运行

    python train.py

    训练期间的损失值将打印在控制台中, 也可以训练后在日志文件中查看。

    # grep "loss:" log
    step: 0, loss: 0.1720775, interval: 0.515510082244873s, total: 0.515510082244873s
    step: 100, loss: 0.004217985, interval: 0.15668702125549316s, total: 0.6721971035003662s
    step: 200, loss: 0.0026953542, interval: 0.14049434661865234s, total: 0.8126914501190186s
    step: 300, loss: 0.002297479, interval: 0.13532018661499023s, total: 0.9480116367340088s
    step: 400, loss: 0.0018170077, interval: 0.13717007637023926s, total: 1.085181713104248s
    step: 500, loss: 0.0009912008, interval: 0.1338338851928711s, total: 1.2190155982971191s
    step: 600, loss: 0.00050001504, interval: 0.14569568634033203s, total: 1.3647112846374512s
    ...
  • 训练结束后,您仍然可以通过保存在log_path下面的日志文件回顾训练过程,默认为./logs目录中。

  • 模型checkpoint将保存在 save_ckpt_path中,默认为./checkpoints 目录中。

推理流程

在运行下面的命令之前,请检查使用的config.yaml 中的checkpoint加载路径load_ckpt_path 进行推理。

  • 在 GPU/Ascend 上运行

    python eval.py

    您可以通过日志文件log_path查看过程与结果,默认位于./logs 。 结果图片存放于figures_path中,默认位于./figures

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mindspore/mindscience.git
git@gitee.com:mindspore/mindscience.git
mindspore
mindscience
mindscience
r0.5

搜索帮助