飞桨论文复现挑战赛(第七期)科学计算 Solving inverse problems using conditional invertible neural networks (ID:50)

1.简介

本项目基于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地址:

  • https://github.com/zabaras/inn-surrogate

项目aistudio地址:

  • https://aistudio.baidu.com/aistudio/projectdetail/4756062

2D模型

在这里插入图片描述

3D模型

在这里插入图片描述

2.数据集

数据下载使用

数据集包含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%的噪声。

3.环境依赖

硬件

  • 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

4.快速开始

aistudio

本项目已经构建notebook(同X4Science/INFINITY中相同代码)用于快速实现。具体代码请参考以下notebook,运行中需修改数据路径和结果路径参数请在args中修改。

  • 2D模型:main-2D.ipynb (备注:推荐使用v100 32g计算卡)
  • 3D模型:main-3d.ipynb (备注:推荐使用A40 40g计算卡)

本地运行

cd 2D # or cd 3D
python train.py

5.代码结构与详细说明

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

6.复现结果

原论文2D模型结果

在这里插入图片描述

复现2D模型结果

在这里插入图片描述

原论文3D模型结果

在这里插入图片描述

复现3D模型结果

在这里插入图片描述

7.模型信息

信息说明
发布者朱卫国 (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
aistudionotebook

请点击此处查看本环境基本用法.

Please click here for more detailed instructions.

此文章为搬运
原项目链接

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐