{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial: Learning Multiscale PDEs Using Fourier Feature Networks\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial13/tutorial.ipynb)\n", "\n", "This tutorial demonstrates how to solve a PDE with multiscale behavior using Physics-Informed Neural Networks (PINNs), as discussed in [*On the Eigenvector Bias of Fourier Feature Networks: From Regression to Solving Multi-Scale PDEs with Physics-Informed Neural Networks*](https://doi.org/10.1016/j.cma.2021.113938).\n", "\n", "Let’s begin by importing the necessary libraries.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "## routine needed to run the notebook on Google Colab\n", "try:\n", " import google.colab\n", "\n", " IN_COLAB = True\n", "except:\n", " IN_COLAB = False\n", "if IN_COLAB:\n", " !pip install \"pina-mathlab[tutorial]\"\n", "\n", "import torch\n", "import matplotlib.pyplot as plt\n", "import warnings\n", "\n", "from pina import Condition, Trainer\n", "from pina.problem import SpatialProblem\n", "from pina.solver import PINN, SelfAdaptivePINN as SAPINN\n", "from pina.loss import LpLoss\n", "from pina.domain import CartesianDomain\n", "from pina.equation import FixedValue, Poisson\n", "from pina.model import FeedForward\n", "from pina.model.block import FourierFeatureEmbedding\n", "\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiscale Problem\n", "\n", "We begin by presenting the problem, which is also discussed in Section 2 of [*On the Eigenvector Bias of Fourier Feature Networks: From Regression to Solving Multi-Scale PDEs with Physics-Informed Neural Networks*](https://doi.org/10.1016/j.cma.2021.113938). The one-dimensional Poisson problem we aim to solve is mathematically defined as:\n", "\n", "\\begin{equation}\n", "\\begin{cases}\n", "\\Delta u(x) + f(x) = 0 \\quad x \\in [0,1], \\\\\n", "u(x) = 0 \\quad x \\in \\partial[0,1],\n", "\\end{cases}\n", "\\end{equation}\n", "\n", "We define the solution as:\n", "\n", "$$\n", "u(x) = \\sin(2\\pi x) + 0.1 \\sin(50\\pi x),\n", "$$\n", "\n", "which leads to the corresponding force term:\n", "\n", "$$\n", "f(x) = (2\\pi)^2 \\sin(2\\pi x) + 0.1 (50 \\pi)^2 \\sin(50\\pi x).\n", "$$\n", "\n", "While this example is simple and pedagogical, it's important to note that the solution exhibits low-frequency behavior in the macro-scale and high-frequency behavior in the micro-scale. This characteristic is common in many practical scenarios.\n", "\n", "Below is the implementation of the `Poisson` problem as described mathematically above.\n", "> **👉 We have a dedicated [tutorial](https://mathlab.github.io/PINA/tutorial16/tutorial.html) to teach how to build a Problem from scratch — have a look if you're interested!**" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def forcing_term(x):\n", " return -(\n", " ((2 * torch.pi) ** 2) * torch.sin(2 * torch.pi * x)\n", " + 0.1 * ((50 * torch.pi) ** 2) * torch.sin(50 * torch.pi * x)\n", " )\n", "\n", "\n", "poisson_equation = Poisson(forcing_term=forcing_term)\n", "\n", "\n", "class Poisson(SpatialProblem):\n", " output_variables = [\"u\"]\n", " spatial_domain = CartesianDomain({\"x\": [0.0, 1.0]})\n", "\n", " domains = {\n", " \"boundary\": spatial_domain.partial(),\n", " \"phys_cond\": spatial_domain,\n", " }\n", "\n", " # here we write the problem conditions\n", " conditions = {\n", " \"boundary\": Condition(domain=\"boundary\", equation=FixedValue(0.0)),\n", " \"phys_cond\": Condition(domain=\"phys_cond\", equation=poisson_equation),\n", " }\n", "\n", " def solution(self, x):\n", " return torch.sin(2 * torch.pi * x) + 0.1 * torch.sin(50 * torch.pi * x)\n", "\n", "\n", "problem = Poisson()\n", "\n", "# let's discretise the domain\n", "problem.discretise_domain(128, \"grid\", domains=\"phys_cond\")\n", "problem.discretise_domain(2, \"grid\", domains=\"boundary\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A standard PINN approach would involve fitting the model using a Feed Forward (fully connected) Neural Network. For a conventional fully-connected neural network, it is relatively easy to approximate a function $u$, given sufficient data inside the computational domain. \n", "\n", "However, solving high-frequency or multi-scale problems presents significant challenges to PINNs, especially when the number of data points is insufficient to capture the different scales effectively.\n", "\n", "Below, we run a simulation using both the `PINN` solver and the self-adaptive `SAPINN` solver, employing a [`FeedForward`](https://mathlab.github.io/PINA/_modules/pina/model/feed_forward.html#FeedForward) model.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# training with PINN and visualize results\n", "pinn = PINN(\n", " problem=problem,\n", " model=FeedForward(\n", " input_dimensions=1, output_dimensions=1, layers=[100, 100, 100]\n", " ),\n", ")\n", "\n", "trainer = Trainer(\n", " pinn,\n", " max_epochs=1500,\n", " accelerator=\"cpu\",\n", " enable_model_summary=False,\n", " val_size=0.0,\n", " train_size=1.0,\n", " test_size=0.0,\n", ")\n", "trainer.train()\n", "\n", "# training with PINN and visualize results\n", "sapinn = SAPINN(\n", " problem=problem,\n", " model=FeedForward(\n", " input_dimensions=1, output_dimensions=1, layers=[100, 100, 100]\n", " ),\n", ")\n", "trainer_sapinn = Trainer(\n", " sapinn,\n", " max_epochs=1500,\n", " accelerator=\"cpu\",\n", " enable_model_summary=False,\n", " val_size=0.0,\n", " train_size=1.0,\n", " test_size=0.0,\n", ")\n", "trainer_sapinn.train()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# define the function to plot the solution obtained using matplotlib\n", "def plot_solution(pinn_to_use, title):\n", " pts = pinn_to_use.problem.spatial_domain.sample(256, \"grid\", variables=\"x\")\n", " predicted_output = pinn_to_use(pts).extract(\"u\").tensor.detach()\n", " true_output = pinn_to_use.problem.solution(pts).detach()\n", " plt.plot(\n", " pts.extract([\"x\"]), predicted_output, label=\"Neural Network solution\"\n", " )\n", " plt.plot(pts.extract([\"x\"]), true_output, label=\"True solution\")\n", " plt.title(title)\n", " plt.legend()\n", "\n", "\n", "# plot the solution of the two PINNs\n", "plot_solution(pinn, \"PINN solution\")\n", "plt.figure()\n", "plot_solution(sapinn, \"Self Adaptive PINN solution\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can clearly observe that neither of the two solvers has successfully learned the solution. \n", "The issue is not with the optimization strategy (i.e., the solver), but rather with the model used to solve the problem. \n", "A simple `FeedForward` network struggles to handle multiscale problems, especially when there are not enough collocation points to capture the different scales effectively.\n", "\n", "Next, let's compute the $l_2$ relative error for both the `PINN` and `SAPINN` solutions:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Relative l2 error PINN 3143.01%\n", "Relative l2 error SAPINN 3091.39%\n" ] } ], "source": [ "# l2 loss from PINA losses\n", "l2_loss = LpLoss(p=2, relative=False)\n", "\n", "# sample new test points\n", "pts = pts = problem.spatial_domain.sample(100, \"grid\")\n", "print(\n", " f\"Relative l2 error PINN {l2_loss(pinn(pts), problem.solution(pts)).item():.2%}\"\n", ")\n", "print(\n", " f\"Relative l2 error SAPINN {l2_loss(sapinn(pts), problem.solution(pts)).item():.2%}\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which is indeed very high!\n", "\n", "## Fourier Feature Embedding in PINA\n", "Fourier Feature Embedding is a technique used to transform the input features, aiding the network in learning multiscale variations in the output. It was first introduced in [*On the Eigenvector Bias of Fourier Feature Networks: From Regression to Solving Multi-Scale PDEs with Physics-Informed Neural Networks*](https://doi.org/10.1016/j.cma.2021.113938), where it demonstrated excellent results for multiscale problems.\n", "\n", "The core idea behind Fourier Feature Embedding is to map the input $\\mathbf{x}$ into an embedding $\\tilde{\\mathbf{x}}$, defined as:\n", "\n", "$$\n", "\\tilde{\\mathbf{x}} = \\left[\\cos\\left( \\mathbf{B} \\mathbf{x} \\right), \\sin\\left( \\mathbf{B} \\mathbf{x} \\right)\\right],\n", "$$\n", "\n", "where $\\mathbf{B}_{ij} \\sim \\mathcal{N}(0, \\sigma^2)$. This simple operation allows the network to learn across multiple scales!\n", "\n", "In **PINA**, we have already implemented this feature as a `layer` called [`FourierFeatureEmbedding`](https://mathlab.github.io/PINA/_rst/layers/fourier_embedding.html). Below, we will build the *Multi-scale Fourier Feature Architecture*. In this architecture, multiple Fourier feature embeddings (initialized with different $\\sigma$ values) are applied to the input coordinates. These embeddings are then passed through the same fully-connected neural network, and the outputs are concatenated with a final linear layer.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "class MultiscaleFourierNet(torch.nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", " self.embedding1 = FourierFeatureEmbedding(\n", " input_dimension=1, output_dimension=100, sigma=1\n", " )\n", " self.embedding2 = FourierFeatureEmbedding(\n", " input_dimension=1, output_dimension=100, sigma=10\n", " )\n", " self.layers = FeedForward(\n", " input_dimensions=100, output_dimensions=100, layers=[100]\n", " )\n", " self.final_layer = torch.nn.Linear(2 * 100, 1)\n", "\n", " def forward(self, x):\n", " e1 = self.layers(self.embedding1(x))\n", " e2 = self.layers(self.embedding2(x))\n", " return self.final_layer(torch.cat([e1, e2], dim=-1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will train the `MultiscaleFourierNet` using the `PINN` solver. \n", "Feel free to experiment with other PINN variants as well, such as `SAPINN`, `GPINN`, `CompetitivePINN`, and others, to see how they perform on this multiscale problem." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "multiscale_pinn = PINN(problem=problem, model=MultiscaleFourierNet())\n", "trainer = Trainer(\n", " multiscale_pinn,\n", " max_epochs=1500,\n", " accelerator=\"cpu\",\n", " enable_model_summary=False,\n", " val_size=0.0,\n", " train_size=1.0,\n", " test_size=0.0,\n", ")\n", "trainer.train()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now plot the solution and compute the relative $l_2$ again!" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Relative l2 error PINN with MultiscaleFourierNet: 2.47%\n" ] }, { "data": { "image/png": "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+ef32C4qKgq9Xs+6deusrr/00kv9eh03N7d+7ZpaXV3d5RduSkoKgGXq6NJLL0VVVR555JEu/Tv7dv6VffRz1dbW8sYbb/QZw+WXX05hYWG3G6I1NzfT2NjY53OcTEcnI/1xdMLzxRdf9NneaDR2mUYLDAwkNDTU8jWfNm0agYGBvPzyy1ZTeN9++y2pqamce+65PT6/p6cn/v7+/frecXNzA7omOt0555xz2Lp1K5s2bbJca2xs5JVXXiE6OpqxY8f2+RxC2JtMGwlxnPqz66uXlxe/+tWv+Mc//oGiKMTFxfHVV1/1q/4DYOrUqfz4448888wzhIaGEhMTw8yZM7u0W7lyJS+99BIXX3wxcXFx1NfX8+qrr+Lp6ck555wDwOmnn861117LCy+8QEZGBosWLcJkMvHLL79w+umns3z5cs4++2ycnJw4//zz+fWvf01DQwOvvvoqgYGBFBcX9xrrtddeywcffMCtt97Kzz//zJw5czAajaSlpfHBBx/w/fffW5Zj24Jer+ePf/wjN9xwQ7/7dE437d69u8+29fX1hIeHc9lllzFp0iTc3d358ccf2bZtG08//TQAjo6OPPnkk9xwww3MmzePq666yrJUOjo6mjvvvLPX17j55pv561//ys0338y0adNYt24d6enpXdpNnToVgD/+8Y9ceeWVODo6cv7551uSmqPdd999lqX+K1aswNfXl5UrV5Kdnc3HH3+MTid/04qhT5IXIQbZP/7xD9rb23n55ZcxGAxcfvnlPPXUU4wfP77Pvs888wy33HILDzzwAM3NzVx//fXdJi/z5s1j69atvPfee5SWluLl5cWMGTN45513iImJsbR74403mDhxIq+99hq///3v8fLyYtq0acyePRvQCks/+ugjHnjgAe6++26Cg4O57bbbCAgI6LLh3bF0Oh2fffYZzz77LG+99Raffvoprq6uxMbG8rvf/c5SuGtLS5Ys4c9//rNlr5i+ODg48MADD/Qr4XF1deX222/nhx9+4JNPPsFkMhEfH89LL73EbbfdZmm3dOlSXF1d+etf/8q9996Lm5sbF198MU8++WSfe7w8+OCDlJeX89FHH/HBBx+wePFivv32WwIDA63aTZ8+nccee4yXX36Z7777DpPJRHZ2drfJS1BQEBs3buTee+/lH//4By0tLUycOJEvv/yy15EgIYYS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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot solution obtained\n", "plot_solution(multiscale_pinn, \"Multiscale PINN solution\")\n", "\n", "# sample new test points\n", "pts = pts = problem.spatial_domain.sample(100, \"grid\")\n", "print(\n", " f\"Relative l2 error PINN with MultiscaleFourierNet: {l2_loss(multiscale_pinn(pts), problem.solution(pts)).item():.2%}\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is clear that the network has learned the correct solution, with a very low error. Of course, longer training and a more expressive neural network could further improve the results!\n", "\n", "## What's Next?\n", "\n", "Congratulations on completing the one-dimensional Poisson tutorial of **PINA** using `FourierFeatureEmbedding`! There are many potential next steps you can explore:\n", "\n", "1. **Train the network longer or with different layer sizes**: Experiment with different configurations to improve accuracy.\n", "\n", "2. **Understand the role of `sigma` in `FourierFeatureEmbedding`**: The original paper provides insightful details on the impact of `sigma`. It's a good next step to dive deeper into its effect.\n", "\n", "3. **Implement the *Spatio-temporal Multi-scale Fourier Feature Architecture***: Code this architecture for a more complex, time-dependent PDE (refer to Section 3 of the original paper).\n", "\n", "4. **...and many more!**: There are countless directions to further explore, from testing on different problems to refining the model architecture.\n", "\n", "For more resources and tutorials, check out the [PINA Documentation](https://mathlab.github.io/PINA/)." ] } ], "metadata": { "kernelspec": { "display_name": "deep", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.11" } }, "nbformat": 4, "nbformat_minor": 2 }