Multi-frequency wavefield solutions for variable velocity models using meta-learning enhanced low-rank physics-informed neural network
Corresponding author: Shijun Cheng (sjcheng.academic@gmail.com)
This repository is organized as follows:
- 📂 metalrpinn: python code containing routines for Meta-LRPINN;
- 📂 asset: folder containing logo;
- 📂 data: folder to store dataset;
- 📂 scripts: set of python scripts for reproducing the meta-train and meta-test examples
To ensure reproducibility, we provide the the data set for meta-train and meta-test stages, and the meta-initialization model for Meta-LRPINN.
-
Meta-training and Meta-testing data set Download the meta-training and meta-testing data set here. Then, extract the contents to
dataset/metatrain/anddataset/metatest/, respectively. -
Meta-initialization model Download the meta-initialization neural network model here. Then, extract the contents to
/checkpoints/metatrain/.
To ensure reproducibility of the results, we suggest using the environment.yml file when creating an environment.
Simply run:
./install_env.sh
It will take some time, if at the end you see the word Done! on your terminal you are ready to go. Activate the environment by typing:
conda activate meta-lrpinn
After that you can simply install your package:
pip install .
or in developer mode:
pip install -e .
When you have downloaded the supplementary files and have installed the environment, you can entry the scripts file folder and run demo. We provide two scripts which are responsible for meta-train and meta-test examples.
For meta-train, you can directly run:
sh run_metatrain.sh
For meta-test, you can directly run:
sh run_metatest.sh
Note: When you run demo for meta-test, you need open the metalrpinn/meta_test.py file to specify the path for meta initialization model. Here, we have provided a meta-initialization model in supplementary file, you can directly load meta-initialization model to perform meta-test.
If you need to compare with a randomly initialized network, you can comment out lines 52 in the metalrpinn/meta_test.py file as follows
# meta.load_state_dict(torch.load(dir_meta, map_location=device))
and then run:
sh run_metatest.sh
Note: We emphasize that the training logs for meta-train and meta-test are saved in the runs/metatrain and runs/metatest file folder, respectively. You can use the tensorboard --logdir=./ or extract the log to view the changes of the metrics as a function of epoch.
Disclaimer: All experiments have been carried on a Intel(R) Xeon(R) CPU @ 2.10GHz equipped with a single NVIDIA GEForce A100 GPU. Different environment
configurations may be required for different combinations of workstation and GPU. Due to the high memory consumption during the meta training phase, if your graphics card does not support large batch task training, please reduce the configuration value of args (args.ntask) in the metalrpinn/meta_train.py file.
@article{chengs2025metalrpinn,
author = {Cheng, Shijun and Alkhalifah, Tariq},
title = {Multi-frequency wavefield solutions for variable velocity models using meta-learning enhanced low-rank physics-informed neural network},
journal = {Geophysical Journal International},
pages = {ggaf417},
year = {2025},
month = {10},
issn = {1365-246X},
doi = {10.1093/gji/ggaf417},
url = {https://doi.org/10.1093/gji/ggaf417},
}