661 lines
165 KiB
Plaintext
Vendored
661 lines
165 KiB
Plaintext
Vendored
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "de19422d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Tutorial: Two dimensional Poisson problem using Extra Features Learning\n",
|
|
"\n",
|
|
"[](https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial2/tutorial.ipynb)\n",
|
|
"\n",
|
|
"This tutorial presents how to solve with Physics-Informed Neural Networks (PINNs) a 2D Poisson problem with Dirichlet boundary conditions. We will train with standard PINN's training, and with extrafeatures. For more insights on extrafeature learning please read [*An extended physics informed neural network for preliminary analysis of parametric optimal control problems*](https://www.sciencedirect.com/science/article/abs/pii/S0898122123002018).\n",
|
|
"\n",
|
|
"First of all, some useful imports."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "ad0b8dd7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"## routine needed to run the notebook on Google Colab\n",
|
|
"try:\n",
|
|
" import google.colab\n",
|
|
" IN_COLAB = True\n",
|
|
"except:\n",
|
|
" IN_COLAB = False\n",
|
|
"if IN_COLAB:\n",
|
|
" !pip install \"pina-mathlab\"\n",
|
|
"\n",
|
|
"import torch\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import warnings\n",
|
|
"\n",
|
|
"from pina.problem import SpatialProblem\n",
|
|
"from pina.operator import laplacian\n",
|
|
"from pina.model import FeedForward\n",
|
|
"from pina.solver import PINN\n",
|
|
"from pina.trainer import Trainer\n",
|
|
"from pina.domain import CartesianDomain\n",
|
|
"from pina.equation import Equation, FixedValue\n",
|
|
"from pina import Condition, LabelTensor\n",
|
|
"from torch.nn import Softplus\n",
|
|
"from lightning.pytorch.loggers import TensorBoardLogger\n",
|
|
"\n",
|
|
"warnings.filterwarnings('ignore')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "492a37b4",
|
|
"metadata": {},
|
|
"source": [
|
|
"## The problem definition"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2c0b1777",
|
|
"metadata": {},
|
|
"source": [
|
|
"The two-dimensional Poisson problem is mathematically written as:\n",
|
|
"\\begin{equation}\n",
|
|
"\\begin{cases}\n",
|
|
"\\Delta u = \\sin{(\\pi x)} \\sin{(\\pi y)} \\text{ in } D, \\\\\n",
|
|
"u = 0 \\text{ on } \\Gamma_1 \\cup \\Gamma_2 \\cup \\Gamma_3 \\cup \\Gamma_4,\n",
|
|
"\\end{cases}\n",
|
|
"\\end{equation}\n",
|
|
"where $D$ is a square domain $[0,1]^2$, and $\\Gamma_i$, with $i=1,...,4$, are the boundaries of the square.\n",
|
|
"\n",
|
|
"The Poisson problem is written in **PINA** code as a class. The equations are written as *conditions* that should be satisfied in the corresponding domains. The *truth_solution*\n",
|
|
"is the exact solution which will be compared with the predicted one."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "82c24040",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Poisson(SpatialProblem):\n",
|
|
" output_variables = ['u']\n",
|
|
" spatial_domain = CartesianDomain({'x': [0, 1], 'y': [0, 1]})\n",
|
|
"\n",
|
|
" def laplace_equation(input_, output_):\n",
|
|
" force_term = (torch.sin(input_.extract(['x'])*torch.pi) *\n",
|
|
" torch.sin(input_.extract(['y'])*torch.pi))\n",
|
|
" laplacian_u = laplacian(output_, input_, components=['u'], d=['x', 'y'])\n",
|
|
" return laplacian_u - force_term\n",
|
|
"\n",
|
|
" # here we write the problem conditions\n",
|
|
" conditions = {\n",
|
|
" 'bound_cond1': Condition(domain=CartesianDomain({'x': [0, 1], 'y': 1}), equation=FixedValue(0.)),\n",
|
|
" 'bound_cond2': Condition(domain=CartesianDomain({'x': [0, 1], 'y': 0}), equation=FixedValue(0.)),\n",
|
|
" 'bound_cond3': Condition(domain=CartesianDomain({'x': 1, 'y': [0, 1]}), equation=FixedValue(0.)),\n",
|
|
" 'bound_cond4': Condition(domain=CartesianDomain({'x': 0, 'y': [0, 1]}), equation=FixedValue(0.)),\n",
|
|
" 'phys_cond': Condition(domain=CartesianDomain({'x': [0, 1], 'y': [0, 1]}), equation=Equation(laplace_equation)),\n",
|
|
" }\n",
|
|
"\n",
|
|
" def poisson_sol(self, pts):\n",
|
|
" return -(\n",
|
|
" torch.sin(pts.extract(['x'])*torch.pi)*\n",
|
|
" torch.sin(pts.extract(['y'])*torch.pi)\n",
|
|
" )/(2*torch.pi**2)\n",
|
|
" \n",
|
|
" truth_solution = poisson_sol\n",
|
|
"\n",
|
|
"problem = Poisson()\n",
|
|
"\n",
|
|
"# let's discretise the domain\n",
|
|
"problem.discretise_domain(25, 'grid', domains=['phys_cond'])\n",
|
|
"problem.discretise_domain(25, 'grid', domains=['bound_cond1', 'bound_cond2', 'bound_cond3', 'bound_cond4'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7086c64d",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Solving the problem with standard PINNs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "72ba4501",
|
|
"metadata": {},
|
|
"source": [
|
|
"After the problem, the feed-forward neural network is defined, through the class `FeedForward`. This neural network takes as input the coordinates (in this case $x$ and $y$) and provides the unkwown field of the Poisson problem. The residual of the equations are evaluated at several sampling points (which the user can manipulate using the method `CartesianDomain_pts`) and the loss minimized by the neural network is the sum of the residuals.\n",
|
|
"\n",
|
|
"In this tutorial, the neural network is composed by two hidden layers of 10 neurons each, and it is trained for 1000 epochs with a learning rate of 0.006 and $l_2$ weight regularization set to $10^{-8}$. These parameters can be modified as desired. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "e7d20d6d",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"GPU available: False, used: False\n",
|
|
"TPU available: False, using: 0 TPU cores\n",
|
|
"HPU available: False, using: 0 HPUs\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 50.81it/s, v_num=0, bound_cond1_loss=4.33e-5, bound_cond2_loss=2.48e-5, bound_cond3_loss=3.99e-5, bound_cond4_loss=4.9e-5, phys_cond_loss=0.000609, train_loss=0.000766] "
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"`Trainer.fit` stopped: `max_epochs=1000` reached.\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 38.58it/s, v_num=0, bound_cond1_loss=4.33e-5, bound_cond2_loss=2.48e-5, bound_cond3_loss=3.99e-5, bound_cond4_loss=4.9e-5, phys_cond_loss=0.000609, train_loss=0.000766]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# make model + solver + trainer\n",
|
|
"from pina.optim import TorchOptimizer\n",
|
|
"model = FeedForward(\n",
|
|
" layers=[10, 10],\n",
|
|
" func=Softplus,\n",
|
|
" output_dimensions=len(problem.output_variables),\n",
|
|
" input_dimensions=len(problem.input_variables)\n",
|
|
")\n",
|
|
"pinn = PINN(problem, model, optimizer=TorchOptimizer(torch.optim.Adam, lr=0.006,weight_decay=1e-8))\n",
|
|
"trainer = Trainer(pinn, max_epochs=1000, accelerator='cpu', enable_model_summary=False, # we train on CPU and avoid model summary at beginning of training (optional)\n",
|
|
" train_size=1.0,\n",
|
|
" val_size=0.0,\n",
|
|
" test_size=0.0,\n",
|
|
" logger=TensorBoardLogger(\"tutorial_logs\")\n",
|
|
") \n",
|
|
"\n",
|
|
"# train\n",
|
|
"trainer.train()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "eb83cc7a",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now we plot the results using `matplotlib`.\n",
|
|
"The solution predicted by the neural network is plotted on the left, the exact one is represented at the center and on the right the error between the exact and the predicted solutions is showed. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "1ab83c03",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"@torch.no_grad()\n",
|
|
"def plot_solution(solver):\n",
|
|
" # get the problem\n",
|
|
" problem = solver.problem\n",
|
|
" # get spatial points\n",
|
|
" spatial_samples = problem.spatial_domain.sample(30, \"grid\")\n",
|
|
" # compute pinn solution, true solution and absolute difference\n",
|
|
" data = {\n",
|
|
" \"PINN solution\": solver(spatial_samples),\n",
|
|
" \"True solution\": problem.truth_solution(spatial_samples),\n",
|
|
" \"Absolute Difference\": torch.abs(\n",
|
|
" solver(spatial_samples) - problem.truth_solution(spatial_samples)\n",
|
|
" )\n",
|
|
" }\n",
|
|
" # plot the solution\n",
|
|
" for idx, (title, field) in enumerate(data.items()):\n",
|
|
" plt.subplot(1, 3, idx + 1)\n",
|
|
" plt.title(title)\n",
|
|
" plt.tricontourf( # convert to torch tensor + flatten\n",
|
|
" spatial_samples.extract(\"x\").tensor.flatten(),\n",
|
|
" spatial_samples.extract(\"y\").tensor.flatten(),\n",
|
|
" field.tensor.flatten(),\n",
|
|
" )\n",
|
|
" plt.colorbar(), plt.tight_layout()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "7db10610",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKgAAAJNCAYAAAAVhE0uAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA5KBJREFUeJzs3XtcVGXiP/APF4eLOCByGVEUNAtM00JF0rIUxTSTjUrNzUuo5YqZuLZaBqaVW3lXjC3vm64u5pqai5Gk7ipiovZNU7TUUGlQY7ka9/P7wx8nRwaYgZk5l/m8X695lWeec+Y5Z4bzzPnM8zzHQRAEAURERERERERERBJxlLoCRERERERERERk3xhQERERERERERGRpBhQERERERERERGRpBhQERERERERERGRpBhQERERERERERGRpBhQERERERERERGRpBhQERERERERERGRpBhQERERERERERGRpBhQERERERERERGRpBhQkaIdPHgQDg4OOHjwoEW3O2HCBAQFBVl0m0REZHtBQUGYMGGCRbdprbaHiMgSrly5AgcHByxevNimr6uW78/G9qOkpASTJk2CTqeDg4MDXn/9dQBAXl4ennvuObRp0wYODg5Yvny5zetLpCYMqBRu48aNcHBwEB+urq64//77ERcXh7y8PLFc7ZfpHTt21FnX1dUV169fr7PtJ554At26dTNYFhQUBAcHB0yfPr1OeWOvIWe5ubmYP38+Tp8+LXVViIhs4u72oqEHg5c71qxZg40bN0pdDSIiA2vWrIGDgwPCw8OlrorF7Nu3D/Pnz7f4dufPn2/Qvrm7u6NDhw4YMWIENmzYgPLycpO28/7772Pjxo2YOnUq/v73v+Oll14CAMycORP79+/H3Llz8fe//x1Dhw61+D4Q2RNnqStAlrFgwQIEBwejrKwM//3vf/Hxxx9j3759OHPmDNzd3Rtct7y8HH/961+xatUqk1/v008/xdy5cxEQENDcqksmNzcX77zzDoKCgtCzZ0+D5z799FPU1NRIUzEiIiv5+9//bvDvzZs3Iy0trc7y0NBQW1ZLttasWQMfH586PbAef/xx/Pbbb9BoNNJUjIjs2pYtWxAUFITjx4/jxx9/xH333Sd1lZpt3759SEpKskpIBQAff/wxPDw8UF5ejuvXr2P//v14+eWXsXz5cuzduxeBgYFiWWPXAenp6ejbty8SExPrLB85ciT+/Oc/W6XeRPaGAZVKPPXUU+jVqxcAYNKkSWjTpg2WLl2KL774AmPGjGlw3Z49e5oVOD344IPIzs7GX//6V6xcudIi9ZebFi1aSF0FIiKL++Mf/2jw72PHjiEtLa3O8nvdvn270R877ImjoyNcXV2lrgYR2aHLly/j6NGj2LlzJ1555RVs2bKlTmhCdT333HPw8fER/52QkIAtW7Zg3LhxeP7553Hs2DHxOWPXATdu3EDXrl2NLvfy8rJYPauqqlBTU8MfQMhucYifSg0cOBDAnUasMW+++Saqq6vx17/+1aRtBwUFYdy4cfj000+Rm5vbpPqtWrUKDz74INzd3dG6dWv06tULW7duNShz6tQpPPXUU9BqtfDw8MCgQYMMGo+G6mdsvpEnnngCTzzxBIA7wxF79+4NAJg4caLY7bd2KIexseelpaWYNWsWAgMD4eLiggceeACLFy+GIAgG5RwcHBAXF4ddu3ahW7ducHFxwYMPPojU1FTTDg4RkYRqh3dnZWXh8ccfh7u7O958800Ad85vxn7dNnbeLSgowOuvvy6eM++77z588MEHJvVOPXHiBKKiouDj4wM3NzcEBwfj5ZdfNihj6jn5XrXDPe5VO+z9ypUr4j6dPXsWhw4dEtuIu9sQY0MhU1JSEBYWBjc3N/j4+OCPf/xjnSH0EyZMgIeHB65fv47o6Gh4eHjA19cXf/7zn1FdXd3osSEi+7Zlyxa0bt0aw4cPx3PPPYctW7Y0WH7ZsmXo2LEj3NzcMGDAAJw5c8bgeb1ej4kTJ6J9+/ZwcXFB27ZtMXLkSPFcWGvNmjV48MEH4eLigoCAAEybNg0FBQUNvnZ958raObLu/t6dlJQEwHAoeq2amhosX74cDz74IFxdXeHv749XXnkF//vf/xp8/caMHTsWkyZNQmZmJtLS0sTld18H1O7D5cuX8eWXXxpcMzg4OEAQBCQlJdWpsylt4N1zhS1fvhydO3eGi4sLfvjhBwDA+fPn8dxzz8Hb2xuurq7o1asXdu/ebbAPtfU4cuQI4uPj4evri5YtW+IPf/gDbt68WWef//3vf2PAgAFo1aoVtFotevfuXecaLDMzE0OHDoWnpyfc3d0xYMAAHDlypFnHmshU7EGlUj/99BMAoE2bNo2WDQ4OFgOnOXPmmNSL6q233sLmzZub1Ivq008/xWuvvYbnnnsOM2bMQFlZGf7v//4PmZmZePHFFwEAZ8+exWOPPQatVos33ngDLVq0wN/+9jc88cQTOHToULPH3IeGhmLBggVISEjAlClT8NhjjwEAHn30UaPlBUHAM888g2+++QaxsbHo2bMn9u/fj9mzZ+P69etYtmyZQfn//ve/2LlzJ/70pz+hVatWWLlyJWJiYpCTk2PSe0JEJKVff/0VTz31FEaPHo0//vGP8Pf3N2v927dvY8CAAbh+/TpeeeUVdOjQAUePHsXcuXPxyy+/NDiJ7I0bNzBkyBD4+vpizpw58PLywpUrV7Bz506xjLnn5KZYvnw5pk+fDg8PD7z11lsA0OBx2LhxIyZOnIjevXtj0aJFyMvLw4oVK3DkyBGcOnXK4Bf26upqREVFITw8HIsXL8bXX3+NJUuWoHPnzpg6dWqz605E6rVlyxY8++yz0Gg0GDNmDD7++GN8++234g+vd9u8eTOKi4sxbdo0lJWVYcWKFRg4cCC+//578XwWExODs2fPYvr06QgKCsKNGzeQlpaGnJwcMaSZP38+3nnnHURGRmLq1KnIzs4WX/fIkSPNHnnwyiuvIDc31+iQ89rna8+xr732Gi5fvozVq1fj1KlTzX79l156CZ988gm++uorDB48uM7zoaGh+Pvf/46ZM2eiffv2mDVrFgDg4YcfFueiGjx4MMaNGyeuY24buGHDBpSVlWHKlClwcXGBt7c3zp49i379+qFdu3aYM2cOWrZsiX/+85+Ijo7G559/jj/84Q8G25g+fTpat26NxMREXLlyBcuXL0dcXBy2b98ultm4cSNefvllPPjgg5g7dy68vLxw6tQppKamitdg6enpeOqppxAWFobExEQ4Ojpiw4YNGDhwIP7zn/+gT58+TT7WRCYRSNE2bNggABC+/vpr4ebNm8LVq1eFbdu2CW3atBHc3NyEa9euCYIgCN98840AQEhJSamz7rfffiv89NNPgrOzs/Daa6+Jzw8YMEB48MEHDV6vY8eOwvDhwwVBEISJEycKrq6uQm5ubr2vYczIkSPrbPde0dHRgkajEX766SdxWW5urtCqVSvh8ccfF5fVvuY333xjUMfx48fX2eaAAQOEAQMGiP/+9ttvBQDChg0b6pQdP3680LFjR/Hfu3btEgAI7777rkG55557TnBwcBB+/PFHcRkA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iNCiRQvB399fmDp1qvC///3PoIyx7883b94UYmJiBHd3d6F169bCK6+8Ipw5c8bge7cgCEJVVZUwffp0wdfXV3BwcKhzPvzkk0+EsLAwwc3NTWjVqpXQvXt34Y033hByc3MbPHa159bah6urq9C+fXvh6aefFtavXy+UlZXVWcfYftR3DVTf935T2sC73ydjfvrpJ2HcuHGCTqcTWrRoIbRr1054+umnhR07dohl6rueq6+d2r17t/Doo48Kbm5uglarFfr06SP84x//MChz6tQp4dlnnxWv1Tp27Ci88MILwoEDB4zWk8iSHASBszYTEREREREREZF0OAcVERERERERERFJigEVERERERERERFJigEVERERERERERFJyuyA6vDhwxgxYgQCAgLg4OCAXbt2NbrOwYMH8cgjj8DFxQX33XcfNm7c2ISqEhEpT1JSEoKCguDq6orw8HAcP368wfIpKSkICQmBq6srunfvjn379hk8LwgCEhIS0LZtW7i5uSEyMhIXL140KHPhwgWMHDkSPj4+0Gq16N+/P7755huL71tj2F4QEZmO7QXbCyIiU1i6vdi5cyeGDBmCNm3awMHBAadPnzZ4Pj8/H9OnT8cDDzwANzc3dOjQAa+99hoKCwsNyuXk5GD48OFwd3eHn58fZs+ejaqqKrP2zeyAqrS0FD169EBSUpJJ5S9fvozhw4fjySefxOnTp/H6669j0qRJ2L9/v7kvTUSkKNu3b0d8fDwSExNx8uRJ9OjRA1FRUUZvrwwAR48exZgxYxAbG4tTp04hOjoa0dHROHPmjFjmww8/xMqVK5GcnIzMzEy0bNkSUVFRKCsrE8s8/fTTqKqqQnp6OrKystCjRw88/fTT0Ov1Vt/nu7G9ICIyDdsLthdERKawRntRWlqK/v3744MPPjC6jdzcXOTm5mLx4sU4c+YMNm7ciNTUVMTGxoplqqurMXz4cFRUVODo0aPYtGkTNm7ciISEBLP2r1l38XNwcMC//vUvREdH11vmL3/5C7788kuDAzB69GgUFBQgNTXV6Drl5eUoLy8X/11TU4P8/Hwx0SMi9RAEAcXFxQgICICjY9NGHZeVlaGiosLCNatLEIQ65yAXFxe4uLgYLR8eHo7evXtj9erVAO6cywIDAzF9+nTMmTOnTvlRo0ahtLQUe/fuFZf17dsXPXv2RHJyMgRB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Y2G1Wh22qaiowI4dO+zbtGT8sdls2LJlC6qrqx1e55prrmnx9D4AcGmRdCGEWLNmjfD19RXvvfee2Lt3r5gwYYIIDg4WpaWl9sWxpk+fbt9+69atwsfHR7z22muioKBApKeni7Zt24rdu3e3+DXPnz8v0tPTxfnz511trjSM0Ach2A/ZGKEfRuhDaw0aNEjcdNNNYseOHeLbb78VV111lRg5cqT954cOHRLXXHON2LFjh/25xx9/XERHR4ucnBzx73//W9hsNmGz2RyOe++994rrrrtObN26VezevVvcdddd4tprrxVVVVVO2+HJRdKF4HjhLiP0QQj2QzZG6IcR+tBaSowXX3zxhXjnnXfE7t27xc8//yyWLl0q/P39xaxZs+zbnDp1SnTp0kUMGzZM7NmzR3z99dfiqquuEo899phH+sXxwj1G6IMQ7IdsjNAPI/ShMUp8Xs6bN08EBweL//mf/xE//PCDuPfee0VsbKw4d+6cfZvmxp/y8nIRHh4uHnnkEfHjjz+KNWvWCH9/f/GPf/zDpf65HFAJIcRbb70loqOjhcViEb179xbbt2+3/+zPf/6zePTRRx22/+ijj8TVV18tLBaLuO6668S6devceVkiIkM6fvy4GDlypAgICBCBgYFi7Nix4tSpU/af79+/XwAQmzZtsj937tw5MXHiRNGhQwfh7+8v7rvvPnHkyBGH4548eVKMGzdOBAcHi5CQEHHfffc1+Ba/+jwdUAnB8YKIyJOUGC/+3//7f6Jnz54iICBAXHHFFeLGG28Uy5cvFxcuXHB47YKCApGUlCTatWsnunTpItLS0jzyLX51OF4QEbWMpz8va2trxQsvvCDCw8OFr6+vGDhwoCgqKnLYprnxRwgh/vOf/4h+/foJX19f0blzZzFv3jyX++YlhBAtr7ciIiIiIiIiIiLyLPeXtSciIiIiIiIiIvIABlRERERERERERKQpBlRERERERERERKQpBlRERERERERERKQpaQKqjIwMxMTEwM/PD4mJidi5c2eT269duxZxcXHw8/PDDTfcgPXr16vU0sa50od33nkH/fv3R4cOHdChQwckJSU122e1uPpe1FmzZg28vLwwZMgQZRvYQq72o7y8HJMmTUJERAR8fX1x9dVXa35dudqHN954A9dccw3atWuHqKgoTJkyBefPn1eptc5t2bIFd999NyIjI+Hl5YXPP/+82X02b96Mm2++Gb6+vrjyyivx3nvvKd5O0g+OFxwvPI3jBccLMiaOFxwvPI3jBccLUpjL3/ungDVr1giLxSLeffddsWfPHjF+/HgRHBwsysrKnG6/detW0aZNGzF//nyxd+9e8fzzz4u2bduK3bt3q9zyS1ztw0MPPSQyMjLErl27REFBgRgzZowICgoShw4dUrnljlztR539+/eLzp07i/79+4t7771XncY2wdV+VFZWil69eonBgweLb7/9Vuzfv19s3rxZ5Ofnq9zyS1ztQ2ZmpvD19RWZmZli//794l//+peIiIgQU6ZMUbnljtavXy9mzpwpPv30UwFAfPbZZ01uv2/fPuHv7y/S0tLE3r17xVtvvSXatGkjsrKy1GkwSY3jBccLT+N4wfGCjInjBccLT+N4wfGClCdFQNW7d28xadIk+78vXLggIiMjxSuvvOJ0+wcffFD85S9/cXguMTFR/PWvf1W0nU1xtQ+Xq6mpEe3btxfvv/++Uk1sEXf6UVNTI2655RaxYsUK8eijj0oxgLjaj2XLlolu3bqJqqoqtZrYLFf7MGnSJDFgwACH59LS0kTfvn0VbacrWjKAPPvss+K6665zeG748OEiOTlZwZaRXnC84HjhaRwvLuJ4QUbD8YLjhadxvLiI4wUpSfMpflVVVcjLy0NSUpL9OW9vbyQlJSE3N9fpPrm5uQ7bA0BycnKj2yvNnT5c7uzZs6iurkZISIhSzWyWu/2YM2cOOnXqhJSUFDWa2Sx3+vHFF1/AZrNh0qRJCA8Px/XXX4+XX34ZFy5cUKvZDtzpwy233IK8vDx7me6+ffuwfv16DB48WJU2e4psv98kD44XF3G88ByOFxwvyJg4XlzE8cJzOF5wvCB1+GjdgGPHjuHChQsIDw93eD48PByFhYVO9yktLXW6fWlpqWLtbIo7fbjcc889h8jIyAa/OGpypx/ffvstVq5cifz8fBVa2DLu9GPfvn3IycnBqFGjsH79evzyyy+YOHEiqqurkZ6erkazHbjTh4ceegjHjh1Dv379IIRATU0NHn/8cfztb39To8ke09jvd0VFBc6dO4d27dpp1DLSGseLizheeA7HC44XZEwcLy7ieOE5HC84XpA6NK+gImDevHlYs2YNPvvsM/j5+WndnBY7deoUHnnkEbzzzjsIDQ3VujmtUltbi06dOuHtt99GQkIChg8fjpkzZ2L58uVaN63FNm/ejJdffhlLly7F999/j08//RTr1q3D3LlztW4aEXkIxwvtcbwgIj3geKE9jhdErtO8gio0NBRt2rRBWVmZw/NlZWWwWq1O97FarS5trzR3+lDntddew7x58/C///u/6NGjh5LNbJar/fj1119x4MAB3H333fbnamtrAQA+Pj4oKipC9+7dlW20E+68HxEREWjbti3atGljfy4+Ph6lpaWoqqqCxWJRtM2Xc6cPL7zwAh555BE89thjAIAbbrgBZ86cwYQJEzBz5kx4e+sjj27s9zswMJB/3TA5jhccLzyN4wXHCzImjhccLzyN4wXHC1KH5leUxWJBQkICsrOz7c/V1tYiOzsbNpvN6T42m81hewDYuHFjo9srzZ0+AMD8+fMxd+5cZGVloVevXmo0tUmu9iMuLg67d+9Gfn6+/XHPPffg9ttvR35+PqKiotRsvp0770ffvn3xyy+/2AdAAPjpp58QERGh+uABuNeHs2fPNhgk6gZEIYRyjfUw2X6/SR4cLzheeBrHi0s4XpCRcLzgeOFpHC8u4XhBitJyhfY6a9asEb6+vuK9994Te/fuFRMmTBDBwcGitLRUCCHEI488IqZPn27ffuvWrcLHx0e89tproqCgQKSnp0vxNbCu9GHevHnCYrGIjz/+WBw5csT+OHXqlFZdEEK43o/LyfItG672o7i4WLRv316kpqaKoqIi8dVXX4lOnTqJl156SasuuNyH9PR00b59e/HPf/5T7Nu3T2zYsEF0795dPPjgg1p1QQghxKlTp8SuXbvErl27BACxcOFCsWvXLvHbb78JIYSYPn26eOSRR+zb130N7LRp00RBQYHIyMjg18CSHccLjheexvGC4wUZE8cLjheexvGC4wUpT4qASggh3nrrLREdHS0sFovo3bu32L59u/1nf/7zn8Wjjz7qsP1HH30krr76amGxWMR1110n1q1bp3KLG3KlD127dhUAGjzS09PVb/hlXH0v6pNlABHC9X5s27ZNJCYmCl9fX9GtWzfx97//XdTU1Kjcakeu9KG6ulrMnj1bdO/eXfj5+YmoqCgxceJE8ccff6jf8Ho2bdrk9Fqva/ujjz4q/vznPzfYp2fPnsJisYhu3bqJVatWqd5ukhfHC44XnsbxguMFGRPHC44XnsbxguMFKctLCB3V5hERERERERERkeFovgYVERERERERERGZGwMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLSFAMqIiIiIiIiIiLS1P8HJbjxWiG/9bUAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 1200x600 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure(figsize=(12, 6))\n",
|
|
"plot_solution(solver=pinn)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "20fdf23e",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Solving the problem with extra-features PINNs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a1e76351",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, the same problem is solved in a different way.\n",
|
|
"A new neural network is now defined, with an additional input variable, named extra-feature, which coincides with the forcing term in the Laplace equation. \n",
|
|
"The set of input variables to the neural network is:\n",
|
|
"\n",
|
|
"\\begin{equation}\n",
|
|
"[x, y, k(x, y)], \\text{ with } k(x, y)=\\sin{(\\pi x)}\\sin{(\\pi y)},\n",
|
|
"\\end{equation}\n",
|
|
"\n",
|
|
"where $x$ and $y$ are the spatial coordinates and $k(x, y)$ is the added feature. \n",
|
|
"\n",
|
|
"This feature is initialized in the class `SinSin`, which needs to be inherited by the `torch.nn.Module` class and to have the `forward` method. After declaring such feature, we can just adjust the `FeedForward` class by creating a subclass `FeedForwardWithExtraFeatures` with an adjusted forward method and the additional attribute `extra_features`.\n",
|
|
"\n",
|
|
"Finally, we perform the same training as before: the problem is `Poisson`, the network is composed by the same number of neurons and optimizer parameters are equal to previous test, the only change is the new extra feature."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "ef3ad372",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"GPU available: False, used: False\n",
|
|
"TPU available: False, using: 0 TPU cores\n",
|
|
"HPU available: False, using: 0 HPUs\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 41.73it/s, v_num=1, bound_cond1_loss=2.89e-7, bound_cond2_loss=3.77e-7, bound_cond3_loss=3.79e-7, bound_cond4_loss=3.94e-7, phys_cond_loss=4.58e-6, train_loss=6.02e-6] "
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"`Trainer.fit` stopped: `max_epochs=1000` reached.\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 33.63it/s, v_num=1, bound_cond1_loss=2.89e-7, bound_cond2_loss=3.77e-7, bound_cond3_loss=3.79e-7, bound_cond4_loss=3.94e-7, phys_cond_loss=4.58e-6, train_loss=6.02e-6]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"class SinSin(torch.nn.Module):\n",
|
|
" \"\"\"Feature: sin(x)*sin(y)\"\"\"\n",
|
|
" def __init__(self):\n",
|
|
" super().__init__()\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" t = (torch.sin(x.extract(['x'])*torch.pi) *\n",
|
|
" torch.sin(x.extract(['y'])*torch.pi))\n",
|
|
" return LabelTensor(t, ['sin(x)sin(y)'])\n",
|
|
"\n",
|
|
"class FeedForwardWithExtraFeatures(FeedForward):\n",
|
|
" def __init__(self, input_dimensions, output_dimensions, func, layers, extra_features):\n",
|
|
"\n",
|
|
" super().__init__(input_dimensions=input_dimensions, \n",
|
|
" output_dimensions=output_dimensions, \n",
|
|
" func=func, \n",
|
|
" layers=layers) \n",
|
|
" self.extra_features = extra_features\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" \n",
|
|
" extra_feature = self.extra_features[0](x)\n",
|
|
" x = x.append(extra_feature)\n",
|
|
" return super().forward(x)\n",
|
|
" \n",
|
|
"model_feat = FeedForwardWithExtraFeatures(\n",
|
|
" input_dimensions=len(problem.input_variables) + 1, #we add one as also we consider the extra feature dimension\n",
|
|
" output_dimensions=len(problem.output_variables),\n",
|
|
" func=Softplus,\n",
|
|
" layers=[10, 10],\n",
|
|
" extra_features=[SinSin()])\n",
|
|
"\n",
|
|
"pinn_feat = PINN(problem, model_feat, optimizer=TorchOptimizer(torch.optim.Adam, lr=0.006,weight_decay=1e-8))\n",
|
|
"trainer_feat = Trainer(pinn_feat, max_epochs=1000, accelerator='cpu', enable_model_summary=False,\n",
|
|
" train_size=1.0,\n",
|
|
" val_size=0.0,\n",
|
|
" test_size=0.0,\n",
|
|
" logger=TensorBoardLogger(\"tutorial_logs\")) # we train on CPU and avoid model summary at beginning of training (optional)\n",
|
|
"\n",
|
|
"trainer_feat.train()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9748a13e",
|
|
"metadata": {},
|
|
"source": [
|
|
"The predicted and exact solutions and the error between them are represented below.\n",
|
|
"We can easily note that now our network, having almost the same condition as before, is able to reach additional order of magnitudes in accuracy."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "2be6b145",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKgAAAJNCAYAAAAVhE0uAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAwFhJREFUeJzs3X14FNX9//9XbkgChBAQSACBBEQIoqChhCCKSjAoWrFoAWlB5EYtUQGrFUVAtKUqCCLYVBGRFj5YrEVFGo0g2koMEsCvIERFEAomgJhwIySQ7O8PfllZsgnZZHfn7vm4rr24Mntm9szsMu8573PmTIjL5XIJAAAAAAAAMEio0RUAAAAAAACAs5GgAgAAAAAAgKFIUAEAAAAAAMBQJKgAAAAAAABgKBJUAAAAAAAAMBQJKgAAAAAAABiKBBUAAAAAAAAMRYIKAAAAAAAAhiJBBQAAAAAAAEORoIIlrVu3TiEhIVq3bp1ft3vnnXcqISHBr9sEAARPQkKC7rzzTr9uM1AxBwBqa/fu3QoJCdGsWbOC+rl2uVb2th/Hjh3TmDFjFB8fr5CQEE2YMEGSVFhYqNtuu00XXHCBQkJCNHfu3KDXF3AKElQWtXjxYoWEhLhfUVFRuvjii5WRkaHCwkJ3uYqL6jfeeKPSulFRUdq3b1+lbV9zzTXq2rWrx7KEhASFhITovvvuq1Te22eY2f79+zV9+nRt2bLF6KoAQECdHSeqe5F4OePFF1/U4sWLja4GAOjFF19USEiIUlJSjK6K36xevVrTp0/3+3anT5/uEdMaNGigtm3b6uabb9arr76qkpKSGm3nT3/6kxYvXqx7771Xf/vb3/Tb3/5WkjRx4kS99957mjx5sv72t79pwIABft8HAGeEG10B1M2MGTOUmJiokydP6r///a/+8pe/aPXq1dq6dasaNGhQ7bolJSX685//rBdeeKHGn/fyyy9r8uTJatWqVV2rbpj9+/friSeeUEJCgrp37+7x3ssvv6zy8nJjKgYAfva3v/3N4+8lS5YoOzu70vKkpKRgVsu0XnzxRTVr1qzSCKyrr75aJ06cUEREhDEVA+A4S5cuVUJCgjZs2KBvvvlGF110kdFVqrPVq1drwYIFAUlSSdJf/vIXRUdHq6SkRPv27dN7772nu+66S3PnztWqVavUpk0bd1lv1/xr165Vr169NG3atErLb7nlFv3+978PSL0B/IwElcXdcMMN6tGjhyRpzJgxuuCCC/Tcc8/prbfe0rBhw6pdt3v37j4lnC655BLl5+frz3/+s+bNm+eX+ptNvXr1jK4CAPjNb37zG4+/P/30U2VnZ1dafq6ffvrpvJ0cThIaGqqoqCijqwHAIXbt2qX169frzTff1N13362lS5dWSpqgsttuu03NmjVz/z116lQtXbpUI0aM0O23365PP/3U/Z63a/4DBw6oS5cuXpfHxsb6rZ6nT59WeXk5nR6AF9ziZzPXXXedpDOB7XweffRRlZWV6c9//nONtp2QkKARI0bo5Zdf1v79+2tVvxdeeEGXXHKJGjRooCZNmqhHjx5atmyZR5nNmzfrhhtuUExMjKKjo9WvXz+PgFJd/bzNO3LNNdfommuukXTmdsRf/OIXkqRRo0a5hwJX3NLh7X7048eP68EHH1SbNm0UGRmpTp06adasWXK5XB7lQkJClJGRoZUrV6pr166KjIzUJZdcoqysrJodHAAwQMVt3Xl5ebr66qvVoEEDPfroo5LOnNe89XR7O98WFRVpwoQJ7nPlRRddpKeffrpGo1I3btyo9PR0NWvWTPXr11diYqLuuusujzI1PRefq+LWj3NV3O6+e/du9z5t27ZNH330kTs2nB07vN0KuWLFCiUnJ6t+/fpq1qyZfvOb31S6df7OO+9UdHS09u3bp0GDBik6OlrNmzfX73//e5WVlZ332ABwnqVLl6pJkyYaOHCgbrvtNi1durTa8nPmzFG7du1Uv3599e3bV1u3bvV4v6CgQKNGjdKFF16oyMhItWzZUrfccov7/FfhxRdf1CWXXKLIyEi1atVK48ePV1FRUbWfXdX5sWKOrLOvsRcsWCDJ8/bzCuXl5Zo7d64uueQSRUVFKS4uTnfffbd+/PHHaj//fIYPH64xY8YoNzdX2dnZ7uVnX/NX7MOuXbv07rvverQPQkJC5HK5tGDBgkp1rkncO3uusLlz56pDhw6KjIzUl19+KUnasWOHbrvtNjVt2lRRUVHq0aOH3n77bY99qKjHJ598okmTJql58+Zq2LChbr31Vh08eLDSPv/73/9W37591ahRI8XExOgXv/hFpfZWbm6uBgwYoMaNG6tBgwbq27evPvnkkzoda8AfGEFlMzt37pQkXXDBBectm5iY6E44PfLIIzUaRfXYY49pyZIltRpF9fLLL+v+++/XbbfdpgceeEAnT57U//t//0+5ubm64447JEnbtm3TVVddpZiYGD388MOqV6+e/vrXv+qaa67RRx99VOf78JOSkjRjxgxNnTpV48aN01VXXSVJ6t27t9fyLpdLv/zlL/Xhhx9q9OjR6t69u9577z099NBD2rdvn+bMmeNR/r///a/efPNN/e53v1OjRo00b948DR48WHv27KnRdwIARvjhhx90ww03aOjQofrNb36juLg4n9b/6aef1LdvX+3bt09333232rZtq/Xr12vy5Mn6/vvvq51Q9sCBA7r++uvVvHlzPfLII4qNjdXu3bv15ptvusv4ei6ujblz5+q+++5TdHS0HnvsMUmq9jgsXrxYo0aN0i9+8QvNnDlThYWFev755/XJJ59o8+bNHr3tZWVlSk9PV0pKimbNmqUPPvhAs2fPVocOHXTvvffWue4A7GXp0qX61a9+pYiICA0bNkx/+ctf9Nlnn7k7Wc+2ZMkSHT16VOPHj9fJkyf1/PPP67rrrtMXX3zhPocNHjxY27Zt03333aeEhAQdOHBA2dnZ2rNnjztJM336dD3xxBNKS0vTvffeq/z8fPfnfvLJJ3W+y+Duu+/W/v37vd5mXvF+xXn1/vvv165duzR//nxt3ry5zp//29/+Vi+99JLef/999e/fv9L7SUlJ+tvf/qaJEyfqwgsv1IMPPihJuvzyy91zUfXv318jRoxwr+Nr3Hv11Vd18uRJjRs3TpGRkWratKm2bdumK6+8Uq1bt9Yjjzyihg0b6h//+IcGDRqkf/7zn7r11ls9tnHfffepSZMmmjZtmnbv3q25c+cqIyNDr7/+urvM4sWLddddd+mSSy7R5MmTFRsbq82bNysrK8vd3lq7dq1uuOEGJScna9q0aQoNDdWrr76q6667Tv/5z3/Us2fPWh9roM5csKRXX33VJcn1wQcfuA4ePOjau3eva/ny5a4LLrjAVb9+fdf//vc/l8vlcn344YcuSa4VK1ZUWvezzz5z7dy50xUeHu66//773e/37dvXdckll3h8Xrt27VwDBw50uVwu16hRo1xRUVGu/fv3V/kZ3txyyy2VtnuuQYMGuSIiIlw7d+50L9u/f7+rUaNGrquvvtq9rOIzP/zwQ486jhw5stI2+/bt6+rbt6/7788++8wlyfXqq69WKjty5EhXu3bt3H+vXLnSJcn11FNPeZS77bbbXCEhIa5vvvnGvUySKyIiwmPZ559/7pLkeuGFF6rdbwAIhvHjx7vODf19+/Z1SXJlZmZWKi/JNW3atErLzz3fPvnkk66GDRu6vvrqK49yjzzyiCssLMy1Z8+eKuv0r3/9yx2TquLLufjcuk2bNq3SPrtcP8fCXbt2uZddcsklHvGiwrkxp7S01NWiRQtX165dXSdOnHCXW7VqlUuSa+rUqe5lI0eOdElyzZgxw2Obl19+uSs5ObnKfQbgTBs3bnRJcmVnZ7tcLpervLzcdeGFF7oeeOABj3K7du1ySfK47ne5XK7c3FyXJNfEiRNdLpfL9eOPP7okuZ599tkqP/PAgQOuiIgI1/XXX+8qKytzL58/f75LkmvRokXuZedeK3u7Jj+7fmdfb3uLQS6Xy/Wf//zHJcm1dOlSj+VZWVlel5+r4jx/8OBBr+9XHINbb721yv1wuTzbO2eT5Bo/frzHsprGvYrjEBMT4zpw4IBH2X79+rkuvfRS18mTJ93LysvLXb1793Z17NjRvawiXqWlpbnKy8vdyydOnOgKCwtzFRUVuVwul6uoqMjVqFEjV0pKikdsqthuxb8dO3Z0paene2zrp59+ciUmJrr69+9faf+BYOIWP4tLS0tT8+bN1aZNGw0dOlTR0dH617/+pdatW9do/fbt27t7Fb7//vsarTNlyhSdPn26xrcGVoiNjdX//vc/ffbZZ17fLysr0/vvv69Bgwapffv27uUtW7bUHXfcof/+9786cuSIT59ZV6tXr1ZYWJjuv/9+j+UPPvigXC6X/v3vf3ssT0tLU4cOHdx/X3bZZYqJidG3334blPoCQG1ERkZq1KhRtV5/xYoVuuqqq9SkSRMdOnTI/UpLS1NZWZk+/vjjKtetGGm0atUqnTp1ymsZX8/FgbZx40YdOHBAv/vd7zzmpho4cKA6d+6sd999t9I699xzj8ffV111FbEBQCVLly5VXFycrr32WklnbocbMmSIli9f7vW24EGDBnlc9/fs2VMpKSlavXq1JKl+/fqKiIjQunXrqrxd7oMPPlBpaakmTJig0NCfm4djx45VTEyM13OaP61YsUKNGzdW//79PWJIcnKyoqOj9eGHH9Zp+9HR0ZKko0eP+qO6knyPe4MHD1bz5s3dfx8+fFhr167Vr3/9ax09etS9/g8//KD09HR9/fXXlW4ZHzdunMcthldddZXKysr03XffSZKys7N19OhRPfLII5XmTaxYb8uWLfr66691xx136IcffnB/7vHjx9WvXz99/PHHPDAKhiJBZXELFixQdna2PvzwQ3355Zf69ttvlZ6e7tM2fE041SapJUl/+MMfFB0drZ49e6pjx44aP368x73OBw8e1E8//aROnTpVWjcpKUnl5eXau3dvjT/PH7777ju1atVKjRo1qlSfivfP1rZt20rbaNKkSZ3vnweAQGrdunWdJmv9+uuvlZWVpebNm3u80tLSJJ25ja8qffv21eDBg/XEE0+oWbNmuuWWWyo9FtzXc3GgVXyet3jVuXPnSvWJioryaJhIxAYAlZWVlWn58uW69tprtWvXLn3zzTf65ptvlJKSosLCQq1Zs6bSOh07dqy07OKLL3bPLxUZGamnn35a//73vxUXF6err75azzzzjAoKCtzlqzqnRUREqH379gE/x3799dcqLi5WixYtKsWRY8eOVRtDauLYsWOSVCmG1IWvcS8xMdHj72+++UYul0uPP/54pW1UTIh/7jbObWc0adJEktyxpGKql65du1Zbb0kaOXJkpc9duHChSkpKVFxc7NOxAPyJOagsrmfPnu6n+NVW+/bt9Zvf/EYvvfSSHnnkkRqt89hjj+lvf/ubnn76aQ0aNKhG6yQlJSk/P1+rVq1SVlaW/vnPf+rFF1/U1KlT9cQTT9RhD87wNgmudCbYh4WF1Xn7NVHV57jOM4kvABipfv36PpU/txe/vLxc/fv318MPP+y1/MUXX1zltkJCQvTGG2/o008/1TvvvON+LPjs2bP16aefunu+a6u62BAswYpBAKxt7dq1+v7777V8+XItX7680vtLly7V9ddf7/N2J0yYoJtvvlkrV67Ue++9p8cff1wzZ87U2rVrdfnll9epzv44x5aXl6tFixZVTgZ/boLfVxWTxl900UV12s7ZfI1758bZilFKv//976scXHBuff3Rzqj43GeffVbdu3f3WqaucReoCxJUkHRmFNXf//53Pf300zUq36FDB/3mN7/RX//6V58mLm/YsKGGDBmiIUOGqLS0VL/61a/0xz/+UZMnT1bz5s3VoEED5efnV1pvx44dCg0NVZs2barcdpMmTbw+aeS7777zuGWwqkDqTbt27fTBBx/o6NGjHr0uO3bscL8PAHbl7bxaWlpaafRshw4ddOzYMXfPcW306tVLvXr10h//+EctW7ZMw4cP1/LlyzVmzJg6nYsrepiLioo8Ji73NiKgpvGh4vPy8/PdT8+tkJ+fT2wAUCtLly5VixYt3E+7O9ubb76pf/3rX8rMzPRIdlSMiDnbV199Vemp1B06dNCDDz6oBx98UF9//bW6d++u2bNn6+9//7vHOe3sa+bS0lLt2rWr2nP72efYs/lyju3QoYM++OADXXnllT53mNRExaTsvt5lUp26xr2K41yvXr06xc5z6ySdSchVlYyrKBMTE+O3zwX8iVv8IMkz4XT2kN/qTJkyRadOndIzzzxTo/I//PCDx98RERHq0qWLXC6XTp06pbCwMF1//fV66623PB57W1hYqGXLlqlPnz6KiYmpdh8+/fRTlZaWupetWrWq0m2BDRs2lFQ5kHpz4403qqysTPPnz/dYPmfOHIWEhOiGG2447zYAwKo6dOhQaR6Nl156qVLP+K9//Wvl5OTovffeq7SNoqIinT59usrP+PHHHyv1/lb06lbc5leXc3HFxfjZ+3H8+HG99tprlco2bNiwRrGhR48eatGihTIzMz1uRfz3v/+t7du3a+DAgefdBgCc7cSJE3rzzTd100036bbbbqv0ysjI0NGjR/X22297rLdy5UqPuYo2bNig3Nxc93nxp59+0smTJz3W6dChgxo1auQ+f6WlpSkiIkLz5s3zOB+/8sorKi4urvac1q5dO4WFhVWKFS+++GKlslVdg//6179WWVmZnnzyyUrrnD59ukbn5aosW7ZMCxcuVGpqqvr161fr7ZyrLnFPklq0aKFrrrlGf/3rX71OmXLw4EGf63T99derUaNGmjlzZqXvvOJ7TU5OVocOHTRr1iz3rY91/VzAnxhBBbeK2/by8/N1ySWXnLd8RVLL20W+N9dff73i4+N15ZVXKi4uTtu3b9f8+fM1cOBAd4/4U089pezsbPXp00e/+93vFB4err/+9a8qKSk5byJszJgxeuONNzRgwAD9+te/1s6dO/X3v//dY9LyinrHxsYqMzNTjRo1UsOGDZWSklLp3nBJuvnmm3Xttdfqscce0+7du9WtWze9//77euuttzRhwoRK2wYAOxkzZozuueceDR48WP3799fnn3+u9957T82aNfMo99BDD+ntt9/WTTfdpDvvvFPJyck6fvy4vvjiC73xxhvavXt3pXUqvPbaa3rxxRd16623qkOHDjp69KhefvllxcTE6MYbb5RUt3Px9ddfr7Zt22r06NF66KGHFBYWpkWLFql58+bas2ePR9nk5GT95S9/0VNPPaWLLrpILVq0qDRCSjrT4/30009r1KhR6tu3r4YNG6bCwkI9//zzSkhI0MSJE3091AAc7u2339bRo0f1y1/+0uv7vXr1UvPmzbV06VINGTLEvfyiiy5Snz59dO+996qkpERz587VBRdc4L717KuvvlK/fv3061//Wl26dFF4eLj+9a9/qbCwUEOHDpV05ha6yZMn64knntCAAQP0y1/+Uvn5+XrxxRf1i1/8Qr/5zW+qrHfjxo11++2364UXXlBISIg6dOigVatWeZ03Kjk5WZJ0//33Kz09XWFhYRo6dKj69u2ru+++WzNnztSWLVt0/fXXq169evr666+1YsUKPf/887rtttvOewzfeOMNRUdHq7S0VPv27dN7772nTz75RN26ddOKFSvOu74v6hL3KixYsEB9+vTRpZdeqrFjx6p9+/YqLCxUTk6O/ve//+nzzz/3qU4xMTGaM2eOxowZo1/84he644471KRJE33++ef66aef9Nprryk0NFQLFy7UDTfcoEsuuUSjRo1S69attW/fPn344YeKiYnRO++8U5dDA9SNYc8PRJ1UPG60usdyu1w/P/p1xYoVNVq34nHYl1xyicfyqh67+vXXX7vCwsIqfYY3f/3rX11XX32164ILLnBFRka6OnTo4HrooYdcxcXFHuU2bdrkSk9Pd0VHR7saNGjguvbaa13r16/3ul/nPtJ29uzZrtatW7siIyNdV155pWvjxo2uvn37Vnps+FtvveXq0qWLKzw83OMRuN4eOXv06FHXxIkTXa1atXLVq1fP1bFjR9ezzz7r8WhWl8v7I2hdrsqPPAcAo3h7xHffvn0rnfMrlJWVuf7whz+4mjVr5mrQoIErPT3d9c0333g9rx09etQ1efJk10UXXeSKiIhwNWvWzNW7d2/XrFmzXKWlpVXWadOmTa5hw4a52rZt64qMjHS1aNHCddNNN7k2btxYafs1ORd7q1teXp4rJSXFFRER4Wrbtq3rueeec8fCXbt2ucsVFBS4Bg4c6GrUqJFLkjt2VBVzXn/9ddfll1/uioyMdDVt2tQ1fPhwj8e9u1xn4krDhg0r7XfFY9EBwOVyuW6++WZXVFSU6/jx41WWufPOO1316tVzHTp0yLVr1y6XJNezzz7rmj17tqtNmzauyMhI11VXXeX6/PPP3escOnTINX78eFfnzp1dDRs2dDVu3NiVkpLi+sc//lFp+/Pnz3d17tzZVa9ePVdcXJzr3nvvdf34448eZbxdKx88eNA1ePBgV4MGDVxNmjRx3X333a6tW7d6XGO7XC7X6dOnXffdd5+refPmrpCQkErnwJdeesmVnJzsql+/vqtRo0auSy+91PXwww+79u/fX+2xqzifVryioqJcF154oeumm25yLVq0yHXy5MlK63jbj6raO1Vd49ck7p39PXmzc+dO14gRI1zx8fGuevXquVq3bu266aabXG+88Ya7TFVtt6pi09tvv+3q3bu3q379+q6YmBhXz549Xf/3f//nUWbz5s2uX/3qV+52Wbt27Vy//vWvXWvWrPFaTyBYQlwuZm8GAAAAAACAcZiDCgAAAAAAAIYiQQUAAAAAAABDkaACAAAAAACAoXxOUH388ce6+eab1apVK4WEhGjlypXnXWfdunW64oorFBkZqYsuukiLFy+uRVUBwBoWLFighIQERUVFKSUlRRs2bKi2/IoVK9S5c2dFRUXp0ksv1erVqz3ed7lcmjp1qlq2bKn69esrLS1NX3/9tUeZr776SrfccouaNWummJgY9enTRx9++KHf9+18iBEAUD1iBDECAKpiRIz44x//qN69e6tBgwaKjY31+jl79uzRwIED1aBBA7Vo0UIPPfSQTp8+7X5/3bp1CgkJqfQqKCjwaf99TlAdP35c3bp104IFC2pUfteuXRo4cKCuvfZabdmyRRMmTNCYMWP03nvv+frRAGB6r7/+uiZNmqRp06Zp06ZN6tatm9LT070+blmS1q9fr2HDhmn06NHavHmzBg0apEGDBmnr1q3uMs8884zmzZunzMxM5ebmqmHDhkpPT9fJkyfdZW666SadPn1aa9euVV5enrp166abbrrJ56BQV8QIAKgaMYIYAQBVMSpGlJaW6vbbb9e9997r9XPKyso0cOBAlZaWav369Xrttde0ePFiTZ06tVLZ/Px8ff/99+5XixYtfDoGdXqKX0hIiP71r39p0KBBVZb5wx/+oHfffdfjIA0dOlRFRUXKysryuk5JSYlKSkrc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n/TWW2/pnXfe0eWXXx6AvYXZFbePVONvS4yuhq2YtRODGGENxAgAgBMxggowESZANq8jR454vEpK6taYz8nJUWxsrLvhIUlpaWkKDQ1Vbm6u13Xy8vJ06tQppaWluZd17txZbdu2VU5Ojtd19u/frzfffFN9+/atsi7l5eU6evSomjZtWsu9QU2RHEBdECPMixgBAFVjFBVqihFUDkHvuH+ZtWfcaRrtcSksIrAjDstKz2y/TZs2HsunTZum6dOn13q7BQUFatGihcey8PBwNW3aVAUFBVWuExERodjYWI/lcXFxldYZNmyY3nrrLZ04cUI333yzFi5cWGVdZs2apWPHjunXv/517XYGQcVIW6BmiBFnECPs6cdOEWqST6cHrKP+1n060bW10dWAyTGCCgBqYO/evSouLna/Jk+e7LXcI488opCQkGpfO3bsCHh958yZo02bNumtt97Szp07NWnSJK/lli1bpieeeEL/+Mc/KjWG4Cwk3v2HY+k8xAgAAOqOEVQAUAMxMTGKiYk5b7kHH3xQd955Z7Vl2rdvr/j4eB04cMBj+enTp3X48GHFx8d7XS8+Pl6lpaUqKiry6CEvLCystE58fLzi4+PVuXNnNW3aVFdddZUef/xxtWzZ0l1m+fLlGjNmjFasWOFxSwgAwDfECPuKTizWsV2Nja6GaXCrFuqCUVQ4HxJUDsJtfv5Bzziq07x5czVv3vy85VJTU1VUVKS8vDwlJydLktauXavy8nKlpKR4XSc5OVn16tXTmjVrNHjwYElSfn6+9uzZo9TU1Co/q7y8XJI85kT5v//7P911111avny5Bg4cWOP9A1A9YgSqQ4wA4HQkqVAdElQmxPwizsTkt86SlJSkAQMGaOzYscrMzNSpU6eUkZGhoUOHup/OtG/fPvXr109LlixRz5491bhxY40ePVqTJk1S06ZNFRMTo/vuu0+pqanq1auXJGn16tUqLCzUL37xC0VHR2vbtm166KGHdOWVVyohIUHSmVs2Ro4cqeeff14pKSnuuUnq16+vxo3pJXYyOjLMixjhLMQI/7vuwq/10eGuhnz20Q7larSTmVWACiSpUBXOlA5Dz27dmP348YQwa1m6dKk6d+6sfv366cYbb1SfPn300ksvud8/deqU8vPz9dNPP7mXzZkzRzfddJMGDx6sq6++WvHx8XrzzTfd79ev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u+ffd999tw4fPqwXXnhBv/71r33+Pc48iTOC2W3HFQ3jPQMQTmxznIv3DkCks+r0PjcWp852rfI8YH9t2rRRTEyMSkpKvJaXlJQoNTW11uekpqbWu371fxta5/qLsF+6dEmnTp2q8+/6asCAAfrss8/8eg4FqnrY9ahhp/Z/ZSfWIez6Ptn1sw0gOOy67UHt7JrrZAVgvVZFFVY3AQ5CUcq54uLi1K9fP23ZssWzrKqqSlu2bFFmZmatz8nMzPRaX5I2b97sWb9z585KTU31WufMmTMqLCz0rJOZmanS0lLt2rXLs87WrVtVVVWljIyMRvVp7969SktL8+s5nOLnYJzKYV92HGgACA27neZXrXo7RE7YG3kBuJtT7zoWSdwwe4qClDvk5ORo/Pjx6t+/vwYMGKAlS5bo/Pnznrv6PfTQQ2rXrp3mz58vSXr88cc1ePBg/du//Zu+973vac2aNfrjH/+oV155RZIUFRWln/70p3r22WfVrVs3de7cWbNnz1Z6erpGjBghSerZs6eGDRumSZMmKS8vT5WVlZo2bZpGjx6t9PR0T9sOHDigiooKnTp1SmfPntXevXslXbkouiQtWbJEnTt31q233qqysjK99tpr2rp1qzZt2uTXa8AW0+HYsbUfu78nHBG3j1OnTmns2LFKSkpScnKyJk6cqHPnztX7nLKyMk2dOlU33HCDEhMT9cADD9SYtlvt5MmTat++vaKiomrcDnbVqlW6/fbb1axZM6WlpemRRx7RyZMng9U12Ijdt0mRzM7vDVlhPTIiNDYd697wSrCEFaf3Ob04xWwpdxk1apQWLVqkOXPmqE+fPtq7d6/y8/M9Fzk/duyYjh8/7ln/7rvv1urVq/XKK6/o9ttv11tvvaX169frtttu86zz1FNPafr06Zo8ebLuvPNOnTt3Tvn5+UpISPCss2rVKvXo0UNDhw7V8OHDNWjQIE+Rq9rw4cPVt29f/f73v9e2bdvUt29f9e3b1/PziooKzZgxQ7169dLgwYP18ccf691339XQoUP9eg0oUDXACTtodj01INLwPsBfY8eO1f79+7V582a98847ev/99zV58uR6n/PEE0/o97//vdauXas//OEP+vrrr/XDH/6w1nUnTpyo3r1711i+fft2PfTQQ5o4caL279+vtWvXaufOnZo0aVJQ+hWJ7J4VbJvshbyA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mZkmMzPT8/Pf/e535tVXXzX79u0zn376qXn55ZdNs2bNzJw5czzrnD171rRv396MHDnS7N+/3/zhD38w3bp1Mz/+8Y8b3ScyIjD0wT7c0A/64A5kBBlRjT7Yhxv6QR/sKxTbyAULFpjk5GTz3//93+ZPf/qTuf/++03nzp3NxYsXPes0lDelpaUmJSXFjBs3znzyySdmzZo1plmzZuY//uM//GqLL/wuUBljzNKlS03Hjh1NXFycGTBggPnwww89Pxs8eLAZP3681/q//e1vzS233GLi4uLMrbfeajZs2BDInwUAVzl58qQZM2aMSUxMNElJSebhhx82Z8+e9fz86NGjRpJ57733PMsuXrxopkyZYlq1amWaNWtmfvCDH5jjx497fv4///M/pk+fPiYxMdE0b97c3H777SYvL89cvnzZ628fPHjQZGVlmaZNm5r27dubnJycRt+hqRoZAQCNR0ZcQUYAiCTB3kZWVVWZ2bNnm5SUFBMfH2+GDh1qioqKvNZpKG+MMebjjz82gwYNMvHx8aZdu3ZmwYIFNdoejO11lDHG+DfnCgAAAAAAAAiewC97DwAAAAAAAAQBBSoAAAAAAABYigIVAAAAAAAALEWBCgAAAAAAAJayTYFq2bJl6tSpkxISEpSRkaGdO3fWu/7atWvVo0cPJSQkqFevXtq4cWOYWlo3f/rw6quv6p577lGrVq3UqlUrZWVlNdjncPD3fai2Zs0aRUVFacSIEaFtoA/87UNpaammTp2qtLQ0xcfH65ZbbnHc50mSlixZou7du6tp06bq0KGDnnjiCZWVlYWptTW9//77uu+++5Senq6oqCitX7++weds27ZNd9xxh+Lj43XzzTdr5cqVIW8nnIGMICOChYwgI+A+ZAQZEUxuyAkygoxwLL/v+xcCa9asMXFxceb11183+/fvN5MmTTLJycmmpKSk1vW3b99uYmJizMKFC82BAwfML37xC9OkSROzb9++MLf8Kn/78KMf/cgsW7bM7Nmzxxw8eNBMmDDBtGzZ0nz11VdhbvlV/vah2tGjR027du3MPffcY+6///7wNLYO/vahvLzc9O/f3wwfPtx88MEH5ujRo2bbtm1m7969YW65N3/7sWrVKhMfH29WrVpljh49av73f//XpKWlmSeeeCLMLb9q48aNZtasWebtt982ksy6devqXf/IkSOm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",
|
|
"text/plain": [
|
|
"<Figure size 1200x600 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure(figsize=(12, 6))\n",
|
|
"plot_solution(solver=pinn_feat)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e7bc0577",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Solving the problem with learnable extra-features PINNs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "86c1d7b0",
|
|
"metadata": {},
|
|
"source": [
|
|
"We can still do better!\n",
|
|
"\n",
|
|
"Another way to exploit the extra features is the addition of learnable parameter inside them.\n",
|
|
"In this way, the added parameters are learned during the training phase of the neural network. In this case, we use:\n",
|
|
"\n",
|
|
"\\begin{equation}\n",
|
|
"k(x, \\mathbf{y}) = \\beta \\sin{(\\alpha x)} \\sin{(\\alpha y)},\n",
|
|
"\\end{equation}\n",
|
|
"\n",
|
|
"where $\\alpha$ and $\\beta$ are the abovementioned parameters.\n",
|
|
"Their implementation is quite trivial: by using the class `torch.nn.Parameter` we cam define all the learnable parameters we need, and they are managed by `autograd` module!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "ae8716e7",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"GPU available: False, used: False\n",
|
|
"TPU available: False, using: 0 TPU cores\n",
|
|
"HPU available: False, using: 0 HPUs\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 36.18it/s, v_num=2, bound_cond1_loss=5.31e-8, bound_cond2_loss=4.5e-8, bound_cond3_loss=5.9e-8, bound_cond4_loss=5.76e-8, phys_cond_loss=3.97e-6, train_loss=4.19e-6] "
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"`Trainer.fit` stopped: `max_epochs=1000` reached.\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 29.29it/s, v_num=2, bound_cond1_loss=5.31e-8, bound_cond2_loss=4.5e-8, bound_cond3_loss=5.9e-8, bound_cond4_loss=5.76e-8, phys_cond_loss=3.97e-6, train_loss=4.19e-6]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"class SinSinAB(torch.nn.Module):\n",
|
|
" \"\"\" \"\"\"\n",
|
|
" def __init__(self):\n",
|
|
" super().__init__()\n",
|
|
" self.alpha = torch.nn.Parameter(torch.tensor([1.0]))\n",
|
|
" self.beta = torch.nn.Parameter(torch.tensor([1.0]))\n",
|
|
"\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" t = (\n",
|
|
" self.beta*torch.sin(self.alpha*x.extract(['x'])*torch.pi)*\n",
|
|
" torch.sin(self.alpha*x.extract(['y'])*torch.pi)\n",
|
|
" )\n",
|
|
" return LabelTensor(t, ['b*sin(a*x)sin(a*y)'])\n",
|
|
"\n",
|
|
"\n",
|
|
"# make model + solver + trainer\n",
|
|
"model_learn = FeedForwardWithExtraFeatures(\n",
|
|
" input_dimensions=len(problem.input_variables) + 1, #we add one as also we consider the extra feature dimension\n",
|
|
" output_dimensions=len(problem.output_variables),\n",
|
|
" func=Softplus,\n",
|
|
" layers=[10, 10],\n",
|
|
" extra_features=[SinSinAB()])\n",
|
|
"\n",
|
|
"pinn_learn = PINN(problem, model_learn, optimizer=TorchOptimizer(torch.optim.Adam, lr=0.006,weight_decay=1e-8))\n",
|
|
"trainer_learn = Trainer(pinn_learn, max_epochs=1000, enable_model_summary=False,\n",
|
|
" train_size=1.0,\n",
|
|
" val_size=0.0,\n",
|
|
" test_size=0.0,\n",
|
|
" logger=TensorBoardLogger(\"tutorial_logs\")) # we train on CPU and avoid model summary at beginning of training (optional)\n",
|
|
"\n",
|
|
"# train\n",
|
|
"trainer_learn.train()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "0319fb3b",
|
|
"metadata": {},
|
|
"source": [
|
|
"Umh, the final loss is not appreciabily better than previous model (with static extra features), despite the usage of learnable parameters. This is mainly due to the over-parametrization of the network: there are many parameter to optimize during the training, and the model in unable to understand automatically that only the parameters of the extra feature (and not the weights/bias of the FFN) should be tuned in order to fit our problem. A longer training can be helpful, but in this case the faster way to reach machine precision for solving the Poisson problem is removing all the hidden layers in the `FeedForward`, keeping only the $\\alpha$ and $\\beta$ parameters of the extra feature."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "daa9cf17",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"GPU available: False, used: False\n",
|
|
"TPU available: False, using: 0 TPU cores\n",
|
|
"HPU available: False, using: 0 HPUs\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 37.75it/s, v_num=3, bound_cond1_loss=8.24e-13, bound_cond2_loss=2.1e-12, bound_cond3_loss=5.63e-13, bound_cond4_loss=1.29e-12, phys_cond_loss=2.86e-14, train_loss=4.81e-12] "
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"`Trainer.fit` stopped: `max_epochs=1000` reached.\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 999: 100%|██████████| 1/1 [00:00<00:00, 30.85it/s, v_num=3, bound_cond1_loss=8.24e-13, bound_cond2_loss=2.1e-12, bound_cond3_loss=5.63e-13, bound_cond4_loss=1.29e-12, phys_cond_loss=2.86e-14, train_loss=4.81e-12]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# make model + solver + trainer\n",
|
|
"model_learn= FeedForwardWithExtraFeatures(\n",
|
|
" layers=[],\n",
|
|
" func=Softplus,\n",
|
|
" output_dimensions=len(problem.output_variables),\n",
|
|
" input_dimensions=len(problem.input_variables)+1,\n",
|
|
" extra_features=[SinSinAB()])\n",
|
|
"pinn_learn = PINN(problem, model_learn, optimizer=TorchOptimizer(torch.optim.Adam, lr=0.006,weight_decay=1e-8))\n",
|
|
"trainer_learn = Trainer(pinn_learn, max_epochs=1000, accelerator='cpu', enable_model_summary=False,\n",
|
|
" train_size=1.0,\n",
|
|
" val_size=0.0,\n",
|
|
" test_size=0.0,\n",
|
|
" logger=TensorBoardLogger(\"tutorial_logs\")) # we train on CPU and avoid model summary at beginning of training (optional)\n",
|
|
"\n",
|
|
"# train\n",
|
|
"trainer_learn.train()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "150b3e62",
|
|
"metadata": {},
|
|
"source": [
|
|
"In such a way, the model is able to reach a very high accuracy!\n",
|
|
"Of course, this is a toy problem for understanding the usage of extra features: similar precision could be obtained if the extra features are very similar to the true solution. The analyzed Poisson problem shows a forcing term very close to the solution, resulting in a perfect problem to address with such an approach.\n",
|
|
"\n",
|
|
"We conclude here by showing the graphical comparison of the unknown field and the loss trend for all the test cases presented here: the standard PINN, PINN with extra features, and PINN with learnable extra features."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8c64fcb4",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let us compare the training losses for the various types of training"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "2855cea1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
" <iframe id=\"tensorboard-frame-14a9e01ef5e7b3fa\" width=\"100%\" height=\"800\" frameborder=\"0\">\n",
|
|
" </iframe>\n",
|
|
" <script>\n",
|
|
" (function() {\n",
|
|
" const frame = document.getElementById(\"tensorboard-frame-14a9e01ef5e7b3fa\");\n",
|
|
" const url = new URL(\"/\", window.location);\n",
|
|
" const port = 6006;\n",
|
|
" if (port) {\n",
|
|
" url.port = port;\n",
|
|
" }\n",
|
|
" frame.src = url;\n",
|
|
" })();\n",
|
|
" </script>\n",
|
|
" "
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Load the TensorBoard extension\n",
|
|
"%load_ext tensorboard\n",
|
|
"%tensorboard --logdir 'tutorial_logs'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "0a4c8895",
|
|
"metadata": {},
|
|
"source": [
|
|
"## What's next?\n",
|
|
"\n",
|
|
"Congratulations on completing the two dimensional Poisson tutorial of **PINA**! There are multiple directions you can go now:\n",
|
|
"\n",
|
|
"1. Train the network for longer or with different layer sizes and assert the finaly accuracy\n",
|
|
"\n",
|
|
"2. Propose new types of extrafeatures and see how they affect the learning\n",
|
|
"\n",
|
|
"3. Exploit extrafeature training in more complex problems\n",
|
|
"\n",
|
|
"4. Many more..."
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|