Skip to content

DrownFish19/inn-surrogate-paddle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

飞桨论文复现挑战赛(第七期)科学计算 (ID:50 inn-surrogate)

English | 简体中文

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地址:

项目aistudio地址:

2D模型

3D模型

2.数据集

数据下载使用

数据集包含2D数据和3D数据,可通过此处链接进行下载。

数据集aistudio地址:

本项目已经关联以上数据集,可直接在项目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
aistudio notebook

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages