降阶模型可有效降低使用CFD方法的设计成本和周期。对于复杂的可压缩流动,使用POD等线性方法进行流场降维,需要大量的模态才能保证流场重建的精度,而采用非线性降维方法能够有效减少所需模态数。卷积自编码器(CAE)是一种由编码器和解码器组成的神经网络,能够实现数据降维和重构,可看作是POD方法的非线性拓展。采用CAE进行流场数据的非线性降维,同时使用Transformer进行流场状态的时间演化。对于非定常可压缩流动,“CAE-Transformer”降阶模型能够在使用较少自由变量数与较短计算周期的前提下获得较高的重构和预测精度。
CAE-Transformer的基本框架主要基于论文1和论文2,其由CAE和Transformer组成,其中CAE中的编码器降低时间序列流场的维数,实现特征提取,Transformer学习低维时空特征并进行预测,CAE中的解码器实现流场重建:
输入:输入一段时间的流场
压缩:通过CAE的编码器对流场进行降维,提取高维时空流动特征;
演化:通过Transformer学习低维空间流场时空特征的演变,预测下一时刻;
重建:通过CAE的解码器将预测的流场低维特征恢复到高维空间;
输出:输出对下一时刻瞬态流场的预测结果。
来源:二维圆柱绕流数值仿真流场数据,由北京航空航天大学航空科学与工程学院于剑副教授团队提供。
数据说明: 数据集针对10个雷诺数的圆柱绕流进行了数值模拟,每个雷诺数下的流场数据包含401个时间步,每个时间步的流场数据为256*256的二维流场,每个变量的数据类型为float32,数据集总大小为约1.96GB。
数据集下载链接: 2D_cylinder_flow.npy
train.py
脚本该模型单机单卡进行训练,根据训练任务需求,直接执行train.py即可开始训练CAE和Transformer网络 在开始训练前需要在config.yaml中设置数据读取保存路径和训练参数等相关参数:
python -u train.py --mode GRAPH --device_target GPU --device_id 0 --config_file_path ./config.yaml
其中,
--mode
表示运行的模式,'GRAPH'表示静态图模式, 'PYNATIVE'表示动态图模式,默认值'GRAPH';
--device_target
表示使用的计算平台类型,可以选择'Ascend'或'GPU',默认值'GPU';
--device_id
表示使用的计算卡编号,可按照实际情况填写,默认值0;
--config_file_path
表示参数文件的路径,默认值'./config.yaml'。
您可以使用中英文版本的Jupyter Notebook逐行运行训练和验证代码:
中文版本: train_CN.ipynb
英文版本: train.ipynb
根据训练条件,执行eval.py进行模型推理,此操作将会根据训练结果的权重参数文件,预测输出CAE的降维、重构数据,Transformer的演化数据和CAE-Transformer预测的流场数据。
此操作还会分别计算CAE的重构数据和CAE-Transformer预测的流场数据的平均相对误差:
python -u eval.py
上述后处理输出路径默认为./prediction_result
,可在config.yaml里修改保存路径。
以下为CAE-Transformer和真实值的对比:
结果展现了流场中不同位置的速度随时间的变化情况。预测结果与真实值的平均相对误差为6.3e-06。
参数 | NPU | GPU |
---|---|---|
硬件资源 | Ascend, 显存32G | NVIDIA V100, 显存32G |
MindSpore版本 | 2.0.0 | 2.0.0 |
数据集 | Cylinder_flow数据集 | Cylinder_flow数据集 |
参数量 | 3.8e5 | 3.8e5 |
训练参数 | batch_size=32, epochs=100, steps_per_epoch=97 | batch_size=32, epochs=100, steps_per_epoch=97 |
测试参数 | batch_size=32 | batch_size=32 |
优化器 | Adam | Adam |
训练损失 | 1.21e-6 | 1.21e-6 |
验证损失 | 3.85e-7 | 3.86e-7 |
速度 | 216毫秒/步 | 220毫秒/步 |
代码贡献者的gitee id: Marc-Antoine-6258
代码贡献者的email: 775493010@qq.com
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。