ENGLISH | 简体中文
隐流体力学(HFM)是一个物理信息深度学习框架,通过将纳维-斯托克斯方程(Navier-Stokes equations)编码到神经网络中,能够提取隐藏的流体运动量, 例如速度和压力场。以下论文展示了详细的研究。
论文: Raissi M, Yazdani A, Karniadakis G E. Hidden fluid mechanics: Learning velocity and pressure fields from flow visualizations[J]. Science, 2020, 367(6481): 1026-1030.
该模型重新构建了神经网络的训练流程,并预测了给定时间和位置的速度场和压力场。
模型使用的场景是:在雷诺数Re=100
和佩克莱数Pe=100
时,二维流体穿过的圆形圆柱体。
用于训练的数据集和预训练checkpoints文件将会在首次启动时自动下载。
使用的数据集: [Cylinder2D_flower]
.mat
文件
process.py
中处理./data
目录下,目录结构如下:├── data
│ └── Cylinder2D_flower.mat
您如果需要手动下载数据集或checkpoints文件, 请访问此链接。
通过官网安装好MindSpore和上面需要的数据集后,就可以开始训练和验证如下:
默认:
python train.py
完整命令:
python train.py \
--layers 3 200 200 200 200 200 200 200 200 200 200 4 \
--save_ckpt true \
--load_ckpt false \
--save_result true \
--save_ckpt_path ./checkpoints \
--load_ckpt_path ./checkpoints/model_iter_300000_float32.ckpt \
--load_data_path ./data \
--save_data_path ./data \
--log_path ./logs \
--print_interval 10 \
--lr 1e-3 \
--t 1500 \
--n 1500 \
--total_time 40 \
--epochs 100001 \
--batch_size 1000 \
--download_data hfm \
--force_download false \
--amp_level O0 \
--device_id 0 \
--mode 0
文件结构如下:
├── hfm
│ ├── checkpoints # checkpoint文件
│ ├── data # 数据文件
│ ├── figures # 结果图片
│ ├── logs # 日志文件
│ ├── src # 源代码
│ │ ├── network.py # 网络架构
│ │ └── process.py # 数据处理
│ ├── case_studies_1.sh # 供多案例同时执行的脚本
│ ├── case_studies_2.sh # 供多案例同时执行的脚本
│ ├── config.yaml # 超参数配置
│ ├── README.md # 英文模型说明
│ ├── README_CN.md # 中文模型说明
│ ├── train.py # python训练脚本
│ └── eval.py # python评估脚本
train.py中的重要参数如下:
参数名 | 描述 | 默认值 |
---|---|---|
layers | 神经网络层定义 | 3 200 200 200 200 200 200 200 200 200 200 4 |
save_ckpt | 是否保存checkpoint | true |
load_ckpt | 是否加载checkpoint | false |
save_result | 是否保存训练结果 | true |
save_ckpt_path | checkpoint保存路径 | ./checkpoints |
load_ckpt_path | checkpoint加载路径 | ./checkpoints/model_iter_300000_float32.ckpt |
load_data_path | 训练数据路径 | ./data |
save_data_path | 生成数据路径 | ./data |
log_path | 日志保存路径 | ./logs |
print_interval | 时间与loss打印间隔 | 10 |
lr | 学习率 | 1e-3 |
t | 时间样本的大小 | 1500 |
n | 位置样本的大小 | 1500 |
total_time | 最大训练时间, 单位: 小时 | 40 |
epochs | 最大训练时期(迭代次数) | 100001 |
batch_size | 每个时期(迭代次数)的数据集大小 | 1000 |
download_data | 模型所需数据集与(或)checkpoints | hfm |
force_download | 是否强制下载数据 | false |
data_type | MindSpore自动混合精度等级 | O0 |
device_id | 需要设置的设备号 | None |
mode | MindSpore静态图模式(0)或动态图模式(1) | 0 |
在 GPU/Ascend 上运行
python train.py
经过训练,loss值会输出如下:
step: 0, loss: 0.8028861, interval: 210.2149157524109s, total: 210.2149157524109s
step: 10, loss: 0.66187924, interval: 13.888249158859253s, total: 224.10316491127014s
step: 20, loss: 0.45909613, interval: 13.550164461135864s, total: 237.653329372406s
step: 30, loss: 0.21840161, interval: 13.551252603530884s, total: 251.2045819759369s
step: 40, loss: 0.043125667, interval: 13.55091643333435s, total: 264.75549840927124s
step: 50, loss: 0.04197544, interval: 13.552476167678833s, total: 278.3079745769501s
step: 60, loss: 0.017915843, interval: 13.578445672988892s, total: 291.88642024993896s
...
训练结束后,您仍然可以通过保存在log_path
下面的日志文件回顾训练过程,默认为./logs
目录中.
模型checkpoint将保存在save_ckpt_path
中, 默认为./checkpoints
目录中。
在运行下面的命令之前,请检查使用的config.yaml
中的checkpoint加载路径load_ckpt_path
进行推理。checkpoint文件可以使用数据集章节中的命令进行下载。
在 GPU/Ascend 上运行
python eval.py
训练过程将会输出如下的(c ,u, v, p)误差:
# grep "Error" log
...
Error c: 2.638576e-02, Error u: 4.955575e-02, Error v: 3.927004e-02, Error p: 1.061887e-01
Error c: 2.622087e-02, Error u: 4.833636e-02, Error v: 3.940436e-02, Error p: 1.045989e-01
Error c: 2.596794e-02, Error u: 4.727550e-02, Error v: 3.953079e-02, Error p: 1.030758e-01
Error c: 2.543095e-02, Error u: 4.638828e-02, Error v: 3.969464e-02, Error p: 1.016249e-01
Error c: 2.459827e-02, Error u: 4.566803e-02, Error v: 3.989391e-02, Error p: 1.002600e-01
Error c: 2.360513e-02, Error u: 4.509190e-02, Error v: 4.006676e-02, Error p: 9.900088e-02
Error c: 2.243761e-02, Error u: 4.463641e-02, Error v: 4.011014e-02, Error p: 9.788122e-02
...
您可以通过日志文件log_path
查看过程与结果,默认位于./logs
。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。