Skip to content

skoohy/FNO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Fourier Neural Operators: Hyperparameter Optimization and Autoregressive Time Step Prediction

Project for ENM 5310 Data-driven Modeling and Probabilistic Scientific Computing Fall 2024

Shawn Koohy1

Abstract:

Fourier Neural Operators (FNOs) are a powerful tool for learning mappings between infinite-dimensional function spaces, offering efficiency and resolution invariance for solving partial differential equations (PDEs). This paper explores the application of FNOs on two benchmark problems: the Burgers' equation and the Korteweg–De Vries (KdV) equation. For the Burgers' equation, we conduct an extensive hyperparameter optimization study to minimize the $L^2$ error and loss allowing the model to achieve high accuracy across all examples. For the KdV equation, we extend the FNO framework to an autoregressive setting, predicting multiple future time steps based on previous predictions. Our results demonstrate the effectiveness and expressivity of FNOs, achieving an average $L^2$ error of $0.0016$ for Burgers' and $0.08$ for KdV. This showcases the potential of FNOs to solve complex PDE systems in a wide range of applications..

1 Department of Mechanical Engineering and Applied Mechanics University of Pennsylvania Philadelphia, PA 19014, USA

Running the code

Each directory Burgers and KdV contain a notebook directory including a main.ipynb and results.ipynb file. The main.ipynb is an adaptation of the main.py file found in the same parent directory suitable for Google Colab. To log our results we use Weights & Biases, results can be found in the results.ipynb files. To run our code through the terminal follow the next steps.

Clone the repository:

git clone https://github.com/skoohy/FNO.git

Navigate to the desired directory such as:

cd FNO/Burgers

To train the model with a specific model configuration use:

python main.py --config=configs/defaults.py

To perform a hyper-parameter sweep use (not applicable for KdV):

python sweep.py --config=configs/defaults.py

Burgers' Example

Image 1

KdV Example

Image 2