English | 简体中文
本项目基于paddle框架复现,论文主要亮点如下:
- 作者不是为正向模型开发代理,而是直接训练一个反向代理,将物理系统的输出信息映射到未知的输入分布式参数。
- 建立了一种基于条件可逆神经网络(cINN)的生成模型。
- cINN被训练为作为由偏微分方程控制的物理系统反向替代模型。
- 逆代理模型用于求解具有未知空间相关参数的逆问题。
- 该方法应用于利用有限压力和饱和度数据估计多相流中的非高斯渗透率场。
论文信息:
- Anantha Padmanabha G, Zabaras N. Solving inverse problems using conditional invertible neural networks[J]. Journal of Computational Physics, 2021, 433: 110194.
参考GitHub地址:
项目aistudio地址:
数据集包含2D数据和3D数据,可通过此处链接进行下载。
数据集aistudio地址:
- 2D数据: https://aistudio.baidu.com/aistudio/datasetdetail/166997
- 3D数据: https://aistudio.baidu.com/aistudio/datasetdetail/167243
本项目已经关联以上数据集,可直接在项目data文件夹下找到对应数据集
具体数据集组成及含义可参考论文4.1节Identification of the permeability field of an oil reservoir。
数据集划分为train,test和sample数据集。train数据集中包含10000样本,但可通过args函数指定训练集数量用于训练。文件名称中包含1pc,3pc,5pc分别对应1%,3%,5%的噪声。
- 2D模型:gpu memory >= 16GB (v100 16g)
- 3D模型:gpu memory >= 32GB (v100 32g)
- paddle >= 2.2.0
- matplotlib
- h5py
- scipy
- scikit-learn
conda create -n paddle_env python=3.8
conda install paddlepaddle-gpu==2.3.2 cudatoolkit=11.6 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge
conda install scipy h5py matplotlib scikit-learn
本项目已经构建notebook(同X4Science/INFINITY中相同代码)用于快速实现。具体代码请参考以下notebook,运行中需修改数据路径和结果路径参数请在args
中修改。
- 2D模型:main-2D.ipynb (备注:推荐使用v100 32g计算卡)
- 3D模型:main-3d.ipynb (备注:推荐使用A40 40g计算卡)
- 下载数据集文件
- 从github下载本项目代码,X4Science/INFINITY
- 运行
cd 2D # or cd 3D
python train.py
inn-surrogate-paddle
|-- 2D # 2D模型文件夹
| |-- args.py # 配置
| |-- models # 模型文件夹
| | |-- CouplingBlock.py
| | |-- CouplingOneSide.py
| | |-- Divide_data_model.py
| | |-- Downsample_model.py
| | |-- Permute_data_model.py
| | |-- Unflat_data_model.py
| | |-- conditioning_network.py
| | |-- flat_data_model.py
| | `-- main_model.py
| |-- train.py # 训练代码
| `-- utils # 工具代码
| |-- load_data.py
| |-- plot.py
| `-- plot_samples.py
|-- 3D # 3D模型文件夹
| |-- args.py # 配置
| |-- models # 模型文件夹
| | |-- CouplingBlock_model.py
| | |-- CouplingOneSide_model.py
| | |-- Divide_data_model.py
| | |-- Downsample_model.py
| | |-- Permute_data_model.py
| | |-- Unflat_data_model.py
| | |-- conditioning_network.py
| | |-- flat_data_model.py
| | `-- main_model.py
| |-- train.py # 训练代码
| `-- utils # 工具代码
| |-- error_bars.py
| |-- load_data.py
| `-- plot.py
`-- data # 数据集
|-- 2D_problem_dataset # 2D模型数据集
| |-- Config_2_sample_obs_1pc.hdf5
| |-- Config_2_sample_obs_3pc.hdf5
| |-- Config_2_sample_obs_5pc.hdf5
| |-- Config_2_test_obs_1pc.hdf5
| |-- Config_2_test_obs_3pc.hdf5
| |-- Config_2_test_obs_5pc.hdf5
| |-- Config_2_train_obs_1pc.hdf5
| |-- Config_2_train_obs_3pc.hdf5
| `-- Config_2_train_obs_5pc.hdf5
`-- 3D_problem_dataset # 3D模型数据集
|-- Config_2_sample_obs_1pc_3D.hdf5
|-- Config_2_sample_obs_3pc_3D.hdf5
|-- Config_2_sample_obs_5pc_3D.hdf5
|-- Config_2_test_obs_1pc_3D.hdf5
|-- Config_2_test_obs_3pc_3D.hdf5
|-- Config_2_test_obs_5pc_3D.hdf5
|-- Config_2_train_obs_1pc_3D.hdf5
|-- Config_2_train_obs_3pc_3D.hdf5
`-- Config_2_train_obs_5pc_3D.hdf5
信息 | 说明 |
---|---|
发布者 | 朱卫国 (DrownFish19) |
发布时间 | 2022.10 |
框架版本 | paddle 2.3.2 |
支持硬件 | GPU、CPU |
模型下载链接 | 预训练模型 |
预训练模型训练时间-2D (A40) (6000,8000,10000样本量) | 1.2h,1.6h,2h |
预训练模型训练时间-3D (A40) (6000,8000,10000样本量) | 5.3h,7,0h,8.75h |
aistudio | notebook |