3706 lines
262 KiB
Plaintext
Vendored
3706 lines
262 KiB
Plaintext
Vendored
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "11b1b539",
|
|
"metadata": {},
|
|
"source": [
|
|
"### The problem definition"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "56edb356",
|
|
"metadata": {},
|
|
"source": [
|
|
"This tutorial presents how to solve with Physics-Informed Neural Networks a 2-D Poisson problem with Dirichlet boundary conditions.\n",
|
|
"\n",
|
|
"The problem is 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."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bd72a9f9",
|
|
"metadata": {},
|
|
"source": [
|
|
"First of all, some useful imports."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "0f54a8bc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"import numpy as np\n",
|
|
"import argparse\n",
|
|
"import sys\n",
|
|
"import torch\n",
|
|
"from torch.nn import ReLU, Tanh, Softplus\n",
|
|
"from pina.problem import SpatialProblem\n",
|
|
"from pina.operators import nabla\n",
|
|
"from pina.model import FeedForward\n",
|
|
"from pina.adaptive_functions import AdaptiveSin, AdaptiveCos, AdaptiveTanh\n",
|
|
"from pina import Condition, Span, PINN, LabelTensor, Plotter"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f661caca",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, 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. *truth_solution*\n",
|
|
"is the exact solution which will be compared with the predicted one."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "71fb35b3",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Poisson(SpatialProblem):\n",
|
|
" spatial_variables = ['x', 'y']\n",
|
|
" bounds_x = [0, 1]\n",
|
|
" bounds_y = [0, 1]\n",
|
|
" output_variables = ['u']\n",
|
|
" domain = Span({'x': bounds_x, 'y': bounds_y})\n",
|
|
"\n",
|
|
" def laplace_equation(input_, output_):\n",
|
|
" force_term = (torch.sin(input_['x']*torch.pi) *\n",
|
|
" torch.sin(input_['y']*torch.pi))\n",
|
|
" return nabla(output_['u'], input_).flatten() - force_term\n",
|
|
"\n",
|
|
" def nil_dirichlet(input_, output_):\n",
|
|
" value = 0.0\n",
|
|
" return output_['u'] - value\n",
|
|
"\n",
|
|
" conditions = {\n",
|
|
" 'gamma1': Condition(Span({'x': bounds_x, 'y': bounds_y[-1]}), nil_dirichlet),\n",
|
|
" 'gamma2': Condition(Span({'x': bounds_x, 'y': bounds_y[0]}), nil_dirichlet),\n",
|
|
" 'gamma3': Condition(Span({'x': bounds_x[-1], 'y': bounds_y}), nil_dirichlet),\n",
|
|
" 'gamma4': Condition(Span({'x': bounds_x[0], 'y': bounds_y}), nil_dirichlet),\n",
|
|
" 'D': Condition(Span({'x': bounds_x, 'y': bounds_y}), laplace_equation),\n",
|
|
" }\n",
|
|
" def poisson_sol(self, x, y):\n",
|
|
" return -(np.sin(x*np.pi)*np.sin(y*np.pi))/(2*np.pi**2)\n",
|
|
"\n",
|
|
" truth_solution = poisson_sol"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1a959d3e",
|
|
"metadata": {},
|
|
"source": [
|
|
"### The problem solution "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "42de9096",
|
|
"metadata": {},
|
|
"source": [
|
|
"Then, a feed-forward neural network is defined, through the class *FeedForward*. A 2-D grid is instantiated inside the square domain and on the boundaries. This neural network takes as input the coordinates of the points which compose the grid and gives as output the solution of the Poisson problem. The residual of the equations are evaluated at each point of the grid and the loss minimized by the neural network is the sum of the residuals.\n",
|
|
"In this tutorial, the neural network is composed by two hidden layers of 10 neurons each, and it is trained for 10000 epochs with a learning rate of 0.003. These parameters can be modified as desired."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "11b3dd75",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[0. 0. ]\n",
|
|
" [0.05263158 0. ]\n",
|
|
" [0.10526316 0. ]\n",
|
|
" [0.15789474 0. ]\n",
|
|
" [0.21052632 0. ]\n",
|
|
" [0.26315789 0. ]\n",
|
|
" [0.31578947 0. ]\n",
|
|
" [0.36842105 0. ]\n",
|
|
" [0.42105263 0. ]\n",
|
|
" [0.47368421 0. ]\n",
|
|
" [0.52631579 0. ]\n",
|
|
" [0.57894737 0. ]\n",
|
|
" [0.63157895 0. ]\n",
|
|
" [0.68421053 0. ]\n",
|
|
" [0.73684211 0. ]\n",
|
|
" [0.78947368 0. ]\n",
|
|
" [0.84210526 0. ]\n",
|
|
" [0.89473684 0. ]\n",
|
|
" [0.94736842 0. ]\n",
|
|
" [1. 0. ]\n",
|
|
" [0. 0.05263158]\n",
|
|
" [0.05263158 0.05263158]\n",
|
|
" [0.10526316 0.05263158]\n",
|
|
" [0.15789474 0.05263158]\n",
|
|
" [0.21052632 0.05263158]\n",
|
|
" [0.26315789 0.05263158]\n",
|
|
" [0.31578947 0.05263158]\n",
|
|
" [0.36842105 0.05263158]\n",
|
|
" [0.42105263 0.05263158]\n",
|
|
" [0.47368421 0.05263158]\n",
|
|
" [0.52631579 0.05263158]\n",
|
|
" [0.57894737 0.05263158]\n",
|
|
" [0.63157895 0.05263158]\n",
|
|
" [0.68421053 0.05263158]\n",
|
|
" [0.73684211 0.05263158]\n",
|
|
" [0.78947368 0.05263158]\n",
|
|
" [0.84210526 0.05263158]\n",
|
|
" [0.89473684 0.05263158]\n",
|
|
" [0.94736842 0.05263158]\n",
|
|
" [1. 0.05263158]\n",
|
|
" [0. 0.10526316]\n",
|
|
" [0.05263158 0.10526316]\n",
|
|
" [0.10526316 0.10526316]\n",
|
|
" [0.15789474 0.10526316]\n",
|
|
" [0.21052632 0.10526316]\n",
|
|
" [0.26315789 0.10526316]\n",
|
|
" [0.31578947 0.10526316]\n",
|
|
" [0.36842105 0.10526316]\n",
|
|
" [0.42105263 0.10526316]\n",
|
|
" [0.47368421 0.10526316]\n",
|
|
" [0.52631579 0.10526316]\n",
|
|
" [0.57894737 0.10526316]\n",
|
|
" [0.63157895 0.10526316]\n",
|
|
" [0.68421053 0.10526316]\n",
|
|
" [0.73684211 0.10526316]\n",
|
|
" [0.78947368 0.10526316]\n",
|
|
" [0.84210526 0.10526316]\n",
|
|
" [0.89473684 0.10526316]\n",
|
|
" [0.94736842 0.10526316]\n",
|
|
" [1. 0.10526316]\n",
|
|
" [0. 0.15789474]\n",
|
|
" [0.05263158 0.15789474]\n",
|
|
" [0.10526316 0.15789474]\n",
|
|
" [0.15789474 0.15789474]\n",
|
|
" [0.21052632 0.15789474]\n",
|
|
" [0.26315789 0.15789474]\n",
|
|
" [0.31578947 0.15789474]\n",
|
|
" [0.36842105 0.15789474]\n",
|
|
" [0.42105263 0.15789474]\n",
|
|
" [0.47368421 0.15789474]\n",
|
|
" [0.52631579 0.15789474]\n",
|
|
" [0.57894737 0.15789474]\n",
|
|
" [0.63157895 0.15789474]\n",
|
|
" [0.68421053 0.15789474]\n",
|
|
" [0.73684211 0.15789474]\n",
|
|
" [0.78947368 0.15789474]\n",
|
|
" [0.84210526 0.15789474]\n",
|
|
" [0.89473684 0.15789474]\n",
|
|
" [0.94736842 0.15789474]\n",
|
|
" [1. 0.15789474]\n",
|
|
" [0. 0.21052632]\n",
|
|
" [0.05263158 0.21052632]\n",
|
|
" [0.10526316 0.21052632]\n",
|
|
" [0.15789474 0.21052632]\n",
|
|
" [0.21052632 0.21052632]\n",
|
|
" [0.26315789 0.21052632]\n",
|
|
" [0.31578947 0.21052632]\n",
|
|
" [0.36842105 0.21052632]\n",
|
|
" [0.42105263 0.21052632]\n",
|
|
" [0.47368421 0.21052632]\n",
|
|
" [0.52631579 0.21052632]\n",
|
|
" [0.57894737 0.21052632]\n",
|
|
" [0.63157895 0.21052632]\n",
|
|
" [0.68421053 0.21052632]\n",
|
|
" [0.73684211 0.21052632]\n",
|
|
" [0.78947368 0.21052632]\n",
|
|
" [0.84210526 0.21052632]\n",
|
|
" [0.89473684 0.21052632]\n",
|
|
" [0.94736842 0.21052632]\n",
|
|
" [1. 0.21052632]\n",
|
|
" [0. 0.26315789]\n",
|
|
" [0.05263158 0.26315789]\n",
|
|
" [0.10526316 0.26315789]\n",
|
|
" [0.15789474 0.26315789]\n",
|
|
" [0.21052632 0.26315789]\n",
|
|
" [0.26315789 0.26315789]\n",
|
|
" [0.31578947 0.26315789]\n",
|
|
" [0.36842105 0.26315789]\n",
|
|
" [0.42105263 0.26315789]\n",
|
|
" [0.47368421 0.26315789]\n",
|
|
" [0.52631579 0.26315789]\n",
|
|
" [0.57894737 0.26315789]\n",
|
|
" [0.63157895 0.26315789]\n",
|
|
" [0.68421053 0.26315789]\n",
|
|
" [0.73684211 0.26315789]\n",
|
|
" [0.78947368 0.26315789]\n",
|
|
" [0.84210526 0.26315789]\n",
|
|
" [0.89473684 0.26315789]\n",
|
|
" [0.94736842 0.26315789]\n",
|
|
" [1. 0.26315789]\n",
|
|
" [0. 0.31578947]\n",
|
|
" [0.05263158 0.31578947]\n",
|
|
" [0.10526316 0.31578947]\n",
|
|
" [0.15789474 0.31578947]\n",
|
|
" [0.21052632 0.31578947]\n",
|
|
" [0.26315789 0.31578947]\n",
|
|
" [0.31578947 0.31578947]\n",
|
|
" [0.36842105 0.31578947]\n",
|
|
" [0.42105263 0.31578947]\n",
|
|
" [0.47368421 0.31578947]\n",
|
|
" [0.52631579 0.31578947]\n",
|
|
" [0.57894737 0.31578947]\n",
|
|
" [0.63157895 0.31578947]\n",
|
|
" [0.68421053 0.31578947]\n",
|
|
" [0.73684211 0.31578947]\n",
|
|
" [0.78947368 0.31578947]\n",
|
|
" [0.84210526 0.31578947]\n",
|
|
" [0.89473684 0.31578947]\n",
|
|
" [0.94736842 0.31578947]\n",
|
|
" [1. 0.31578947]\n",
|
|
" [0. 0.36842105]\n",
|
|
" [0.05263158 0.36842105]\n",
|
|
" [0.10526316 0.36842105]\n",
|
|
" [0.15789474 0.36842105]\n",
|
|
" [0.21052632 0.36842105]\n",
|
|
" [0.26315789 0.36842105]\n",
|
|
" [0.31578947 0.36842105]\n",
|
|
" [0.36842105 0.36842105]\n",
|
|
" [0.42105263 0.36842105]\n",
|
|
" [0.47368421 0.36842105]\n",
|
|
" [0.52631579 0.36842105]\n",
|
|
" [0.57894737 0.36842105]\n",
|
|
" [0.63157895 0.36842105]\n",
|
|
" [0.68421053 0.36842105]\n",
|
|
" [0.73684211 0.36842105]\n",
|
|
" [0.78947368 0.36842105]\n",
|
|
" [0.84210526 0.36842105]\n",
|
|
" [0.89473684 0.36842105]\n",
|
|
" [0.94736842 0.36842105]\n",
|
|
" [1. 0.36842105]\n",
|
|
" [0. 0.42105263]\n",
|
|
" [0.05263158 0.42105263]\n",
|
|
" [0.10526316 0.42105263]\n",
|
|
" [0.15789474 0.42105263]\n",
|
|
" [0.21052632 0.42105263]\n",
|
|
" [0.26315789 0.42105263]\n",
|
|
" [0.31578947 0.42105263]\n",
|
|
" [0.36842105 0.42105263]\n",
|
|
" [0.42105263 0.42105263]\n",
|
|
" [0.47368421 0.42105263]\n",
|
|
" [0.52631579 0.42105263]\n",
|
|
" [0.57894737 0.42105263]\n",
|
|
" [0.63157895 0.42105263]\n",
|
|
" [0.68421053 0.42105263]\n",
|
|
" [0.73684211 0.42105263]\n",
|
|
" [0.78947368 0.42105263]\n",
|
|
" [0.84210526 0.42105263]\n",
|
|
" [0.89473684 0.42105263]\n",
|
|
" [0.94736842 0.42105263]\n",
|
|
" [1. 0.42105263]\n",
|
|
" [0. 0.47368421]\n",
|
|
" [0.05263158 0.47368421]\n",
|
|
" [0.10526316 0.47368421]\n",
|
|
" [0.15789474 0.47368421]\n",
|
|
" [0.21052632 0.47368421]\n",
|
|
" [0.26315789 0.47368421]\n",
|
|
" [0.31578947 0.47368421]\n",
|
|
" [0.36842105 0.47368421]\n",
|
|
" [0.42105263 0.47368421]\n",
|
|
" [0.47368421 0.47368421]\n",
|
|
" [0.52631579 0.47368421]\n",
|
|
" [0.57894737 0.47368421]\n",
|
|
" [0.63157895 0.47368421]\n",
|
|
" [0.68421053 0.47368421]\n",
|
|
" [0.73684211 0.47368421]\n",
|
|
" [0.78947368 0.47368421]\n",
|
|
" [0.84210526 0.47368421]\n",
|
|
" [0.89473684 0.47368421]\n",
|
|
" [0.94736842 0.47368421]\n",
|
|
" [1. 0.47368421]\n",
|
|
" [0. 0.52631579]\n",
|
|
" [0.05263158 0.52631579]\n",
|
|
" [0.10526316 0.52631579]\n",
|
|
" [0.15789474 0.52631579]\n",
|
|
" [0.21052632 0.52631579]\n",
|
|
" [0.26315789 0.52631579]\n",
|
|
" [0.31578947 0.52631579]\n",
|
|
" [0.36842105 0.52631579]\n",
|
|
" [0.42105263 0.52631579]\n",
|
|
" [0.47368421 0.52631579]\n",
|
|
" [0.52631579 0.52631579]\n",
|
|
" [0.57894737 0.52631579]\n",
|
|
" [0.63157895 0.52631579]\n",
|
|
" [0.68421053 0.52631579]\n",
|
|
" [0.73684211 0.52631579]\n",
|
|
" [0.78947368 0.52631579]\n",
|
|
" [0.84210526 0.52631579]\n",
|
|
" [0.89473684 0.52631579]\n",
|
|
" [0.94736842 0.52631579]\n",
|
|
" [1. 0.52631579]\n",
|
|
" [0. 0.57894737]\n",
|
|
" [0.05263158 0.57894737]\n",
|
|
" [0.10526316 0.57894737]\n",
|
|
" [0.15789474 0.57894737]\n",
|
|
" [0.21052632 0.57894737]\n",
|
|
" [0.26315789 0.57894737]\n",
|
|
" [0.31578947 0.57894737]\n",
|
|
" [0.36842105 0.57894737]\n",
|
|
" [0.42105263 0.57894737]\n",
|
|
" [0.47368421 0.57894737]\n",
|
|
" [0.52631579 0.57894737]\n",
|
|
" [0.57894737 0.57894737]\n",
|
|
" [0.63157895 0.57894737]\n",
|
|
" [0.68421053 0.57894737]\n",
|
|
" [0.73684211 0.57894737]\n",
|
|
" [0.78947368 0.57894737]\n",
|
|
" [0.84210526 0.57894737]\n",
|
|
" [0.89473684 0.57894737]\n",
|
|
" [0.94736842 0.57894737]\n",
|
|
" [1. 0.57894737]\n",
|
|
" [0. 0.63157895]\n",
|
|
" [0.05263158 0.63157895]\n",
|
|
" [0.10526316 0.63157895]\n",
|
|
" [0.15789474 0.63157895]\n",
|
|
" [0.21052632 0.63157895]\n",
|
|
" [0.26315789 0.63157895]\n",
|
|
" [0.31578947 0.63157895]\n",
|
|
" [0.36842105 0.63157895]\n",
|
|
" [0.42105263 0.63157895]\n",
|
|
" [0.47368421 0.63157895]\n",
|
|
" [0.52631579 0.63157895]\n",
|
|
" [0.57894737 0.63157895]\n",
|
|
" [0.63157895 0.63157895]\n",
|
|
" [0.68421053 0.63157895]\n",
|
|
" [0.73684211 0.63157895]\n",
|
|
" [0.78947368 0.63157895]\n",
|
|
" [0.84210526 0.63157895]\n",
|
|
" [0.89473684 0.63157895]\n",
|
|
" [0.94736842 0.63157895]\n",
|
|
" [1. 0.63157895]\n",
|
|
" [0. 0.68421053]\n",
|
|
" [0.05263158 0.68421053]\n",
|
|
" [0.10526316 0.68421053]\n",
|
|
" [0.15789474 0.68421053]\n",
|
|
" [0.21052632 0.68421053]\n",
|
|
" [0.26315789 0.68421053]\n",
|
|
" [0.31578947 0.68421053]\n",
|
|
" [0.36842105 0.68421053]\n",
|
|
" [0.42105263 0.68421053]\n",
|
|
" [0.47368421 0.68421053]\n",
|
|
" [0.52631579 0.68421053]\n",
|
|
" [0.57894737 0.68421053]\n",
|
|
" [0.63157895 0.68421053]\n",
|
|
" [0.68421053 0.68421053]\n",
|
|
" [0.73684211 0.68421053]\n",
|
|
" [0.78947368 0.68421053]\n",
|
|
" [0.84210526 0.68421053]\n",
|
|
" [0.89473684 0.68421053]\n",
|
|
" [0.94736842 0.68421053]\n",
|
|
" [1. 0.68421053]\n",
|
|
" [0. 0.73684211]\n",
|
|
" [0.05263158 0.73684211]\n",
|
|
" [0.10526316 0.73684211]\n",
|
|
" [0.15789474 0.73684211]\n",
|
|
" [0.21052632 0.73684211]\n",
|
|
" [0.26315789 0.73684211]\n",
|
|
" [0.31578947 0.73684211]\n",
|
|
" [0.36842105 0.73684211]\n",
|
|
" [0.42105263 0.73684211]\n",
|
|
" [0.47368421 0.73684211]\n",
|
|
" [0.52631579 0.73684211]\n",
|
|
" [0.57894737 0.73684211]\n",
|
|
" [0.63157895 0.73684211]\n",
|
|
" [0.68421053 0.73684211]\n",
|
|
" [0.73684211 0.73684211]\n",
|
|
" [0.78947368 0.73684211]\n",
|
|
" [0.84210526 0.73684211]\n",
|
|
" [0.89473684 0.73684211]\n",
|
|
" [0.94736842 0.73684211]\n",
|
|
" [1. 0.73684211]\n",
|
|
" [0. 0.78947368]\n",
|
|
" [0.05263158 0.78947368]\n",
|
|
" [0.10526316 0.78947368]\n",
|
|
" [0.15789474 0.78947368]\n",
|
|
" [0.21052632 0.78947368]\n",
|
|
" [0.26315789 0.78947368]\n",
|
|
" [0.31578947 0.78947368]\n",
|
|
" [0.36842105 0.78947368]\n",
|
|
" [0.42105263 0.78947368]\n",
|
|
" [0.47368421 0.78947368]\n",
|
|
" [0.52631579 0.78947368]\n",
|
|
" [0.57894737 0.78947368]\n",
|
|
" [0.63157895 0.78947368]\n",
|
|
" [0.68421053 0.78947368]\n",
|
|
" [0.73684211 0.78947368]\n",
|
|
" [0.78947368 0.78947368]\n",
|
|
" [0.84210526 0.78947368]\n",
|
|
" [0.89473684 0.78947368]\n",
|
|
" [0.94736842 0.78947368]\n",
|
|
" [1. 0.78947368]\n",
|
|
" [0. 0.84210526]\n",
|
|
" [0.05263158 0.84210526]\n",
|
|
" [0.10526316 0.84210526]\n",
|
|
" [0.15789474 0.84210526]\n",
|
|
" [0.21052632 0.84210526]\n",
|
|
" [0.26315789 0.84210526]\n",
|
|
" [0.31578947 0.84210526]\n",
|
|
" [0.36842105 0.84210526]\n",
|
|
" [0.42105263 0.84210526]\n",
|
|
" [0.47368421 0.84210526]\n",
|
|
" [0.52631579 0.84210526]\n",
|
|
" [0.57894737 0.84210526]\n",
|
|
" [0.63157895 0.84210526]\n",
|
|
" [0.68421053 0.84210526]\n",
|
|
" [0.73684211 0.84210526]\n",
|
|
" [0.78947368 0.84210526]\n",
|
|
" [0.84210526 0.84210526]\n",
|
|
" [0.89473684 0.84210526]\n",
|
|
" [0.94736842 0.84210526]\n",
|
|
" [1. 0.84210526]\n",
|
|
" [0. 0.89473684]\n",
|
|
" [0.05263158 0.89473684]\n",
|
|
" [0.10526316 0.89473684]\n",
|
|
" [0.15789474 0.89473684]\n",
|
|
" [0.21052632 0.89473684]\n",
|
|
" [0.26315789 0.89473684]\n",
|
|
" [0.31578947 0.89473684]\n",
|
|
" [0.36842105 0.89473684]\n",
|
|
" [0.42105263 0.89473684]\n",
|
|
" [0.47368421 0.89473684]\n",
|
|
" [0.52631579 0.89473684]\n",
|
|
" [0.57894737 0.89473684]\n",
|
|
" [0.63157895 0.89473684]\n",
|
|
" [0.68421053 0.89473684]\n",
|
|
" [0.73684211 0.89473684]\n",
|
|
" [0.78947368 0.89473684]\n",
|
|
" [0.84210526 0.89473684]\n",
|
|
" [0.89473684 0.89473684]\n",
|
|
" [0.94736842 0.89473684]\n",
|
|
" [1. 0.89473684]\n",
|
|
" [0. 0.94736842]\n",
|
|
" [0.05263158 0.94736842]\n",
|
|
" [0.10526316 0.94736842]\n",
|
|
" [0.15789474 0.94736842]\n",
|
|
" [0.21052632 0.94736842]\n",
|
|
" [0.26315789 0.94736842]\n",
|
|
" [0.31578947 0.94736842]\n",
|
|
" [0.36842105 0.94736842]\n",
|
|
" [0.42105263 0.94736842]\n",
|
|
" [0.47368421 0.94736842]\n",
|
|
" [0.52631579 0.94736842]\n",
|
|
" [0.57894737 0.94736842]\n",
|
|
" [0.63157895 0.94736842]\n",
|
|
" [0.68421053 0.94736842]\n",
|
|
" [0.73684211 0.94736842]\n",
|
|
" [0.78947368 0.94736842]\n",
|
|
" [0.84210526 0.94736842]\n",
|
|
" [0.89473684 0.94736842]\n",
|
|
" [0.94736842 0.94736842]\n",
|
|
" [1. 0.94736842]\n",
|
|
" [0. 1. ]\n",
|
|
" [0.05263158 1. ]\n",
|
|
" [0.10526316 1. ]\n",
|
|
" [0.15789474 1. ]\n",
|
|
" [0.21052632 1. ]\n",
|
|
" [0.26315789 1. ]\n",
|
|
" [0.31578947 1. ]\n",
|
|
" [0.36842105 1. ]\n",
|
|
" [0.42105263 1. ]\n",
|
|
" [0.47368421 1. ]\n",
|
|
" [0.52631579 1. ]\n",
|
|
" [0.57894737 1. ]\n",
|
|
" [0.63157895 1. ]\n",
|
|
" [0.68421053 1. ]\n",
|
|
" [0.73684211 1. ]\n",
|
|
" [0.78947368 1. ]\n",
|
|
" [0.84210526 1. ]\n",
|
|
" [0.89473684 1. ]\n",
|
|
" [0.94736842 1. ]\n",
|
|
" [1. 1. ]]\n",
|
|
"D ['x', 'y']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000],\n",
|
|
" [0.0000, 0.0526],\n",
|
|
" [0.0526, 0.0526],\n",
|
|
" [0.1053, 0.0526],\n",
|
|
" [0.1579, 0.0526],\n",
|
|
" [0.2105, 0.0526],\n",
|
|
" [0.2632, 0.0526],\n",
|
|
" [0.3158, 0.0526],\n",
|
|
" [0.3684, 0.0526],\n",
|
|
" [0.4211, 0.0526],\n",
|
|
" [0.4737, 0.0526],\n",
|
|
" [0.5263, 0.0526],\n",
|
|
" [0.5789, 0.0526],\n",
|
|
" [0.6316, 0.0526],\n",
|
|
" [0.6842, 0.0526],\n",
|
|
" [0.7368, 0.0526],\n",
|
|
" [0.7895, 0.0526],\n",
|
|
" [0.8421, 0.0526],\n",
|
|
" [0.8947, 0.0526],\n",
|
|
" [0.9474, 0.0526],\n",
|
|
" [1.0000, 0.0526],\n",
|
|
" [0.0000, 0.1053],\n",
|
|
" [0.0526, 0.1053],\n",
|
|
" [0.1053, 0.1053],\n",
|
|
" [0.1579, 0.1053],\n",
|
|
" [0.2105, 0.1053],\n",
|
|
" [0.2632, 0.1053],\n",
|
|
" [0.3158, 0.1053],\n",
|
|
" [0.3684, 0.1053],\n",
|
|
" [0.4211, 0.1053],\n",
|
|
" [0.4737, 0.1053],\n",
|
|
" [0.5263, 0.1053],\n",
|
|
" [0.5789, 0.1053],\n",
|
|
" [0.6316, 0.1053],\n",
|
|
" [0.6842, 0.1053],\n",
|
|
" [0.7368, 0.1053],\n",
|
|
" [0.7895, 0.1053],\n",
|
|
" [0.8421, 0.1053],\n",
|
|
" [0.8947, 0.1053],\n",
|
|
" [0.9474, 0.1053],\n",
|
|
" [1.0000, 0.1053],\n",
|
|
" [0.0000, 0.1579],\n",
|
|
" [0.0526, 0.1579],\n",
|
|
" [0.1053, 0.1579],\n",
|
|
" [0.1579, 0.1579],\n",
|
|
" [0.2105, 0.1579],\n",
|
|
" [0.2632, 0.1579],\n",
|
|
" [0.3158, 0.1579],\n",
|
|
" [0.3684, 0.1579],\n",
|
|
" [0.4211, 0.1579],\n",
|
|
" [0.4737, 0.1579],\n",
|
|
" [0.5263, 0.1579],\n",
|
|
" [0.5789, 0.1579],\n",
|
|
" [0.6316, 0.1579],\n",
|
|
" [0.6842, 0.1579],\n",
|
|
" [0.7368, 0.1579],\n",
|
|
" [0.7895, 0.1579],\n",
|
|
" [0.8421, 0.1579],\n",
|
|
" [0.8947, 0.1579],\n",
|
|
" [0.9474, 0.1579],\n",
|
|
" [1.0000, 0.1579],\n",
|
|
" [0.0000, 0.2105],\n",
|
|
" [0.0526, 0.2105],\n",
|
|
" [0.1053, 0.2105],\n",
|
|
" [0.1579, 0.2105],\n",
|
|
" [0.2105, 0.2105],\n",
|
|
" [0.2632, 0.2105],\n",
|
|
" [0.3158, 0.2105],\n",
|
|
" [0.3684, 0.2105],\n",
|
|
" [0.4211, 0.2105],\n",
|
|
" [0.4737, 0.2105],\n",
|
|
" [0.5263, 0.2105],\n",
|
|
" [0.5789, 0.2105],\n",
|
|
" [0.6316, 0.2105],\n",
|
|
" [0.6842, 0.2105],\n",
|
|
" [0.7368, 0.2105],\n",
|
|
" [0.7895, 0.2105],\n",
|
|
" [0.8421, 0.2105],\n",
|
|
" [0.8947, 0.2105],\n",
|
|
" [0.9474, 0.2105],\n",
|
|
" [1.0000, 0.2105],\n",
|
|
" [0.0000, 0.2632],\n",
|
|
" [0.0526, 0.2632],\n",
|
|
" [0.1053, 0.2632],\n",
|
|
" [0.1579, 0.2632],\n",
|
|
" [0.2105, 0.2632],\n",
|
|
" [0.2632, 0.2632],\n",
|
|
" [0.3158, 0.2632],\n",
|
|
" [0.3684, 0.2632],\n",
|
|
" [0.4211, 0.2632],\n",
|
|
" [0.4737, 0.2632],\n",
|
|
" [0.5263, 0.2632],\n",
|
|
" [0.5789, 0.2632],\n",
|
|
" [0.6316, 0.2632],\n",
|
|
" [0.6842, 0.2632],\n",
|
|
" [0.7368, 0.2632],\n",
|
|
" [0.7895, 0.2632],\n",
|
|
" [0.8421, 0.2632],\n",
|
|
" [0.8947, 0.2632],\n",
|
|
" [0.9474, 0.2632],\n",
|
|
" [1.0000, 0.2632],\n",
|
|
" [0.0000, 0.3158],\n",
|
|
" [0.0526, 0.3158],\n",
|
|
" [0.1053, 0.3158],\n",
|
|
" [0.1579, 0.3158],\n",
|
|
" [0.2105, 0.3158],\n",
|
|
" [0.2632, 0.3158],\n",
|
|
" [0.3158, 0.3158],\n",
|
|
" [0.3684, 0.3158],\n",
|
|
" [0.4211, 0.3158],\n",
|
|
" [0.4737, 0.3158],\n",
|
|
" [0.5263, 0.3158],\n",
|
|
" [0.5789, 0.3158],\n",
|
|
" [0.6316, 0.3158],\n",
|
|
" [0.6842, 0.3158],\n",
|
|
" [0.7368, 0.3158],\n",
|
|
" [0.7895, 0.3158],\n",
|
|
" [0.8421, 0.3158],\n",
|
|
" [0.8947, 0.3158],\n",
|
|
" [0.9474, 0.3158],\n",
|
|
" [1.0000, 0.3158],\n",
|
|
" [0.0000, 0.3684],\n",
|
|
" [0.0526, 0.3684],\n",
|
|
" [0.1053, 0.3684],\n",
|
|
" [0.1579, 0.3684],\n",
|
|
" [0.2105, 0.3684],\n",
|
|
" [0.2632, 0.3684],\n",
|
|
" [0.3158, 0.3684],\n",
|
|
" [0.3684, 0.3684],\n",
|
|
" [0.4211, 0.3684],\n",
|
|
" [0.4737, 0.3684],\n",
|
|
" [0.5263, 0.3684],\n",
|
|
" [0.5789, 0.3684],\n",
|
|
" [0.6316, 0.3684],\n",
|
|
" [0.6842, 0.3684],\n",
|
|
" [0.7368, 0.3684],\n",
|
|
" [0.7895, 0.3684],\n",
|
|
" [0.8421, 0.3684],\n",
|
|
" [0.8947, 0.3684],\n",
|
|
" [0.9474, 0.3684],\n",
|
|
" [1.0000, 0.3684],\n",
|
|
" [0.0000, 0.4211],\n",
|
|
" [0.0526, 0.4211],\n",
|
|
" [0.1053, 0.4211],\n",
|
|
" [0.1579, 0.4211],\n",
|
|
" [0.2105, 0.4211],\n",
|
|
" [0.2632, 0.4211],\n",
|
|
" [0.3158, 0.4211],\n",
|
|
" [0.3684, 0.4211],\n",
|
|
" [0.4211, 0.4211],\n",
|
|
" [0.4737, 0.4211],\n",
|
|
" [0.5263, 0.4211],\n",
|
|
" [0.5789, 0.4211],\n",
|
|
" [0.6316, 0.4211],\n",
|
|
" [0.6842, 0.4211],\n",
|
|
" [0.7368, 0.4211],\n",
|
|
" [0.7895, 0.4211],\n",
|
|
" [0.8421, 0.4211],\n",
|
|
" [0.8947, 0.4211],\n",
|
|
" [0.9474, 0.4211],\n",
|
|
" [1.0000, 0.4211],\n",
|
|
" [0.0000, 0.4737],\n",
|
|
" [0.0526, 0.4737],\n",
|
|
" [0.1053, 0.4737],\n",
|
|
" [0.1579, 0.4737],\n",
|
|
" [0.2105, 0.4737],\n",
|
|
" [0.2632, 0.4737],\n",
|
|
" [0.3158, 0.4737],\n",
|
|
" [0.3684, 0.4737],\n",
|
|
" [0.4211, 0.4737],\n",
|
|
" [0.4737, 0.4737],\n",
|
|
" [0.5263, 0.4737],\n",
|
|
" [0.5789, 0.4737],\n",
|
|
" [0.6316, 0.4737],\n",
|
|
" [0.6842, 0.4737],\n",
|
|
" [0.7368, 0.4737],\n",
|
|
" [0.7895, 0.4737],\n",
|
|
" [0.8421, 0.4737],\n",
|
|
" [0.8947, 0.4737],\n",
|
|
" [0.9474, 0.4737],\n",
|
|
" [1.0000, 0.4737],\n",
|
|
" [0.0000, 0.5263],\n",
|
|
" [0.0526, 0.5263],\n",
|
|
" [0.1053, 0.5263],\n",
|
|
" [0.1579, 0.5263],\n",
|
|
" [0.2105, 0.5263],\n",
|
|
" [0.2632, 0.5263],\n",
|
|
" [0.3158, 0.5263],\n",
|
|
" [0.3684, 0.5263],\n",
|
|
" [0.4211, 0.5263],\n",
|
|
" [0.4737, 0.5263],\n",
|
|
" [0.5263, 0.5263],\n",
|
|
" [0.5789, 0.5263],\n",
|
|
" [0.6316, 0.5263],\n",
|
|
" [0.6842, 0.5263],\n",
|
|
" [0.7368, 0.5263],\n",
|
|
" [0.7895, 0.5263],\n",
|
|
" [0.8421, 0.5263],\n",
|
|
" [0.8947, 0.5263],\n",
|
|
" [0.9474, 0.5263],\n",
|
|
" [1.0000, 0.5263],\n",
|
|
" [0.0000, 0.5789],\n",
|
|
" [0.0526, 0.5789],\n",
|
|
" [0.1053, 0.5789],\n",
|
|
" [0.1579, 0.5789],\n",
|
|
" [0.2105, 0.5789],\n",
|
|
" [0.2632, 0.5789],\n",
|
|
" [0.3158, 0.5789],\n",
|
|
" [0.3684, 0.5789],\n",
|
|
" [0.4211, 0.5789],\n",
|
|
" [0.4737, 0.5789],\n",
|
|
" [0.5263, 0.5789],\n",
|
|
" [0.5789, 0.5789],\n",
|
|
" [0.6316, 0.5789],\n",
|
|
" [0.6842, 0.5789],\n",
|
|
" [0.7368, 0.5789],\n",
|
|
" [0.7895, 0.5789],\n",
|
|
" [0.8421, 0.5789],\n",
|
|
" [0.8947, 0.5789],\n",
|
|
" [0.9474, 0.5789],\n",
|
|
" [1.0000, 0.5789],\n",
|
|
" [0.0000, 0.6316],\n",
|
|
" [0.0526, 0.6316],\n",
|
|
" [0.1053, 0.6316],\n",
|
|
" [0.1579, 0.6316],\n",
|
|
" [0.2105, 0.6316],\n",
|
|
" [0.2632, 0.6316],\n",
|
|
" [0.3158, 0.6316],\n",
|
|
" [0.3684, 0.6316],\n",
|
|
" [0.4211, 0.6316],\n",
|
|
" [0.4737, 0.6316],\n",
|
|
" [0.5263, 0.6316],\n",
|
|
" [0.5789, 0.6316],\n",
|
|
" [0.6316, 0.6316],\n",
|
|
" [0.6842, 0.6316],\n",
|
|
" [0.7368, 0.6316],\n",
|
|
" [0.7895, 0.6316],\n",
|
|
" [0.8421, 0.6316],\n",
|
|
" [0.8947, 0.6316],\n",
|
|
" [0.9474, 0.6316],\n",
|
|
" [1.0000, 0.6316],\n",
|
|
" [0.0000, 0.6842],\n",
|
|
" [0.0526, 0.6842],\n",
|
|
" [0.1053, 0.6842],\n",
|
|
" [0.1579, 0.6842],\n",
|
|
" [0.2105, 0.6842],\n",
|
|
" [0.2632, 0.6842],\n",
|
|
" [0.3158, 0.6842],\n",
|
|
" [0.3684, 0.6842],\n",
|
|
" [0.4211, 0.6842],\n",
|
|
" [0.4737, 0.6842],\n",
|
|
" [0.5263, 0.6842],\n",
|
|
" [0.5789, 0.6842],\n",
|
|
" [0.6316, 0.6842],\n",
|
|
" [0.6842, 0.6842],\n",
|
|
" [0.7368, 0.6842],\n",
|
|
" [0.7895, 0.6842],\n",
|
|
" [0.8421, 0.6842],\n",
|
|
" [0.8947, 0.6842],\n",
|
|
" [0.9474, 0.6842],\n",
|
|
" [1.0000, 0.6842],\n",
|
|
" [0.0000, 0.7368],\n",
|
|
" [0.0526, 0.7368],\n",
|
|
" [0.1053, 0.7368],\n",
|
|
" [0.1579, 0.7368],\n",
|
|
" [0.2105, 0.7368],\n",
|
|
" [0.2632, 0.7368],\n",
|
|
" [0.3158, 0.7368],\n",
|
|
" [0.3684, 0.7368],\n",
|
|
" [0.4211, 0.7368],\n",
|
|
" [0.4737, 0.7368],\n",
|
|
" [0.5263, 0.7368],\n",
|
|
" [0.5789, 0.7368],\n",
|
|
" [0.6316, 0.7368],\n",
|
|
" [0.6842, 0.7368],\n",
|
|
" [0.7368, 0.7368],\n",
|
|
" [0.7895, 0.7368],\n",
|
|
" [0.8421, 0.7368],\n",
|
|
" [0.8947, 0.7368],\n",
|
|
" [0.9474, 0.7368],\n",
|
|
" [1.0000, 0.7368],\n",
|
|
" [0.0000, 0.7895],\n",
|
|
" [0.0526, 0.7895],\n",
|
|
" [0.1053, 0.7895],\n",
|
|
" [0.1579, 0.7895],\n",
|
|
" [0.2105, 0.7895],\n",
|
|
" [0.2632, 0.7895],\n",
|
|
" [0.3158, 0.7895],\n",
|
|
" [0.3684, 0.7895],\n",
|
|
" [0.4211, 0.7895],\n",
|
|
" [0.4737, 0.7895],\n",
|
|
" [0.5263, 0.7895],\n",
|
|
" [0.5789, 0.7895],\n",
|
|
" [0.6316, 0.7895],\n",
|
|
" [0.6842, 0.7895],\n",
|
|
" [0.7368, 0.7895],\n",
|
|
" [0.7895, 0.7895],\n",
|
|
" [0.8421, 0.7895],\n",
|
|
" [0.8947, 0.7895],\n",
|
|
" [0.9474, 0.7895],\n",
|
|
" [1.0000, 0.7895],\n",
|
|
" [0.0000, 0.8421],\n",
|
|
" [0.0526, 0.8421],\n",
|
|
" [0.1053, 0.8421],\n",
|
|
" [0.1579, 0.8421],\n",
|
|
" [0.2105, 0.8421],\n",
|
|
" [0.2632, 0.8421],\n",
|
|
" [0.3158, 0.8421],\n",
|
|
" [0.3684, 0.8421],\n",
|
|
" [0.4211, 0.8421],\n",
|
|
" [0.4737, 0.8421],\n",
|
|
" [0.5263, 0.8421],\n",
|
|
" [0.5789, 0.8421],\n",
|
|
" [0.6316, 0.8421],\n",
|
|
" [0.6842, 0.8421],\n",
|
|
" [0.7368, 0.8421],\n",
|
|
" [0.7895, 0.8421],\n",
|
|
" [0.8421, 0.8421],\n",
|
|
" [0.8947, 0.8421],\n",
|
|
" [0.9474, 0.8421],\n",
|
|
" [1.0000, 0.8421],\n",
|
|
" [0.0000, 0.8947],\n",
|
|
" [0.0526, 0.8947],\n",
|
|
" [0.1053, 0.8947],\n",
|
|
" [0.1579, 0.8947],\n",
|
|
" [0.2105, 0.8947],\n",
|
|
" [0.2632, 0.8947],\n",
|
|
" [0.3158, 0.8947],\n",
|
|
" [0.3684, 0.8947],\n",
|
|
" [0.4211, 0.8947],\n",
|
|
" [0.4737, 0.8947],\n",
|
|
" [0.5263, 0.8947],\n",
|
|
" [0.5789, 0.8947],\n",
|
|
" [0.6316, 0.8947],\n",
|
|
" [0.6842, 0.8947],\n",
|
|
" [0.7368, 0.8947],\n",
|
|
" [0.7895, 0.8947],\n",
|
|
" [0.8421, 0.8947],\n",
|
|
" [0.8947, 0.8947],\n",
|
|
" [0.9474, 0.8947],\n",
|
|
" [1.0000, 0.8947],\n",
|
|
" [0.0000, 0.9474],\n",
|
|
" [0.0526, 0.9474],\n",
|
|
" [0.1053, 0.9474],\n",
|
|
" [0.1579, 0.9474],\n",
|
|
" [0.2105, 0.9474],\n",
|
|
" [0.2632, 0.9474],\n",
|
|
" [0.3158, 0.9474],\n",
|
|
" [0.3684, 0.9474],\n",
|
|
" [0.4211, 0.9474],\n",
|
|
" [0.4737, 0.9474],\n",
|
|
" [0.5263, 0.9474],\n",
|
|
" [0.5789, 0.9474],\n",
|
|
" [0.6316, 0.9474],\n",
|
|
" [0.6842, 0.9474],\n",
|
|
" [0.7368, 0.9474],\n",
|
|
" [0.7895, 0.9474],\n",
|
|
" [0.8421, 0.9474],\n",
|
|
" [0.8947, 0.9474],\n",
|
|
" [0.9474, 0.9474],\n",
|
|
" [1.0000, 0.9474],\n",
|
|
" [0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma1 ['x', 'y']\n",
|
|
" tensor([[0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma2 ['x', 'y']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma3 ['y', 'x']\n",
|
|
" tensor([[0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma4 ['y', 'x']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000]], dtype=torch.float64)\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[epoch 00100] 6.878796e-02 2.017613e-04 3.003635e-04 3.583906e-04 1.980003e-04 6.772944e-02 \n",
|
|
"[epoch 00200] 1.158571e-02 2.650677e-04 6.115279e-04 2.988482e-04 1.831308e-04 1.022714e-02 \n",
|
|
"[epoch 00300] 5.272933e-03 4.600154e-04 1.040138e-04 3.390727e-04 1.013814e-04 4.268450e-03 \n",
|
|
"[epoch 00400] 2.731197e-03 3.901181e-04 5.037483e-05 2.867773e-04 9.309331e-05 1.910833e-03 \n",
|
|
"[epoch 00500] 1.978540e-03 2.757899e-04 3.634115e-05 2.359510e-04 7.455034e-05 1.355907e-03 \n",
|
|
"[epoch 00600] 1.565549e-03 2.116531e-04 2.484339e-05 2.005362e-04 4.221788e-05 1.086298e-03 \n",
|
|
"[epoch 00700] 1.158251e-03 1.500884e-04 1.541912e-05 1.520065e-04 1.981627e-05 8.209208e-04 \n",
|
|
"[epoch 00800] 8.165265e-04 9.479927e-05 1.148044e-05 9.832595e-05 1.049601e-05 6.014249e-04 \n",
|
|
"[epoch 00900] 5.707949e-04 5.818372e-05 7.936006e-06 5.908898e-05 5.243264e-06 4.403429e-04 \n",
|
|
"[epoch 01000] 4.060991e-04 3.557640e-05 6.661481e-06 3.313599e-05 4.562967e-06 3.261623e-04 \n",
|
|
"[epoch 01100] 5.300120e-04 9.033549e-05 3.910881e-05 8.092279e-05 1.735218e-05 3.022927e-04 \n",
|
|
"[epoch 01200] 2.304126e-04 1.386638e-05 5.005459e-06 1.144507e-05 2.447036e-06 1.976487e-04 \n",
|
|
"[epoch 01300] 1.976152e-04 1.035552e-05 5.872588e-06 1.006068e-05 6.168130e-06 1.651583e-04 \n",
|
|
"[epoch 01400] 1.531195e-04 5.888318e-06 3.834312e-06 4.807262e-06 1.961287e-06 1.366283e-04 \n",
|
|
"[epoch 01500] 1.312273e-04 4.166367e-06 3.336321e-06 3.791277e-06 2.463135e-06 1.174702e-04 \n",
|
|
"[epoch 01600] 1.114564e-04 2.928235e-06 2.786261e-06 2.385679e-06 1.601541e-06 1.017547e-04 \n",
|
|
"[epoch 01700] 1.157396e-04 7.736503e-06 5.964195e-06 6.592890e-06 3.184846e-06 9.226115e-05 \n",
|
|
"[epoch 01800] 8.465703e-05 1.581805e-06 1.941634e-06 1.275066e-06 1.277858e-06 7.858067e-05 \n",
|
|
"[epoch 01900] 7.406757e-05 1.146304e-06 1.621091e-06 9.020779e-07 1.062117e-06 6.933598e-05 \n",
|
|
"[epoch 02000] 6.920199e-05 1.731593e-06 1.674781e-06 1.671821e-06 1.604268e-06 6.251953e-05 \n",
|
|
"[epoch 02100] 5.802710e-05 6.135517e-07 1.123428e-06 4.666190e-07 7.530883e-07 5.507041e-05 \n",
|
|
"[epoch 02200] 5.118264e-05 4.106826e-07 9.138358e-07 3.131387e-07 6.075107e-07 4.893747e-05 \n",
|
|
"[epoch 02300] 4.665170e-05 4.718088e-07 9.899015e-07 3.874221e-07 5.417119e-07 4.426086e-05 \n",
|
|
"[epoch 02400] 4.096090e-05 1.844721e-07 6.268132e-07 1.456300e-07 3.939658e-07 3.961002e-05 \n",
|
|
"[epoch 02500] 3.646184e-05 1.035182e-07 4.989879e-07 9.139343e-08 2.998206e-07 3.546812e-05 \n",
|
|
"[epoch 02600] 3.723785e-05 1.293328e-06 8.051706e-07 1.182234e-06 8.750527e-07 3.308206e-05 \n",
|
|
"[epoch 02700] 2.997580e-05 3.462898e-08 3.440138e-07 5.172313e-08 1.763497e-07 2.936908e-05 \n",
|
|
"[epoch 02800] 2.707770e-05 2.021139e-08 2.668951e-07 4.798476e-08 1.274312e-07 2.661518e-05 \n",
|
|
"[epoch 02900] 2.447100e-05 2.083406e-08 2.027177e-07 5.558666e-08 8.736022e-08 2.410450e-05 \n",
|
|
"[epoch 03000] 2.362676e-05 3.762910e-07 2.075802e-07 3.231617e-07 2.247752e-07 2.249495e-05 \n",
|
|
"[epoch 03100] 2.080231e-05 4.330194e-08 1.363202e-07 8.245307e-08 4.598276e-08 2.049425e-05 \n",
|
|
"[epoch 03200] 1.910949e-05 6.753393e-08 1.029763e-07 1.074966e-07 3.380783e-08 1.879767e-05 \n",
|
|
"[epoch 03300] 1.758803e-05 9.718755e-08 7.747855e-08 1.361024e-07 2.814758e-08 1.724912e-05 \n",
|
|
"[epoch 03400] 1.797966e-05 6.072811e-07 1.495233e-07 4.814291e-07 2.535745e-07 1.648785e-05 \n",
|
|
"[epoch 03500] 1.553924e-05 1.363800e-07 6.375299e-08 1.687059e-07 3.329970e-08 1.513711e-05 \n",
|
|
"[epoch 03600] 1.454666e-05 1.698590e-07 5.382999e-08 1.995891e-07 4.025858e-08 1.408313e-05 \n",
|
|
"[epoch 03700] 1.365076e-05 2.021628e-07 4.991079e-08 2.299011e-07 5.090772e-08 1.311788e-05 \n",
|
|
"[epoch 03800] 1.304701e-05 2.238351e-07 8.329059e-08 2.120919e-07 7.170513e-08 1.245609e-05 \n",
|
|
"[epoch 03900] 1.235712e-05 2.262169e-07 7.032987e-08 2.628511e-07 7.747381e-08 1.172025e-05 \n",
|
|
"[epoch 04000] 1.173539e-05 2.699573e-07 6.046340e-08 2.856117e-07 9.087420e-08 1.102848e-05 \n",
|
|
"[epoch 04100] 1.118619e-05 2.973062e-07 6.757492e-08 3.127853e-07 1.066109e-07 1.040191e-05 \n",
|
|
"[epoch 04200] 6.261657e-05 1.394853e-05 8.362702e-06 1.509332e-05 7.588946e-06 1.762308e-05 \n",
|
|
"[epoch 04300] 1.039731e-05 3.158407e-07 8.395703e-08 3.244991e-07 1.342540e-07 9.538756e-06 \n",
|
|
"[epoch 04400] 1.001321e-05 3.418278e-07 9.067389e-08 3.492661e-07 1.466667e-07 9.084780e-06 \n",
|
|
"[epoch 04500] 9.666110e-06 3.604135e-07 1.016821e-07 3.712560e-07 1.604529e-07 8.672306e-06 \n",
|
|
"[epoch 04600] 3.165153e-05 6.097494e-06 3.724427e-06 7.001388e-06 3.253647e-06 1.157457e-05 \n",
|
|
"[epoch 04700] 9.164275e-06 3.636717e-07 1.155943e-07 3.704113e-07 1.795615e-07 8.135036e-06 \n",
|
|
"[epoch 04800] 8.912251e-06 3.814471e-07 1.232267e-07 3.900548e-07 1.877108e-07 7.829812e-06 \n",
|
|
"[epoch 04900] 8.683667e-06 3.920907e-07 1.341749e-07 4.073940e-07 1.967778e-07 7.553230e-06 \n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"2.0259822763711528e-05"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"poisson_problem = Poisson()\n",
|
|
"\n",
|
|
"model = FeedForward(layers=[10, 10],\n",
|
|
" output_variables=poisson_problem.output_variables,\n",
|
|
" input_variables=poisson_problem.input_variables)\n",
|
|
"\n",
|
|
"pinn = PINN(poisson_problem, model, lr=0.003, regularizer=1e-8)\n",
|
|
"pinn.span_pts(20, 'grid', ['D'])\n",
|
|
"pinn.span_pts(20, 'grid', ['gamma1', 'gamma2', 'gamma3', 'gamma4'])\n",
|
|
"pinn.train(5000, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b320fbd5",
|
|
"metadata": {},
|
|
"source": [
|
|
"The loss trend is saved in a dedicated txt file located in *tutorial1_files*."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "c249817b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"os.mkdir('tutorial1_files')\n",
|
|
"with open('tutorial1_files/poisson_history.txt', 'w') as file_:\n",
|
|
" for i, losses in enumerate(pinn.history):\n",
|
|
" file_.write('{} {}\\n'.format(i, sum(losses)))\n",
|
|
"pinn.save_state('tutorial1_files/pina.poisson')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7803e6ed",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now the *Plotter* class is used to plot the results.\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": 10,
|
|
"id": "0900748a",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[0. 0. ]\n",
|
|
" [0.00392157 0. ]\n",
|
|
" [0.00784314 0. ]\n",
|
|
" ...\n",
|
|
" [0.99215686 1. ]\n",
|
|
" [0.99607843 1. ]\n",
|
|
" [1. 1. ]]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 1152x432 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plotter = Plotter()\n",
|
|
"plotter.plot(pinn)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7e6fe021",
|
|
"metadata": {},
|
|
"source": [
|
|
"### The problem solution with extra-features"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f39c0033",
|
|
"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",
|
|
"[\\mathbf{x}, \\mathbf{y}, \\mathbf{k}(\\mathbf{x}, \\mathbf{y})], \\text{ with } \\mathbf{k}(\\mathbf{x}, \\mathbf{y})=\\sin{(\\pi \\mathbf{x})}\\sin{(\\pi \\mathbf{y})},\n",
|
|
"\\end{equation}\n",
|
|
"\n",
|
|
"where $\\mathbf{x}$ and $\\mathbf{y}$ are the coordinates of the points of the grid and $\\mathbf{k}(\\mathbf{x}, \\mathbf{y})$ is the forcing term evaluated at the grid points. \n",
|
|
"\n",
|
|
"This forcing term is initialized in the class *myFeature*."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "80a4a3b8",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[0. 0. ]\n",
|
|
" [0.05263158 0. ]\n",
|
|
" [0.10526316 0. ]\n",
|
|
" [0.15789474 0. ]\n",
|
|
" [0.21052632 0. ]\n",
|
|
" [0.26315789 0. ]\n",
|
|
" [0.31578947 0. ]\n",
|
|
" [0.36842105 0. ]\n",
|
|
" [0.42105263 0. ]\n",
|
|
" [0.47368421 0. ]\n",
|
|
" [0.52631579 0. ]\n",
|
|
" [0.57894737 0. ]\n",
|
|
" [0.63157895 0. ]\n",
|
|
" [0.68421053 0. ]\n",
|
|
" [0.73684211 0. ]\n",
|
|
" [0.78947368 0. ]\n",
|
|
" [0.84210526 0. ]\n",
|
|
" [0.89473684 0. ]\n",
|
|
" [0.94736842 0. ]\n",
|
|
" [1. 0. ]\n",
|
|
" [0. 0.05263158]\n",
|
|
" [0.05263158 0.05263158]\n",
|
|
" [0.10526316 0.05263158]\n",
|
|
" [0.15789474 0.05263158]\n",
|
|
" [0.21052632 0.05263158]\n",
|
|
" [0.26315789 0.05263158]\n",
|
|
" [0.31578947 0.05263158]\n",
|
|
" [0.36842105 0.05263158]\n",
|
|
" [0.42105263 0.05263158]\n",
|
|
" [0.47368421 0.05263158]\n",
|
|
" [0.52631579 0.05263158]\n",
|
|
" [0.57894737 0.05263158]\n",
|
|
" [0.63157895 0.05263158]\n",
|
|
" [0.68421053 0.05263158]\n",
|
|
" [0.73684211 0.05263158]\n",
|
|
" [0.78947368 0.05263158]\n",
|
|
" [0.84210526 0.05263158]\n",
|
|
" [0.89473684 0.05263158]\n",
|
|
" [0.94736842 0.05263158]\n",
|
|
" [1. 0.05263158]\n",
|
|
" [0. 0.10526316]\n",
|
|
" [0.05263158 0.10526316]\n",
|
|
" [0.10526316 0.10526316]\n",
|
|
" [0.15789474 0.10526316]\n",
|
|
" [0.21052632 0.10526316]\n",
|
|
" [0.26315789 0.10526316]\n",
|
|
" [0.31578947 0.10526316]\n",
|
|
" [0.36842105 0.10526316]\n",
|
|
" [0.42105263 0.10526316]\n",
|
|
" [0.47368421 0.10526316]\n",
|
|
" [0.52631579 0.10526316]\n",
|
|
" [0.57894737 0.10526316]\n",
|
|
" [0.63157895 0.10526316]\n",
|
|
" [0.68421053 0.10526316]\n",
|
|
" [0.73684211 0.10526316]\n",
|
|
" [0.78947368 0.10526316]\n",
|
|
" [0.84210526 0.10526316]\n",
|
|
" [0.89473684 0.10526316]\n",
|
|
" [0.94736842 0.10526316]\n",
|
|
" [1. 0.10526316]\n",
|
|
" [0. 0.15789474]\n",
|
|
" [0.05263158 0.15789474]\n",
|
|
" [0.10526316 0.15789474]\n",
|
|
" [0.15789474 0.15789474]\n",
|
|
" [0.21052632 0.15789474]\n",
|
|
" [0.26315789 0.15789474]\n",
|
|
" [0.31578947 0.15789474]\n",
|
|
" [0.36842105 0.15789474]\n",
|
|
" [0.42105263 0.15789474]\n",
|
|
" [0.47368421 0.15789474]\n",
|
|
" [0.52631579 0.15789474]\n",
|
|
" [0.57894737 0.15789474]\n",
|
|
" [0.63157895 0.15789474]\n",
|
|
" [0.68421053 0.15789474]\n",
|
|
" [0.73684211 0.15789474]\n",
|
|
" [0.78947368 0.15789474]\n",
|
|
" [0.84210526 0.15789474]\n",
|
|
" [0.89473684 0.15789474]\n",
|
|
" [0.94736842 0.15789474]\n",
|
|
" [1. 0.15789474]\n",
|
|
" [0. 0.21052632]\n",
|
|
" [0.05263158 0.21052632]\n",
|
|
" [0.10526316 0.21052632]\n",
|
|
" [0.15789474 0.21052632]\n",
|
|
" [0.21052632 0.21052632]\n",
|
|
" [0.26315789 0.21052632]\n",
|
|
" [0.31578947 0.21052632]\n",
|
|
" [0.36842105 0.21052632]\n",
|
|
" [0.42105263 0.21052632]\n",
|
|
" [0.47368421 0.21052632]\n",
|
|
" [0.52631579 0.21052632]\n",
|
|
" [0.57894737 0.21052632]\n",
|
|
" [0.63157895 0.21052632]\n",
|
|
" [0.68421053 0.21052632]\n",
|
|
" [0.73684211 0.21052632]\n",
|
|
" [0.78947368 0.21052632]\n",
|
|
" [0.84210526 0.21052632]\n",
|
|
" [0.89473684 0.21052632]\n",
|
|
" [0.94736842 0.21052632]\n",
|
|
" [1. 0.21052632]\n",
|
|
" [0. 0.26315789]\n",
|
|
" [0.05263158 0.26315789]\n",
|
|
" [0.10526316 0.26315789]\n",
|
|
" [0.15789474 0.26315789]\n",
|
|
" [0.21052632 0.26315789]\n",
|
|
" [0.26315789 0.26315789]\n",
|
|
" [0.31578947 0.26315789]\n",
|
|
" [0.36842105 0.26315789]\n",
|
|
" [0.42105263 0.26315789]\n",
|
|
" [0.47368421 0.26315789]\n",
|
|
" [0.52631579 0.26315789]\n",
|
|
" [0.57894737 0.26315789]\n",
|
|
" [0.63157895 0.26315789]\n",
|
|
" [0.68421053 0.26315789]\n",
|
|
" [0.73684211 0.26315789]\n",
|
|
" [0.78947368 0.26315789]\n",
|
|
" [0.84210526 0.26315789]\n",
|
|
" [0.89473684 0.26315789]\n",
|
|
" [0.94736842 0.26315789]\n",
|
|
" [1. 0.26315789]\n",
|
|
" [0. 0.31578947]\n",
|
|
" [0.05263158 0.31578947]\n",
|
|
" [0.10526316 0.31578947]\n",
|
|
" [0.15789474 0.31578947]\n",
|
|
" [0.21052632 0.31578947]\n",
|
|
" [0.26315789 0.31578947]\n",
|
|
" [0.31578947 0.31578947]\n",
|
|
" [0.36842105 0.31578947]\n",
|
|
" [0.42105263 0.31578947]\n",
|
|
" [0.47368421 0.31578947]\n",
|
|
" [0.52631579 0.31578947]\n",
|
|
" [0.57894737 0.31578947]\n",
|
|
" [0.63157895 0.31578947]\n",
|
|
" [0.68421053 0.31578947]\n",
|
|
" [0.73684211 0.31578947]\n",
|
|
" [0.78947368 0.31578947]\n",
|
|
" [0.84210526 0.31578947]\n",
|
|
" [0.89473684 0.31578947]\n",
|
|
" [0.94736842 0.31578947]\n",
|
|
" [1. 0.31578947]\n",
|
|
" [0. 0.36842105]\n",
|
|
" [0.05263158 0.36842105]\n",
|
|
" [0.10526316 0.36842105]\n",
|
|
" [0.15789474 0.36842105]\n",
|
|
" [0.21052632 0.36842105]\n",
|
|
" [0.26315789 0.36842105]\n",
|
|
" [0.31578947 0.36842105]\n",
|
|
" [0.36842105 0.36842105]\n",
|
|
" [0.42105263 0.36842105]\n",
|
|
" [0.47368421 0.36842105]\n",
|
|
" [0.52631579 0.36842105]\n",
|
|
" [0.57894737 0.36842105]\n",
|
|
" [0.63157895 0.36842105]\n",
|
|
" [0.68421053 0.36842105]\n",
|
|
" [0.73684211 0.36842105]\n",
|
|
" [0.78947368 0.36842105]\n",
|
|
" [0.84210526 0.36842105]\n",
|
|
" [0.89473684 0.36842105]\n",
|
|
" [0.94736842 0.36842105]\n",
|
|
" [1. 0.36842105]\n",
|
|
" [0. 0.42105263]\n",
|
|
" [0.05263158 0.42105263]\n",
|
|
" [0.10526316 0.42105263]\n",
|
|
" [0.15789474 0.42105263]\n",
|
|
" [0.21052632 0.42105263]\n",
|
|
" [0.26315789 0.42105263]\n",
|
|
" [0.31578947 0.42105263]\n",
|
|
" [0.36842105 0.42105263]\n",
|
|
" [0.42105263 0.42105263]\n",
|
|
" [0.47368421 0.42105263]\n",
|
|
" [0.52631579 0.42105263]\n",
|
|
" [0.57894737 0.42105263]\n",
|
|
" [0.63157895 0.42105263]\n",
|
|
" [0.68421053 0.42105263]\n",
|
|
" [0.73684211 0.42105263]\n",
|
|
" [0.78947368 0.42105263]\n",
|
|
" [0.84210526 0.42105263]\n",
|
|
" [0.89473684 0.42105263]\n",
|
|
" [0.94736842 0.42105263]\n",
|
|
" [1. 0.42105263]\n",
|
|
" [0. 0.47368421]\n",
|
|
" [0.05263158 0.47368421]\n",
|
|
" [0.10526316 0.47368421]\n",
|
|
" [0.15789474 0.47368421]\n",
|
|
" [0.21052632 0.47368421]\n",
|
|
" [0.26315789 0.47368421]\n",
|
|
" [0.31578947 0.47368421]\n",
|
|
" [0.36842105 0.47368421]\n",
|
|
" [0.42105263 0.47368421]\n",
|
|
" [0.47368421 0.47368421]\n",
|
|
" [0.52631579 0.47368421]\n",
|
|
" [0.57894737 0.47368421]\n",
|
|
" [0.63157895 0.47368421]\n",
|
|
" [0.68421053 0.47368421]\n",
|
|
" [0.73684211 0.47368421]\n",
|
|
" [0.78947368 0.47368421]\n",
|
|
" [0.84210526 0.47368421]\n",
|
|
" [0.89473684 0.47368421]\n",
|
|
" [0.94736842 0.47368421]\n",
|
|
" [1. 0.47368421]\n",
|
|
" [0. 0.52631579]\n",
|
|
" [0.05263158 0.52631579]\n",
|
|
" [0.10526316 0.52631579]\n",
|
|
" [0.15789474 0.52631579]\n",
|
|
" [0.21052632 0.52631579]\n",
|
|
" [0.26315789 0.52631579]\n",
|
|
" [0.31578947 0.52631579]\n",
|
|
" [0.36842105 0.52631579]\n",
|
|
" [0.42105263 0.52631579]\n",
|
|
" [0.47368421 0.52631579]\n",
|
|
" [0.52631579 0.52631579]\n",
|
|
" [0.57894737 0.52631579]\n",
|
|
" [0.63157895 0.52631579]\n",
|
|
" [0.68421053 0.52631579]\n",
|
|
" [0.73684211 0.52631579]\n",
|
|
" [0.78947368 0.52631579]\n",
|
|
" [0.84210526 0.52631579]\n",
|
|
" [0.89473684 0.52631579]\n",
|
|
" [0.94736842 0.52631579]\n",
|
|
" [1. 0.52631579]\n",
|
|
" [0. 0.57894737]\n",
|
|
" [0.05263158 0.57894737]\n",
|
|
" [0.10526316 0.57894737]\n",
|
|
" [0.15789474 0.57894737]\n",
|
|
" [0.21052632 0.57894737]\n",
|
|
" [0.26315789 0.57894737]\n",
|
|
" [0.31578947 0.57894737]\n",
|
|
" [0.36842105 0.57894737]\n",
|
|
" [0.42105263 0.57894737]\n",
|
|
" [0.47368421 0.57894737]\n",
|
|
" [0.52631579 0.57894737]\n",
|
|
" [0.57894737 0.57894737]\n",
|
|
" [0.63157895 0.57894737]\n",
|
|
" [0.68421053 0.57894737]\n",
|
|
" [0.73684211 0.57894737]\n",
|
|
" [0.78947368 0.57894737]\n",
|
|
" [0.84210526 0.57894737]\n",
|
|
" [0.89473684 0.57894737]\n",
|
|
" [0.94736842 0.57894737]\n",
|
|
" [1. 0.57894737]\n",
|
|
" [0. 0.63157895]\n",
|
|
" [0.05263158 0.63157895]\n",
|
|
" [0.10526316 0.63157895]\n",
|
|
" [0.15789474 0.63157895]\n",
|
|
" [0.21052632 0.63157895]\n",
|
|
" [0.26315789 0.63157895]\n",
|
|
" [0.31578947 0.63157895]\n",
|
|
" [0.36842105 0.63157895]\n",
|
|
" [0.42105263 0.63157895]\n",
|
|
" [0.47368421 0.63157895]\n",
|
|
" [0.52631579 0.63157895]\n",
|
|
" [0.57894737 0.63157895]\n",
|
|
" [0.63157895 0.63157895]\n",
|
|
" [0.68421053 0.63157895]\n",
|
|
" [0.73684211 0.63157895]\n",
|
|
" [0.78947368 0.63157895]\n",
|
|
" [0.84210526 0.63157895]\n",
|
|
" [0.89473684 0.63157895]\n",
|
|
" [0.94736842 0.63157895]\n",
|
|
" [1. 0.63157895]\n",
|
|
" [0. 0.68421053]\n",
|
|
" [0.05263158 0.68421053]\n",
|
|
" [0.10526316 0.68421053]\n",
|
|
" [0.15789474 0.68421053]\n",
|
|
" [0.21052632 0.68421053]\n",
|
|
" [0.26315789 0.68421053]\n",
|
|
" [0.31578947 0.68421053]\n",
|
|
" [0.36842105 0.68421053]\n",
|
|
" [0.42105263 0.68421053]\n",
|
|
" [0.47368421 0.68421053]\n",
|
|
" [0.52631579 0.68421053]\n",
|
|
" [0.57894737 0.68421053]\n",
|
|
" [0.63157895 0.68421053]\n",
|
|
" [0.68421053 0.68421053]\n",
|
|
" [0.73684211 0.68421053]\n",
|
|
" [0.78947368 0.68421053]\n",
|
|
" [0.84210526 0.68421053]\n",
|
|
" [0.89473684 0.68421053]\n",
|
|
" [0.94736842 0.68421053]\n",
|
|
" [1. 0.68421053]\n",
|
|
" [0. 0.73684211]\n",
|
|
" [0.05263158 0.73684211]\n",
|
|
" [0.10526316 0.73684211]\n",
|
|
" [0.15789474 0.73684211]\n",
|
|
" [0.21052632 0.73684211]\n",
|
|
" [0.26315789 0.73684211]\n",
|
|
" [0.31578947 0.73684211]\n",
|
|
" [0.36842105 0.73684211]\n",
|
|
" [0.42105263 0.73684211]\n",
|
|
" [0.47368421 0.73684211]\n",
|
|
" [0.52631579 0.73684211]\n",
|
|
" [0.57894737 0.73684211]\n",
|
|
" [0.63157895 0.73684211]\n",
|
|
" [0.68421053 0.73684211]\n",
|
|
" [0.73684211 0.73684211]\n",
|
|
" [0.78947368 0.73684211]\n",
|
|
" [0.84210526 0.73684211]\n",
|
|
" [0.89473684 0.73684211]\n",
|
|
" [0.94736842 0.73684211]\n",
|
|
" [1. 0.73684211]\n",
|
|
" [0. 0.78947368]\n",
|
|
" [0.05263158 0.78947368]\n",
|
|
" [0.10526316 0.78947368]\n",
|
|
" [0.15789474 0.78947368]\n",
|
|
" [0.21052632 0.78947368]\n",
|
|
" [0.26315789 0.78947368]\n",
|
|
" [0.31578947 0.78947368]\n",
|
|
" [0.36842105 0.78947368]\n",
|
|
" [0.42105263 0.78947368]\n",
|
|
" [0.47368421 0.78947368]\n",
|
|
" [0.52631579 0.78947368]\n",
|
|
" [0.57894737 0.78947368]\n",
|
|
" [0.63157895 0.78947368]\n",
|
|
" [0.68421053 0.78947368]\n",
|
|
" [0.73684211 0.78947368]\n",
|
|
" [0.78947368 0.78947368]\n",
|
|
" [0.84210526 0.78947368]\n",
|
|
" [0.89473684 0.78947368]\n",
|
|
" [0.94736842 0.78947368]\n",
|
|
" [1. 0.78947368]\n",
|
|
" [0. 0.84210526]\n",
|
|
" [0.05263158 0.84210526]\n",
|
|
" [0.10526316 0.84210526]\n",
|
|
" [0.15789474 0.84210526]\n",
|
|
" [0.21052632 0.84210526]\n",
|
|
" [0.26315789 0.84210526]\n",
|
|
" [0.31578947 0.84210526]\n",
|
|
" [0.36842105 0.84210526]\n",
|
|
" [0.42105263 0.84210526]\n",
|
|
" [0.47368421 0.84210526]\n",
|
|
" [0.52631579 0.84210526]\n",
|
|
" [0.57894737 0.84210526]\n",
|
|
" [0.63157895 0.84210526]\n",
|
|
" [0.68421053 0.84210526]\n",
|
|
" [0.73684211 0.84210526]\n",
|
|
" [0.78947368 0.84210526]\n",
|
|
" [0.84210526 0.84210526]\n",
|
|
" [0.89473684 0.84210526]\n",
|
|
" [0.94736842 0.84210526]\n",
|
|
" [1. 0.84210526]\n",
|
|
" [0. 0.89473684]\n",
|
|
" [0.05263158 0.89473684]\n",
|
|
" [0.10526316 0.89473684]\n",
|
|
" [0.15789474 0.89473684]\n",
|
|
" [0.21052632 0.89473684]\n",
|
|
" [0.26315789 0.89473684]\n",
|
|
" [0.31578947 0.89473684]\n",
|
|
" [0.36842105 0.89473684]\n",
|
|
" [0.42105263 0.89473684]\n",
|
|
" [0.47368421 0.89473684]\n",
|
|
" [0.52631579 0.89473684]\n",
|
|
" [0.57894737 0.89473684]\n",
|
|
" [0.63157895 0.89473684]\n",
|
|
" [0.68421053 0.89473684]\n",
|
|
" [0.73684211 0.89473684]\n",
|
|
" [0.78947368 0.89473684]\n",
|
|
" [0.84210526 0.89473684]\n",
|
|
" [0.89473684 0.89473684]\n",
|
|
" [0.94736842 0.89473684]\n",
|
|
" [1. 0.89473684]\n",
|
|
" [0. 0.94736842]\n",
|
|
" [0.05263158 0.94736842]\n",
|
|
" [0.10526316 0.94736842]\n",
|
|
" [0.15789474 0.94736842]\n",
|
|
" [0.21052632 0.94736842]\n",
|
|
" [0.26315789 0.94736842]\n",
|
|
" [0.31578947 0.94736842]\n",
|
|
" [0.36842105 0.94736842]\n",
|
|
" [0.42105263 0.94736842]\n",
|
|
" [0.47368421 0.94736842]\n",
|
|
" [0.52631579 0.94736842]\n",
|
|
" [0.57894737 0.94736842]\n",
|
|
" [0.63157895 0.94736842]\n",
|
|
" [0.68421053 0.94736842]\n",
|
|
" [0.73684211 0.94736842]\n",
|
|
" [0.78947368 0.94736842]\n",
|
|
" [0.84210526 0.94736842]\n",
|
|
" [0.89473684 0.94736842]\n",
|
|
" [0.94736842 0.94736842]\n",
|
|
" [1. 0.94736842]\n",
|
|
" [0. 1. ]\n",
|
|
" [0.05263158 1. ]\n",
|
|
" [0.10526316 1. ]\n",
|
|
" [0.15789474 1. ]\n",
|
|
" [0.21052632 1. ]\n",
|
|
" [0.26315789 1. ]\n",
|
|
" [0.31578947 1. ]\n",
|
|
" [0.36842105 1. ]\n",
|
|
" [0.42105263 1. ]\n",
|
|
" [0.47368421 1. ]\n",
|
|
" [0.52631579 1. ]\n",
|
|
" [0.57894737 1. ]\n",
|
|
" [0.63157895 1. ]\n",
|
|
" [0.68421053 1. ]\n",
|
|
" [0.73684211 1. ]\n",
|
|
" [0.78947368 1. ]\n",
|
|
" [0.84210526 1. ]\n",
|
|
" [0.89473684 1. ]\n",
|
|
" [0.94736842 1. ]\n",
|
|
" [1. 1. ]]\n",
|
|
"D ['x', 'y']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000],\n",
|
|
" [0.0000, 0.0526],\n",
|
|
" [0.0526, 0.0526],\n",
|
|
" [0.1053, 0.0526],\n",
|
|
" [0.1579, 0.0526],\n",
|
|
" [0.2105, 0.0526],\n",
|
|
" [0.2632, 0.0526],\n",
|
|
" [0.3158, 0.0526],\n",
|
|
" [0.3684, 0.0526],\n",
|
|
" [0.4211, 0.0526],\n",
|
|
" [0.4737, 0.0526],\n",
|
|
" [0.5263, 0.0526],\n",
|
|
" [0.5789, 0.0526],\n",
|
|
" [0.6316, 0.0526],\n",
|
|
" [0.6842, 0.0526],\n",
|
|
" [0.7368, 0.0526],\n",
|
|
" [0.7895, 0.0526],\n",
|
|
" [0.8421, 0.0526],\n",
|
|
" [0.8947, 0.0526],\n",
|
|
" [0.9474, 0.0526],\n",
|
|
" [1.0000, 0.0526],\n",
|
|
" [0.0000, 0.1053],\n",
|
|
" [0.0526, 0.1053],\n",
|
|
" [0.1053, 0.1053],\n",
|
|
" [0.1579, 0.1053],\n",
|
|
" [0.2105, 0.1053],\n",
|
|
" [0.2632, 0.1053],\n",
|
|
" [0.3158, 0.1053],\n",
|
|
" [0.3684, 0.1053],\n",
|
|
" [0.4211, 0.1053],\n",
|
|
" [0.4737, 0.1053],\n",
|
|
" [0.5263, 0.1053],\n",
|
|
" [0.5789, 0.1053],\n",
|
|
" [0.6316, 0.1053],\n",
|
|
" [0.6842, 0.1053],\n",
|
|
" [0.7368, 0.1053],\n",
|
|
" [0.7895, 0.1053],\n",
|
|
" [0.8421, 0.1053],\n",
|
|
" [0.8947, 0.1053],\n",
|
|
" [0.9474, 0.1053],\n",
|
|
" [1.0000, 0.1053],\n",
|
|
" [0.0000, 0.1579],\n",
|
|
" [0.0526, 0.1579],\n",
|
|
" [0.1053, 0.1579],\n",
|
|
" [0.1579, 0.1579],\n",
|
|
" [0.2105, 0.1579],\n",
|
|
" [0.2632, 0.1579],\n",
|
|
" [0.3158, 0.1579],\n",
|
|
" [0.3684, 0.1579],\n",
|
|
" [0.4211, 0.1579],\n",
|
|
" [0.4737, 0.1579],\n",
|
|
" [0.5263, 0.1579],\n",
|
|
" [0.5789, 0.1579],\n",
|
|
" [0.6316, 0.1579],\n",
|
|
" [0.6842, 0.1579],\n",
|
|
" [0.7368, 0.1579],\n",
|
|
" [0.7895, 0.1579],\n",
|
|
" [0.8421, 0.1579],\n",
|
|
" [0.8947, 0.1579],\n",
|
|
" [0.9474, 0.1579],\n",
|
|
" [1.0000, 0.1579],\n",
|
|
" [0.0000, 0.2105],\n",
|
|
" [0.0526, 0.2105],\n",
|
|
" [0.1053, 0.2105],\n",
|
|
" [0.1579, 0.2105],\n",
|
|
" [0.2105, 0.2105],\n",
|
|
" [0.2632, 0.2105],\n",
|
|
" [0.3158, 0.2105],\n",
|
|
" [0.3684, 0.2105],\n",
|
|
" [0.4211, 0.2105],\n",
|
|
" [0.4737, 0.2105],\n",
|
|
" [0.5263, 0.2105],\n",
|
|
" [0.5789, 0.2105],\n",
|
|
" [0.6316, 0.2105],\n",
|
|
" [0.6842, 0.2105],\n",
|
|
" [0.7368, 0.2105],\n",
|
|
" [0.7895, 0.2105],\n",
|
|
" [0.8421, 0.2105],\n",
|
|
" [0.8947, 0.2105],\n",
|
|
" [0.9474, 0.2105],\n",
|
|
" [1.0000, 0.2105],\n",
|
|
" [0.0000, 0.2632],\n",
|
|
" [0.0526, 0.2632],\n",
|
|
" [0.1053, 0.2632],\n",
|
|
" [0.1579, 0.2632],\n",
|
|
" [0.2105, 0.2632],\n",
|
|
" [0.2632, 0.2632],\n",
|
|
" [0.3158, 0.2632],\n",
|
|
" [0.3684, 0.2632],\n",
|
|
" [0.4211, 0.2632],\n",
|
|
" [0.4737, 0.2632],\n",
|
|
" [0.5263, 0.2632],\n",
|
|
" [0.5789, 0.2632],\n",
|
|
" [0.6316, 0.2632],\n",
|
|
" [0.6842, 0.2632],\n",
|
|
" [0.7368, 0.2632],\n",
|
|
" [0.7895, 0.2632],\n",
|
|
" [0.8421, 0.2632],\n",
|
|
" [0.8947, 0.2632],\n",
|
|
" [0.9474, 0.2632],\n",
|
|
" [1.0000, 0.2632],\n",
|
|
" [0.0000, 0.3158],\n",
|
|
" [0.0526, 0.3158],\n",
|
|
" [0.1053, 0.3158],\n",
|
|
" [0.1579, 0.3158],\n",
|
|
" [0.2105, 0.3158],\n",
|
|
" [0.2632, 0.3158],\n",
|
|
" [0.3158, 0.3158],\n",
|
|
" [0.3684, 0.3158],\n",
|
|
" [0.4211, 0.3158],\n",
|
|
" [0.4737, 0.3158],\n",
|
|
" [0.5263, 0.3158],\n",
|
|
" [0.5789, 0.3158],\n",
|
|
" [0.6316, 0.3158],\n",
|
|
" [0.6842, 0.3158],\n",
|
|
" [0.7368, 0.3158],\n",
|
|
" [0.7895, 0.3158],\n",
|
|
" [0.8421, 0.3158],\n",
|
|
" [0.8947, 0.3158],\n",
|
|
" [0.9474, 0.3158],\n",
|
|
" [1.0000, 0.3158],\n",
|
|
" [0.0000, 0.3684],\n",
|
|
" [0.0526, 0.3684],\n",
|
|
" [0.1053, 0.3684],\n",
|
|
" [0.1579, 0.3684],\n",
|
|
" [0.2105, 0.3684],\n",
|
|
" [0.2632, 0.3684],\n",
|
|
" [0.3158, 0.3684],\n",
|
|
" [0.3684, 0.3684],\n",
|
|
" [0.4211, 0.3684],\n",
|
|
" [0.4737, 0.3684],\n",
|
|
" [0.5263, 0.3684],\n",
|
|
" [0.5789, 0.3684],\n",
|
|
" [0.6316, 0.3684],\n",
|
|
" [0.6842, 0.3684],\n",
|
|
" [0.7368, 0.3684],\n",
|
|
" [0.7895, 0.3684],\n",
|
|
" [0.8421, 0.3684],\n",
|
|
" [0.8947, 0.3684],\n",
|
|
" [0.9474, 0.3684],\n",
|
|
" [1.0000, 0.3684],\n",
|
|
" [0.0000, 0.4211],\n",
|
|
" [0.0526, 0.4211],\n",
|
|
" [0.1053, 0.4211],\n",
|
|
" [0.1579, 0.4211],\n",
|
|
" [0.2105, 0.4211],\n",
|
|
" [0.2632, 0.4211],\n",
|
|
" [0.3158, 0.4211],\n",
|
|
" [0.3684, 0.4211],\n",
|
|
" [0.4211, 0.4211],\n",
|
|
" [0.4737, 0.4211],\n",
|
|
" [0.5263, 0.4211],\n",
|
|
" [0.5789, 0.4211],\n",
|
|
" [0.6316, 0.4211],\n",
|
|
" [0.6842, 0.4211],\n",
|
|
" [0.7368, 0.4211],\n",
|
|
" [0.7895, 0.4211],\n",
|
|
" [0.8421, 0.4211],\n",
|
|
" [0.8947, 0.4211],\n",
|
|
" [0.9474, 0.4211],\n",
|
|
" [1.0000, 0.4211],\n",
|
|
" [0.0000, 0.4737],\n",
|
|
" [0.0526, 0.4737],\n",
|
|
" [0.1053, 0.4737],\n",
|
|
" [0.1579, 0.4737],\n",
|
|
" [0.2105, 0.4737],\n",
|
|
" [0.2632, 0.4737],\n",
|
|
" [0.3158, 0.4737],\n",
|
|
" [0.3684, 0.4737],\n",
|
|
" [0.4211, 0.4737],\n",
|
|
" [0.4737, 0.4737],\n",
|
|
" [0.5263, 0.4737],\n",
|
|
" [0.5789, 0.4737],\n",
|
|
" [0.6316, 0.4737],\n",
|
|
" [0.6842, 0.4737],\n",
|
|
" [0.7368, 0.4737],\n",
|
|
" [0.7895, 0.4737],\n",
|
|
" [0.8421, 0.4737],\n",
|
|
" [0.8947, 0.4737],\n",
|
|
" [0.9474, 0.4737],\n",
|
|
" [1.0000, 0.4737],\n",
|
|
" [0.0000, 0.5263],\n",
|
|
" [0.0526, 0.5263],\n",
|
|
" [0.1053, 0.5263],\n",
|
|
" [0.1579, 0.5263],\n",
|
|
" [0.2105, 0.5263],\n",
|
|
" [0.2632, 0.5263],\n",
|
|
" [0.3158, 0.5263],\n",
|
|
" [0.3684, 0.5263],\n",
|
|
" [0.4211, 0.5263],\n",
|
|
" [0.4737, 0.5263],\n",
|
|
" [0.5263, 0.5263],\n",
|
|
" [0.5789, 0.5263],\n",
|
|
" [0.6316, 0.5263],\n",
|
|
" [0.6842, 0.5263],\n",
|
|
" [0.7368, 0.5263],\n",
|
|
" [0.7895, 0.5263],\n",
|
|
" [0.8421, 0.5263],\n",
|
|
" [0.8947, 0.5263],\n",
|
|
" [0.9474, 0.5263],\n",
|
|
" [1.0000, 0.5263],\n",
|
|
" [0.0000, 0.5789],\n",
|
|
" [0.0526, 0.5789],\n",
|
|
" [0.1053, 0.5789],\n",
|
|
" [0.1579, 0.5789],\n",
|
|
" [0.2105, 0.5789],\n",
|
|
" [0.2632, 0.5789],\n",
|
|
" [0.3158, 0.5789],\n",
|
|
" [0.3684, 0.5789],\n",
|
|
" [0.4211, 0.5789],\n",
|
|
" [0.4737, 0.5789],\n",
|
|
" [0.5263, 0.5789],\n",
|
|
" [0.5789, 0.5789],\n",
|
|
" [0.6316, 0.5789],\n",
|
|
" [0.6842, 0.5789],\n",
|
|
" [0.7368, 0.5789],\n",
|
|
" [0.7895, 0.5789],\n",
|
|
" [0.8421, 0.5789],\n",
|
|
" [0.8947, 0.5789],\n",
|
|
" [0.9474, 0.5789],\n",
|
|
" [1.0000, 0.5789],\n",
|
|
" [0.0000, 0.6316],\n",
|
|
" [0.0526, 0.6316],\n",
|
|
" [0.1053, 0.6316],\n",
|
|
" [0.1579, 0.6316],\n",
|
|
" [0.2105, 0.6316],\n",
|
|
" [0.2632, 0.6316],\n",
|
|
" [0.3158, 0.6316],\n",
|
|
" [0.3684, 0.6316],\n",
|
|
" [0.4211, 0.6316],\n",
|
|
" [0.4737, 0.6316],\n",
|
|
" [0.5263, 0.6316],\n",
|
|
" [0.5789, 0.6316],\n",
|
|
" [0.6316, 0.6316],\n",
|
|
" [0.6842, 0.6316],\n",
|
|
" [0.7368, 0.6316],\n",
|
|
" [0.7895, 0.6316],\n",
|
|
" [0.8421, 0.6316],\n",
|
|
" [0.8947, 0.6316],\n",
|
|
" [0.9474, 0.6316],\n",
|
|
" [1.0000, 0.6316],\n",
|
|
" [0.0000, 0.6842],\n",
|
|
" [0.0526, 0.6842],\n",
|
|
" [0.1053, 0.6842],\n",
|
|
" [0.1579, 0.6842],\n",
|
|
" [0.2105, 0.6842],\n",
|
|
" [0.2632, 0.6842],\n",
|
|
" [0.3158, 0.6842],\n",
|
|
" [0.3684, 0.6842],\n",
|
|
" [0.4211, 0.6842],\n",
|
|
" [0.4737, 0.6842],\n",
|
|
" [0.5263, 0.6842],\n",
|
|
" [0.5789, 0.6842],\n",
|
|
" [0.6316, 0.6842],\n",
|
|
" [0.6842, 0.6842],\n",
|
|
" [0.7368, 0.6842],\n",
|
|
" [0.7895, 0.6842],\n",
|
|
" [0.8421, 0.6842],\n",
|
|
" [0.8947, 0.6842],\n",
|
|
" [0.9474, 0.6842],\n",
|
|
" [1.0000, 0.6842],\n",
|
|
" [0.0000, 0.7368],\n",
|
|
" [0.0526, 0.7368],\n",
|
|
" [0.1053, 0.7368],\n",
|
|
" [0.1579, 0.7368],\n",
|
|
" [0.2105, 0.7368],\n",
|
|
" [0.2632, 0.7368],\n",
|
|
" [0.3158, 0.7368],\n",
|
|
" [0.3684, 0.7368],\n",
|
|
" [0.4211, 0.7368],\n",
|
|
" [0.4737, 0.7368],\n",
|
|
" [0.5263, 0.7368],\n",
|
|
" [0.5789, 0.7368],\n",
|
|
" [0.6316, 0.7368],\n",
|
|
" [0.6842, 0.7368],\n",
|
|
" [0.7368, 0.7368],\n",
|
|
" [0.7895, 0.7368],\n",
|
|
" [0.8421, 0.7368],\n",
|
|
" [0.8947, 0.7368],\n",
|
|
" [0.9474, 0.7368],\n",
|
|
" [1.0000, 0.7368],\n",
|
|
" [0.0000, 0.7895],\n",
|
|
" [0.0526, 0.7895],\n",
|
|
" [0.1053, 0.7895],\n",
|
|
" [0.1579, 0.7895],\n",
|
|
" [0.2105, 0.7895],\n",
|
|
" [0.2632, 0.7895],\n",
|
|
" [0.3158, 0.7895],\n",
|
|
" [0.3684, 0.7895],\n",
|
|
" [0.4211, 0.7895],\n",
|
|
" [0.4737, 0.7895],\n",
|
|
" [0.5263, 0.7895],\n",
|
|
" [0.5789, 0.7895],\n",
|
|
" [0.6316, 0.7895],\n",
|
|
" [0.6842, 0.7895],\n",
|
|
" [0.7368, 0.7895],\n",
|
|
" [0.7895, 0.7895],\n",
|
|
" [0.8421, 0.7895],\n",
|
|
" [0.8947, 0.7895],\n",
|
|
" [0.9474, 0.7895],\n",
|
|
" [1.0000, 0.7895],\n",
|
|
" [0.0000, 0.8421],\n",
|
|
" [0.0526, 0.8421],\n",
|
|
" [0.1053, 0.8421],\n",
|
|
" [0.1579, 0.8421],\n",
|
|
" [0.2105, 0.8421],\n",
|
|
" [0.2632, 0.8421],\n",
|
|
" [0.3158, 0.8421],\n",
|
|
" [0.3684, 0.8421],\n",
|
|
" [0.4211, 0.8421],\n",
|
|
" [0.4737, 0.8421],\n",
|
|
" [0.5263, 0.8421],\n",
|
|
" [0.5789, 0.8421],\n",
|
|
" [0.6316, 0.8421],\n",
|
|
" [0.6842, 0.8421],\n",
|
|
" [0.7368, 0.8421],\n",
|
|
" [0.7895, 0.8421],\n",
|
|
" [0.8421, 0.8421],\n",
|
|
" [0.8947, 0.8421],\n",
|
|
" [0.9474, 0.8421],\n",
|
|
" [1.0000, 0.8421],\n",
|
|
" [0.0000, 0.8947],\n",
|
|
" [0.0526, 0.8947],\n",
|
|
" [0.1053, 0.8947],\n",
|
|
" [0.1579, 0.8947],\n",
|
|
" [0.2105, 0.8947],\n",
|
|
" [0.2632, 0.8947],\n",
|
|
" [0.3158, 0.8947],\n",
|
|
" [0.3684, 0.8947],\n",
|
|
" [0.4211, 0.8947],\n",
|
|
" [0.4737, 0.8947],\n",
|
|
" [0.5263, 0.8947],\n",
|
|
" [0.5789, 0.8947],\n",
|
|
" [0.6316, 0.8947],\n",
|
|
" [0.6842, 0.8947],\n",
|
|
" [0.7368, 0.8947],\n",
|
|
" [0.7895, 0.8947],\n",
|
|
" [0.8421, 0.8947],\n",
|
|
" [0.8947, 0.8947],\n",
|
|
" [0.9474, 0.8947],\n",
|
|
" [1.0000, 0.8947],\n",
|
|
" [0.0000, 0.9474],\n",
|
|
" [0.0526, 0.9474],\n",
|
|
" [0.1053, 0.9474],\n",
|
|
" [0.1579, 0.9474],\n",
|
|
" [0.2105, 0.9474],\n",
|
|
" [0.2632, 0.9474],\n",
|
|
" [0.3158, 0.9474],\n",
|
|
" [0.3684, 0.9474],\n",
|
|
" [0.4211, 0.9474],\n",
|
|
" [0.4737, 0.9474],\n",
|
|
" [0.5263, 0.9474],\n",
|
|
" [0.5789, 0.9474],\n",
|
|
" [0.6316, 0.9474],\n",
|
|
" [0.6842, 0.9474],\n",
|
|
" [0.7368, 0.9474],\n",
|
|
" [0.7895, 0.9474],\n",
|
|
" [0.8421, 0.9474],\n",
|
|
" [0.8947, 0.9474],\n",
|
|
" [0.9474, 0.9474],\n",
|
|
" [1.0000, 0.9474],\n",
|
|
" [0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma1 ['x', 'y']\n",
|
|
" tensor([[0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma2 ['x', 'y']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma3 ['y', 'x']\n",
|
|
" tensor([[0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma4 ['y', 'x']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000]], dtype=torch.float64)\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[epoch 00100] 7.471901e-04 8.980287e-05 1.117901e-04 3.793715e-05 3.277296e-05 4.748871e-04 \n",
|
|
"[epoch 00200] 2.209205e-04 3.573209e-06 3.836445e-06 2.874858e-06 2.498641e-07 2.103862e-04 \n",
|
|
"[epoch 00300] 1.185145e-04 7.173019e-07 1.208527e-06 1.397909e-06 3.735213e-07 1.148172e-04 \n",
|
|
"[epoch 00400] 6.894067e-05 5.236492e-07 1.032195e-06 1.125917e-06 4.489782e-07 6.580993e-05 \n",
|
|
"[epoch 00500] 4.247899e-05 4.596638e-07 8.986673e-07 8.916692e-07 4.342460e-07 3.979474e-05 \n",
|
|
"[epoch 00600] 2.813576e-05 4.234265e-07 7.806152e-07 7.068185e-07 3.919262e-07 2.583297e-05 \n",
|
|
"[epoch 00700] 2.020603e-05 3.934374e-07 6.765696e-07 5.750900e-07 3.388104e-07 1.822212e-05 \n",
|
|
"[epoch 00800] 1.565952e-05 3.665464e-07 5.849427e-07 4.829556e-07 2.855084e-07 1.393956e-05 \n",
|
|
"[epoch 00900] 1.290668e-05 3.435501e-07 5.060545e-07 4.164363e-07 2.394498e-07 1.140119e-05 \n",
|
|
"[epoch 01000] 1.111192e-05 3.240936e-07 4.398680e-07 3.657767e-07 2.032412e-07 9.778940e-06 \n",
|
|
"[epoch 01100] 9.837978e-06 3.068218e-07 3.850330e-07 3.250419e-07 1.759360e-07 8.645146e-06 \n",
|
|
"[epoch 01200] 8.860490e-06 2.904332e-07 3.395553e-07 2.908180e-07 1.553064e-07 7.784377e-06 \n",
|
|
"[epoch 01300] 8.065704e-06 2.741330e-07 3.015319e-07 2.611779e-07 1.392398e-07 7.089621e-06 \n",
|
|
"[epoch 01400] 7.394520e-06 2.576153e-07 2.694392e-07 2.350298e-07 1.261815e-07 6.506254e-06 \n",
|
|
"[epoch 01500] 6.813984e-06 2.408990e-07 2.421291e-07 2.117427e-07 1.151124e-07 6.004101e-06 \n",
|
|
"[epoch 01600] 6.303844e-06 2.241724e-07 2.187354e-07 1.909338e-07 1.054064e-07 5.564596e-06 \n",
|
|
"[epoch 01700] 5.850425e-06 2.076854e-07 1.985890e-07 1.723447e-07 9.669325e-08 5.175113e-06 \n",
|
|
"[epoch 01800] 5.443948e-06 1.916822e-07 1.811573e-07 1.557760e-07 8.876229e-08 4.826570e-06 \n",
|
|
"[epoch 01900] 5.077102e-06 1.763677e-07 1.660070e-07 1.410512e-07 8.149636e-08 4.512180e-06 \n",
|
|
"[epoch 02000] 4.744282e-06 1.618933e-07 1.527797e-07 1.280034e-07 7.483030e-08 4.226776e-06 \n",
|
|
"[epoch 02100] 4.441095e-06 1.483565e-07 1.411776e-07 1.164704e-07 6.872367e-08 3.966367e-06 \n",
|
|
"[epoch 02200] 4.164013e-06 1.358071e-07 1.309516e-07 1.062939e-07 6.314587e-08 3.727814e-06 \n",
|
|
"[epoch 02300] 3.910138e-06 1.242541e-07 1.218931e-07 9.732314e-08 5.806818e-08 3.508599e-06 \n",
|
|
"[epoch 02400] 3.677030e-06 1.136770e-07 1.138281e-07 8.941593e-08 5.345933e-08 3.306649e-06 \n",
|
|
"[epoch 02500] 3.462606e-06 1.040335e-07 1.066110e-07 8.244035e-08 4.928527e-08 3.120236e-06 \n",
|
|
"[epoch 02600] 3.265057e-06 9.526663e-08 1.001202e-07 7.627623e-08 4.550986e-08 2.947884e-06 \n",
|
|
"[epoch 02700] 3.082791e-06 8.731126e-08 9.425418e-08 7.081567e-08 4.209596e-08 2.788314e-06 \n",
|
|
"[epoch 02800] 2.914402e-06 8.009972e-08 8.892827e-08 6.596148e-08 3.900642e-08 2.640406e-06 \n",
|
|
"[epoch 02900] 2.758643e-06 7.356255e-08 8.407091e-08 6.163004e-08 3.620632e-08 2.503173e-06 \n",
|
|
"[epoch 03000] 2.614390e-06 6.763591e-08 7.962342e-08 5.774532e-08 3.366164e-08 2.375724e-06 \n",
|
|
"[epoch 03100] 1.406275e-04 6.243471e-07 7.156946e-07 6.718652e-07 1.263744e-07 1.384892e-04 \n",
|
|
"[epoch 03200] 2.272008e-06 6.843958e-08 7.931123e-08 6.342410e-08 3.268365e-08 2.028150e-06 \n",
|
|
"[epoch 03300] 2.171354e-06 5.996870e-08 7.418951e-08 5.607441e-08 3.029060e-08 1.950830e-06 \n",
|
|
"[epoch 03400] 2.080407e-06 5.391851e-08 6.952376e-08 5.072356e-08 2.758288e-08 1.878658e-06 \n",
|
|
"[epoch 03500] 2.577539e-05 2.264344e-07 1.570817e-07 1.680089e-07 1.782182e-08 2.520604e-05 \n",
|
|
"[epoch 03600] 1.863154e-06 5.551469e-08 6.915631e-08 5.642861e-08 2.778740e-08 1.654267e-06 \n",
|
|
"[epoch 03700] 1.788689e-06 4.847466e-08 6.466057e-08 4.831299e-08 2.471573e-08 1.602525e-06 \n",
|
|
"[epoch 03800] 1.722869e-06 4.321230e-08 6.043035e-08 4.305984e-08 2.223249e-08 1.553934e-06 \n",
|
|
"[epoch 03900] 5.128647e-05 3.177009e-07 2.669143e-07 2.974126e-07 1.866021e-08 5.038578e-05 \n",
|
|
"[epoch 04000] 1.576417e-06 4.865908e-08 6.162516e-08 5.055672e-08 2.347113e-08 1.392105e-06 \n",
|
|
"[epoch 04100] 1.514609e-06 4.116718e-08 5.753609e-08 4.262629e-08 2.076307e-08 1.352516e-06 \n",
|
|
"[epoch 04200] 1.462110e-06 3.625941e-08 5.373436e-08 3.740053e-08 1.845982e-08 1.316256e-06 \n",
|
|
"[epoch 04300] 1.923999e-06 4.040422e-08 5.931944e-08 2.659655e-08 1.346694e-08 1.784211e-06 \n",
|
|
"[epoch 04400] 1.449692e-06 4.763080e-08 5.664296e-08 4.367840e-08 1.775452e-08 1.283985e-06 \n",
|
|
"[epoch 04500] 1.310266e-06 3.627287e-08 5.195898e-08 3.825563e-08 1.797347e-08 1.165805e-06 \n",
|
|
"[epoch 04600] 1.265342e-06 3.146165e-08 4.860378e-08 3.302803e-08 1.578766e-08 1.136461e-06 \n",
|
|
"[epoch 04700] 1.225498e-06 2.824964e-08 4.600268e-08 2.916901e-08 1.412275e-08 1.107954e-06 \n",
|
|
"[epoch 04800] 1.224000e-06 4.156860e-08 4.741654e-08 4.392701e-08 1.852382e-08 1.072564e-06 \n",
|
|
"[epoch 04900] 1.150242e-06 3.298774e-08 4.786595e-08 3.492912e-08 1.608646e-08 1.018373e-06 \n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1.1101566732320343e-06"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"poisson_problem = Poisson()\n",
|
|
"\n",
|
|
"class myFeature(torch.nn.Module):\n",
|
|
" \"\"\"\n",
|
|
" \"\"\"\n",
|
|
" def __init__(self):\n",
|
|
" super(myFeature, self).__init__()\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" return (torch.sin(x['x']*torch.pi) *\n",
|
|
" torch.sin(x['y']*torch.pi))\n",
|
|
" \n",
|
|
"feat = [myFeature()]\n",
|
|
"model_feat = FeedForward(layers=[10, 10],\n",
|
|
" output_variables=poisson_problem.output_variables,\n",
|
|
" input_variables=poisson_problem.input_variables,\n",
|
|
" extra_features=feat)\n",
|
|
"\n",
|
|
"pinn_feat = PINN(poisson_problem, model_feat, lr=0.003, regularizer=1e-8)\n",
|
|
"pinn_feat.span_pts(20, 'grid', ['D'])\n",
|
|
"pinn_feat.span_pts(20, 'grid', ['gamma1', 'gamma2', 'gamma3', 'gamma4'])\n",
|
|
"pinn_feat.train(5000, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "df8b409b",
|
|
"metadata": {},
|
|
"source": [
|
|
"The losses are saved in a txt file as for the basic Poisson case."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "18888f16",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open('tutorial1_files/poisson_history_feat.txt', 'w') as file_:\n",
|
|
" for i, losses in enumerate(pinn_feat.history):\n",
|
|
" file_.write('{} {}\\n'.format(i, sum(losses)))\n",
|
|
"pinn_feat.save_state('tutorial1_files/pina.poisson_feat')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "568b88a1",
|
|
"metadata": {},
|
|
"source": [
|
|
"The predicted and exact solutions and the error between them are represented below."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "9826e8e1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[0. 0. ]\n",
|
|
" [0.00392157 0. ]\n",
|
|
" [0.00784314 0. ]\n",
|
|
" ...\n",
|
|
" [0.99215686 1. ]\n",
|
|
" [0.99607843 1. ]\n",
|
|
" [1. 1. ]]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 1152x432 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plotter_feat = Plotter()\n",
|
|
"plotter_feat.plot(pinn_feat)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c5f03a63",
|
|
"metadata": {},
|
|
"source": [
|
|
"### The problem solution with learnable extra-features"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2d2f1bf1",
|
|
"metadata": {},
|
|
"source": [
|
|
"Another way to predict the solution is to add a parametric forcing term of the Laplace equation as an extra-feature. The parameters added in the expression of the extra-feature are learned during the training phase of the neural network. For example, considering two parameters, the parameteric extra-feature is written as:\n",
|
|
"\n",
|
|
"\\begin{equation}\n",
|
|
"\\mathbf{k}(\\mathbf{x}, \\mathbf{y}) = \\beta \\sin{(\\alpha \\mathbf{x})} \\sin{(\\alpha \\mathbf{y})}\n",
|
|
"\\end{equation}\n",
|
|
"\n",
|
|
"The new Poisson problem is defined in the dedicated class *ParametricPoisson*, where the domain is no more only spatial, but includes the parameters' space. In our case, the parameters' bounds are 0 and 30. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "9ca67fc4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from pina.problem import ParametricProblem\n",
|
|
"\n",
|
|
"class ParametricPoisson(SpatialProblem, ParametricProblem):\n",
|
|
" bounds_x = [0, 1]\n",
|
|
" bounds_y = [0, 1]\n",
|
|
" bounds_alpha = [0, 30]\n",
|
|
" bounds_beta = [0, 30]\n",
|
|
" spatial_variables = ['x', 'y']\n",
|
|
" parameters = ['alpha', 'beta']\n",
|
|
" output_variables = ['u']\n",
|
|
" domain = Span({'x': bounds_x, 'y': bounds_y})\n",
|
|
"\n",
|
|
" def laplace_equation(input_, output_):\n",
|
|
" force_term = (torch.sin(input_['x']*torch.pi) *\n",
|
|
" torch.sin(input_['y']*torch.pi))\n",
|
|
" return nabla(output_['u'], input_).flatten() - force_term\n",
|
|
"\n",
|
|
" def nil_dirichlet(input_, output_):\n",
|
|
" value = 0.0\n",
|
|
" return output_['u'] - value\n",
|
|
"\n",
|
|
" conditions = {\n",
|
|
" 'gamma1': Condition(\n",
|
|
" Span({'x': bounds_x, 'y': bounds_y[1], 'alpha': bounds_alpha, 'beta': bounds_beta}),\n",
|
|
" nil_dirichlet),\n",
|
|
" 'gamma2': Condition(\n",
|
|
" Span({'x': bounds_x, 'y': bounds_y[0], 'alpha': bounds_alpha, 'beta': bounds_beta}),\n",
|
|
" nil_dirichlet),\n",
|
|
" 'gamma3': Condition(\n",
|
|
" Span({'x': bounds_x[1], 'y': bounds_y, 'alpha': bounds_alpha, 'beta': bounds_beta}),\n",
|
|
" nil_dirichlet),\n",
|
|
" 'gamma4': Condition(\n",
|
|
" Span({'x': bounds_x[0], 'y': bounds_y, 'alpha': bounds_alpha, 'beta': bounds_beta}),\n",
|
|
" nil_dirichlet),\n",
|
|
" 'D': Condition(\n",
|
|
" Span({'x': bounds_x, 'y': bounds_y, 'alpha': bounds_alpha, 'beta': bounds_beta}),\n",
|
|
" laplace_equation),\n",
|
|
" }\n",
|
|
" \n",
|
|
" def poisson_sol(self, x, y):\n",
|
|
" return -(np.sin(x*np.pi)*np.sin(y*np.pi))/(2*np.pi**2)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "63a847d5",
|
|
"metadata": {},
|
|
"source": [
|
|
"Here, as done for the other cases, the new parametric feature is defined and the neural network is re-initialized and trained, considering as two additional parameters $\\alpha$ and $\\beta$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "afa18873",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[0. 0. ]\n",
|
|
" [0.05263158 0. ]\n",
|
|
" [0.10526316 0. ]\n",
|
|
" [0.15789474 0. ]\n",
|
|
" [0.21052632 0. ]\n",
|
|
" [0.26315789 0. ]\n",
|
|
" [0.31578947 0. ]\n",
|
|
" [0.36842105 0. ]\n",
|
|
" [0.42105263 0. ]\n",
|
|
" [0.47368421 0. ]\n",
|
|
" [0.52631579 0. ]\n",
|
|
" [0.57894737 0. ]\n",
|
|
" [0.63157895 0. ]\n",
|
|
" [0.68421053 0. ]\n",
|
|
" [0.73684211 0. ]\n",
|
|
" [0.78947368 0. ]\n",
|
|
" [0.84210526 0. ]\n",
|
|
" [0.89473684 0. ]\n",
|
|
" [0.94736842 0. ]\n",
|
|
" [1. 0. ]\n",
|
|
" [0. 0.05263158]\n",
|
|
" [0.05263158 0.05263158]\n",
|
|
" [0.10526316 0.05263158]\n",
|
|
" [0.15789474 0.05263158]\n",
|
|
" [0.21052632 0.05263158]\n",
|
|
" [0.26315789 0.05263158]\n",
|
|
" [0.31578947 0.05263158]\n",
|
|
" [0.36842105 0.05263158]\n",
|
|
" [0.42105263 0.05263158]\n",
|
|
" [0.47368421 0.05263158]\n",
|
|
" [0.52631579 0.05263158]\n",
|
|
" [0.57894737 0.05263158]\n",
|
|
" [0.63157895 0.05263158]\n",
|
|
" [0.68421053 0.05263158]\n",
|
|
" [0.73684211 0.05263158]\n",
|
|
" [0.78947368 0.05263158]\n",
|
|
" [0.84210526 0.05263158]\n",
|
|
" [0.89473684 0.05263158]\n",
|
|
" [0.94736842 0.05263158]\n",
|
|
" [1. 0.05263158]\n",
|
|
" [0. 0.10526316]\n",
|
|
" [0.05263158 0.10526316]\n",
|
|
" [0.10526316 0.10526316]\n",
|
|
" [0.15789474 0.10526316]\n",
|
|
" [0.21052632 0.10526316]\n",
|
|
" [0.26315789 0.10526316]\n",
|
|
" [0.31578947 0.10526316]\n",
|
|
" [0.36842105 0.10526316]\n",
|
|
" [0.42105263 0.10526316]\n",
|
|
" [0.47368421 0.10526316]\n",
|
|
" [0.52631579 0.10526316]\n",
|
|
" [0.57894737 0.10526316]\n",
|
|
" [0.63157895 0.10526316]\n",
|
|
" [0.68421053 0.10526316]\n",
|
|
" [0.73684211 0.10526316]\n",
|
|
" [0.78947368 0.10526316]\n",
|
|
" [0.84210526 0.10526316]\n",
|
|
" [0.89473684 0.10526316]\n",
|
|
" [0.94736842 0.10526316]\n",
|
|
" [1. 0.10526316]\n",
|
|
" [0. 0.15789474]\n",
|
|
" [0.05263158 0.15789474]\n",
|
|
" [0.10526316 0.15789474]\n",
|
|
" [0.15789474 0.15789474]\n",
|
|
" [0.21052632 0.15789474]\n",
|
|
" [0.26315789 0.15789474]\n",
|
|
" [0.31578947 0.15789474]\n",
|
|
" [0.36842105 0.15789474]\n",
|
|
" [0.42105263 0.15789474]\n",
|
|
" [0.47368421 0.15789474]\n",
|
|
" [0.52631579 0.15789474]\n",
|
|
" [0.57894737 0.15789474]\n",
|
|
" [0.63157895 0.15789474]\n",
|
|
" [0.68421053 0.15789474]\n",
|
|
" [0.73684211 0.15789474]\n",
|
|
" [0.78947368 0.15789474]\n",
|
|
" [0.84210526 0.15789474]\n",
|
|
" [0.89473684 0.15789474]\n",
|
|
" [0.94736842 0.15789474]\n",
|
|
" [1. 0.15789474]\n",
|
|
" [0. 0.21052632]\n",
|
|
" [0.05263158 0.21052632]\n",
|
|
" [0.10526316 0.21052632]\n",
|
|
" [0.15789474 0.21052632]\n",
|
|
" [0.21052632 0.21052632]\n",
|
|
" [0.26315789 0.21052632]\n",
|
|
" [0.31578947 0.21052632]\n",
|
|
" [0.36842105 0.21052632]\n",
|
|
" [0.42105263 0.21052632]\n",
|
|
" [0.47368421 0.21052632]\n",
|
|
" [0.52631579 0.21052632]\n",
|
|
" [0.57894737 0.21052632]\n",
|
|
" [0.63157895 0.21052632]\n",
|
|
" [0.68421053 0.21052632]\n",
|
|
" [0.73684211 0.21052632]\n",
|
|
" [0.78947368 0.21052632]\n",
|
|
" [0.84210526 0.21052632]\n",
|
|
" [0.89473684 0.21052632]\n",
|
|
" [0.94736842 0.21052632]\n",
|
|
" [1. 0.21052632]\n",
|
|
" [0. 0.26315789]\n",
|
|
" [0.05263158 0.26315789]\n",
|
|
" [0.10526316 0.26315789]\n",
|
|
" [0.15789474 0.26315789]\n",
|
|
" [0.21052632 0.26315789]\n",
|
|
" [0.26315789 0.26315789]\n",
|
|
" [0.31578947 0.26315789]\n",
|
|
" [0.36842105 0.26315789]\n",
|
|
" [0.42105263 0.26315789]\n",
|
|
" [0.47368421 0.26315789]\n",
|
|
" [0.52631579 0.26315789]\n",
|
|
" [0.57894737 0.26315789]\n",
|
|
" [0.63157895 0.26315789]\n",
|
|
" [0.68421053 0.26315789]\n",
|
|
" [0.73684211 0.26315789]\n",
|
|
" [0.78947368 0.26315789]\n",
|
|
" [0.84210526 0.26315789]\n",
|
|
" [0.89473684 0.26315789]\n",
|
|
" [0.94736842 0.26315789]\n",
|
|
" [1. 0.26315789]\n",
|
|
" [0. 0.31578947]\n",
|
|
" [0.05263158 0.31578947]\n",
|
|
" [0.10526316 0.31578947]\n",
|
|
" [0.15789474 0.31578947]\n",
|
|
" [0.21052632 0.31578947]\n",
|
|
" [0.26315789 0.31578947]\n",
|
|
" [0.31578947 0.31578947]\n",
|
|
" [0.36842105 0.31578947]\n",
|
|
" [0.42105263 0.31578947]\n",
|
|
" [0.47368421 0.31578947]\n",
|
|
" [0.52631579 0.31578947]\n",
|
|
" [0.57894737 0.31578947]\n",
|
|
" [0.63157895 0.31578947]\n",
|
|
" [0.68421053 0.31578947]\n",
|
|
" [0.73684211 0.31578947]\n",
|
|
" [0.78947368 0.31578947]\n",
|
|
" [0.84210526 0.31578947]\n",
|
|
" [0.89473684 0.31578947]\n",
|
|
" [0.94736842 0.31578947]\n",
|
|
" [1. 0.31578947]\n",
|
|
" [0. 0.36842105]\n",
|
|
" [0.05263158 0.36842105]\n",
|
|
" [0.10526316 0.36842105]\n",
|
|
" [0.15789474 0.36842105]\n",
|
|
" [0.21052632 0.36842105]\n",
|
|
" [0.26315789 0.36842105]\n",
|
|
" [0.31578947 0.36842105]\n",
|
|
" [0.36842105 0.36842105]\n",
|
|
" [0.42105263 0.36842105]\n",
|
|
" [0.47368421 0.36842105]\n",
|
|
" [0.52631579 0.36842105]\n",
|
|
" [0.57894737 0.36842105]\n",
|
|
" [0.63157895 0.36842105]\n",
|
|
" [0.68421053 0.36842105]\n",
|
|
" [0.73684211 0.36842105]\n",
|
|
" [0.78947368 0.36842105]\n",
|
|
" [0.84210526 0.36842105]\n",
|
|
" [0.89473684 0.36842105]\n",
|
|
" [0.94736842 0.36842105]\n",
|
|
" [1. 0.36842105]\n",
|
|
" [0. 0.42105263]\n",
|
|
" [0.05263158 0.42105263]\n",
|
|
" [0.10526316 0.42105263]\n",
|
|
" [0.15789474 0.42105263]\n",
|
|
" [0.21052632 0.42105263]\n",
|
|
" [0.26315789 0.42105263]\n",
|
|
" [0.31578947 0.42105263]\n",
|
|
" [0.36842105 0.42105263]\n",
|
|
" [0.42105263 0.42105263]\n",
|
|
" [0.47368421 0.42105263]\n",
|
|
" [0.52631579 0.42105263]\n",
|
|
" [0.57894737 0.42105263]\n",
|
|
" [0.63157895 0.42105263]\n",
|
|
" [0.68421053 0.42105263]\n",
|
|
" [0.73684211 0.42105263]\n",
|
|
" [0.78947368 0.42105263]\n",
|
|
" [0.84210526 0.42105263]\n",
|
|
" [0.89473684 0.42105263]\n",
|
|
" [0.94736842 0.42105263]\n",
|
|
" [1. 0.42105263]\n",
|
|
" [0. 0.47368421]\n",
|
|
" [0.05263158 0.47368421]\n",
|
|
" [0.10526316 0.47368421]\n",
|
|
" [0.15789474 0.47368421]\n",
|
|
" [0.21052632 0.47368421]\n",
|
|
" [0.26315789 0.47368421]\n",
|
|
" [0.31578947 0.47368421]\n",
|
|
" [0.36842105 0.47368421]\n",
|
|
" [0.42105263 0.47368421]\n",
|
|
" [0.47368421 0.47368421]\n",
|
|
" [0.52631579 0.47368421]\n",
|
|
" [0.57894737 0.47368421]\n",
|
|
" [0.63157895 0.47368421]\n",
|
|
" [0.68421053 0.47368421]\n",
|
|
" [0.73684211 0.47368421]\n",
|
|
" [0.78947368 0.47368421]\n",
|
|
" [0.84210526 0.47368421]\n",
|
|
" [0.89473684 0.47368421]\n",
|
|
" [0.94736842 0.47368421]\n",
|
|
" [1. 0.47368421]\n",
|
|
" [0. 0.52631579]\n",
|
|
" [0.05263158 0.52631579]\n",
|
|
" [0.10526316 0.52631579]\n",
|
|
" [0.15789474 0.52631579]\n",
|
|
" [0.21052632 0.52631579]\n",
|
|
" [0.26315789 0.52631579]\n",
|
|
" [0.31578947 0.52631579]\n",
|
|
" [0.36842105 0.52631579]\n",
|
|
" [0.42105263 0.52631579]\n",
|
|
" [0.47368421 0.52631579]\n",
|
|
" [0.52631579 0.52631579]\n",
|
|
" [0.57894737 0.52631579]\n",
|
|
" [0.63157895 0.52631579]\n",
|
|
" [0.68421053 0.52631579]\n",
|
|
" [0.73684211 0.52631579]\n",
|
|
" [0.78947368 0.52631579]\n",
|
|
" [0.84210526 0.52631579]\n",
|
|
" [0.89473684 0.52631579]\n",
|
|
" [0.94736842 0.52631579]\n",
|
|
" [1. 0.52631579]\n",
|
|
" [0. 0.57894737]\n",
|
|
" [0.05263158 0.57894737]\n",
|
|
" [0.10526316 0.57894737]\n",
|
|
" [0.15789474 0.57894737]\n",
|
|
" [0.21052632 0.57894737]\n",
|
|
" [0.26315789 0.57894737]\n",
|
|
" [0.31578947 0.57894737]\n",
|
|
" [0.36842105 0.57894737]\n",
|
|
" [0.42105263 0.57894737]\n",
|
|
" [0.47368421 0.57894737]\n",
|
|
" [0.52631579 0.57894737]\n",
|
|
" [0.57894737 0.57894737]\n",
|
|
" [0.63157895 0.57894737]\n",
|
|
" [0.68421053 0.57894737]\n",
|
|
" [0.73684211 0.57894737]\n",
|
|
" [0.78947368 0.57894737]\n",
|
|
" [0.84210526 0.57894737]\n",
|
|
" [0.89473684 0.57894737]\n",
|
|
" [0.94736842 0.57894737]\n",
|
|
" [1. 0.57894737]\n",
|
|
" [0. 0.63157895]\n",
|
|
" [0.05263158 0.63157895]\n",
|
|
" [0.10526316 0.63157895]\n",
|
|
" [0.15789474 0.63157895]\n",
|
|
" [0.21052632 0.63157895]\n",
|
|
" [0.26315789 0.63157895]\n",
|
|
" [0.31578947 0.63157895]\n",
|
|
" [0.36842105 0.63157895]\n",
|
|
" [0.42105263 0.63157895]\n",
|
|
" [0.47368421 0.63157895]\n",
|
|
" [0.52631579 0.63157895]\n",
|
|
" [0.57894737 0.63157895]\n",
|
|
" [0.63157895 0.63157895]\n",
|
|
" [0.68421053 0.63157895]\n",
|
|
" [0.73684211 0.63157895]\n",
|
|
" [0.78947368 0.63157895]\n",
|
|
" [0.84210526 0.63157895]\n",
|
|
" [0.89473684 0.63157895]\n",
|
|
" [0.94736842 0.63157895]\n",
|
|
" [1. 0.63157895]\n",
|
|
" [0. 0.68421053]\n",
|
|
" [0.05263158 0.68421053]\n",
|
|
" [0.10526316 0.68421053]\n",
|
|
" [0.15789474 0.68421053]\n",
|
|
" [0.21052632 0.68421053]\n",
|
|
" [0.26315789 0.68421053]\n",
|
|
" [0.31578947 0.68421053]\n",
|
|
" [0.36842105 0.68421053]\n",
|
|
" [0.42105263 0.68421053]\n",
|
|
" [0.47368421 0.68421053]\n",
|
|
" [0.52631579 0.68421053]\n",
|
|
" [0.57894737 0.68421053]\n",
|
|
" [0.63157895 0.68421053]\n",
|
|
" [0.68421053 0.68421053]\n",
|
|
" [0.73684211 0.68421053]\n",
|
|
" [0.78947368 0.68421053]\n",
|
|
" [0.84210526 0.68421053]\n",
|
|
" [0.89473684 0.68421053]\n",
|
|
" [0.94736842 0.68421053]\n",
|
|
" [1. 0.68421053]\n",
|
|
" [0. 0.73684211]\n",
|
|
" [0.05263158 0.73684211]\n",
|
|
" [0.10526316 0.73684211]\n",
|
|
" [0.15789474 0.73684211]\n",
|
|
" [0.21052632 0.73684211]\n",
|
|
" [0.26315789 0.73684211]\n",
|
|
" [0.31578947 0.73684211]\n",
|
|
" [0.36842105 0.73684211]\n",
|
|
" [0.42105263 0.73684211]\n",
|
|
" [0.47368421 0.73684211]\n",
|
|
" [0.52631579 0.73684211]\n",
|
|
" [0.57894737 0.73684211]\n",
|
|
" [0.63157895 0.73684211]\n",
|
|
" [0.68421053 0.73684211]\n",
|
|
" [0.73684211 0.73684211]\n",
|
|
" [0.78947368 0.73684211]\n",
|
|
" [0.84210526 0.73684211]\n",
|
|
" [0.89473684 0.73684211]\n",
|
|
" [0.94736842 0.73684211]\n",
|
|
" [1. 0.73684211]\n",
|
|
" [0. 0.78947368]\n",
|
|
" [0.05263158 0.78947368]\n",
|
|
" [0.10526316 0.78947368]\n",
|
|
" [0.15789474 0.78947368]\n",
|
|
" [0.21052632 0.78947368]\n",
|
|
" [0.26315789 0.78947368]\n",
|
|
" [0.31578947 0.78947368]\n",
|
|
" [0.36842105 0.78947368]\n",
|
|
" [0.42105263 0.78947368]\n",
|
|
" [0.47368421 0.78947368]\n",
|
|
" [0.52631579 0.78947368]\n",
|
|
" [0.57894737 0.78947368]\n",
|
|
" [0.63157895 0.78947368]\n",
|
|
" [0.68421053 0.78947368]\n",
|
|
" [0.73684211 0.78947368]\n",
|
|
" [0.78947368 0.78947368]\n",
|
|
" [0.84210526 0.78947368]\n",
|
|
" [0.89473684 0.78947368]\n",
|
|
" [0.94736842 0.78947368]\n",
|
|
" [1. 0.78947368]\n",
|
|
" [0. 0.84210526]\n",
|
|
" [0.05263158 0.84210526]\n",
|
|
" [0.10526316 0.84210526]\n",
|
|
" [0.15789474 0.84210526]\n",
|
|
" [0.21052632 0.84210526]\n",
|
|
" [0.26315789 0.84210526]\n",
|
|
" [0.31578947 0.84210526]\n",
|
|
" [0.36842105 0.84210526]\n",
|
|
" [0.42105263 0.84210526]\n",
|
|
" [0.47368421 0.84210526]\n",
|
|
" [0.52631579 0.84210526]\n",
|
|
" [0.57894737 0.84210526]\n",
|
|
" [0.63157895 0.84210526]\n",
|
|
" [0.68421053 0.84210526]\n",
|
|
" [0.73684211 0.84210526]\n",
|
|
" [0.78947368 0.84210526]\n",
|
|
" [0.84210526 0.84210526]\n",
|
|
" [0.89473684 0.84210526]\n",
|
|
" [0.94736842 0.84210526]\n",
|
|
" [1. 0.84210526]\n",
|
|
" [0. 0.89473684]\n",
|
|
" [0.05263158 0.89473684]\n",
|
|
" [0.10526316 0.89473684]\n",
|
|
" [0.15789474 0.89473684]\n",
|
|
" [0.21052632 0.89473684]\n",
|
|
" [0.26315789 0.89473684]\n",
|
|
" [0.31578947 0.89473684]\n",
|
|
" [0.36842105 0.89473684]\n",
|
|
" [0.42105263 0.89473684]\n",
|
|
" [0.47368421 0.89473684]\n",
|
|
" [0.52631579 0.89473684]\n",
|
|
" [0.57894737 0.89473684]\n",
|
|
" [0.63157895 0.89473684]\n",
|
|
" [0.68421053 0.89473684]\n",
|
|
" [0.73684211 0.89473684]\n",
|
|
" [0.78947368 0.89473684]\n",
|
|
" [0.84210526 0.89473684]\n",
|
|
" [0.89473684 0.89473684]\n",
|
|
" [0.94736842 0.89473684]\n",
|
|
" [1. 0.89473684]\n",
|
|
" [0. 0.94736842]\n",
|
|
" [0.05263158 0.94736842]\n",
|
|
" [0.10526316 0.94736842]\n",
|
|
" [0.15789474 0.94736842]\n",
|
|
" [0.21052632 0.94736842]\n",
|
|
" [0.26315789 0.94736842]\n",
|
|
" [0.31578947 0.94736842]\n",
|
|
" [0.36842105 0.94736842]\n",
|
|
" [0.42105263 0.94736842]\n",
|
|
" [0.47368421 0.94736842]\n",
|
|
" [0.52631579 0.94736842]\n",
|
|
" [0.57894737 0.94736842]\n",
|
|
" [0.63157895 0.94736842]\n",
|
|
" [0.68421053 0.94736842]\n",
|
|
" [0.73684211 0.94736842]\n",
|
|
" [0.78947368 0.94736842]\n",
|
|
" [0.84210526 0.94736842]\n",
|
|
" [0.89473684 0.94736842]\n",
|
|
" [0.94736842 0.94736842]\n",
|
|
" [1. 0.94736842]\n",
|
|
" [0. 1. ]\n",
|
|
" [0.05263158 1. ]\n",
|
|
" [0.10526316 1. ]\n",
|
|
" [0.15789474 1. ]\n",
|
|
" [0.21052632 1. ]\n",
|
|
" [0.26315789 1. ]\n",
|
|
" [0.31578947 1. ]\n",
|
|
" [0.36842105 1. ]\n",
|
|
" [0.42105263 1. ]\n",
|
|
" [0.47368421 1. ]\n",
|
|
" [0.52631579 1. ]\n",
|
|
" [0.57894737 1. ]\n",
|
|
" [0.63157895 1. ]\n",
|
|
" [0.68421053 1. ]\n",
|
|
" [0.73684211 1. ]\n",
|
|
" [0.78947368 1. ]\n",
|
|
" [0.84210526 1. ]\n",
|
|
" [0.89473684 1. ]\n",
|
|
" [0.94736842 1. ]\n",
|
|
" [1. 1. ]]\n",
|
|
"D ['x', 'y']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000],\n",
|
|
" [0.0000, 0.0526],\n",
|
|
" [0.0526, 0.0526],\n",
|
|
" [0.1053, 0.0526],\n",
|
|
" [0.1579, 0.0526],\n",
|
|
" [0.2105, 0.0526],\n",
|
|
" [0.2632, 0.0526],\n",
|
|
" [0.3158, 0.0526],\n",
|
|
" [0.3684, 0.0526],\n",
|
|
" [0.4211, 0.0526],\n",
|
|
" [0.4737, 0.0526],\n",
|
|
" [0.5263, 0.0526],\n",
|
|
" [0.5789, 0.0526],\n",
|
|
" [0.6316, 0.0526],\n",
|
|
" [0.6842, 0.0526],\n",
|
|
" [0.7368, 0.0526],\n",
|
|
" [0.7895, 0.0526],\n",
|
|
" [0.8421, 0.0526],\n",
|
|
" [0.8947, 0.0526],\n",
|
|
" [0.9474, 0.0526],\n",
|
|
" [1.0000, 0.0526],\n",
|
|
" [0.0000, 0.1053],\n",
|
|
" [0.0526, 0.1053],\n",
|
|
" [0.1053, 0.1053],\n",
|
|
" [0.1579, 0.1053],\n",
|
|
" [0.2105, 0.1053],\n",
|
|
" [0.2632, 0.1053],\n",
|
|
" [0.3158, 0.1053],\n",
|
|
" [0.3684, 0.1053],\n",
|
|
" [0.4211, 0.1053],\n",
|
|
" [0.4737, 0.1053],\n",
|
|
" [0.5263, 0.1053],\n",
|
|
" [0.5789, 0.1053],\n",
|
|
" [0.6316, 0.1053],\n",
|
|
" [0.6842, 0.1053],\n",
|
|
" [0.7368, 0.1053],\n",
|
|
" [0.7895, 0.1053],\n",
|
|
" [0.8421, 0.1053],\n",
|
|
" [0.8947, 0.1053],\n",
|
|
" [0.9474, 0.1053],\n",
|
|
" [1.0000, 0.1053],\n",
|
|
" [0.0000, 0.1579],\n",
|
|
" [0.0526, 0.1579],\n",
|
|
" [0.1053, 0.1579],\n",
|
|
" [0.1579, 0.1579],\n",
|
|
" [0.2105, 0.1579],\n",
|
|
" [0.2632, 0.1579],\n",
|
|
" [0.3158, 0.1579],\n",
|
|
" [0.3684, 0.1579],\n",
|
|
" [0.4211, 0.1579],\n",
|
|
" [0.4737, 0.1579],\n",
|
|
" [0.5263, 0.1579],\n",
|
|
" [0.5789, 0.1579],\n",
|
|
" [0.6316, 0.1579],\n",
|
|
" [0.6842, 0.1579],\n",
|
|
" [0.7368, 0.1579],\n",
|
|
" [0.7895, 0.1579],\n",
|
|
" [0.8421, 0.1579],\n",
|
|
" [0.8947, 0.1579],\n",
|
|
" [0.9474, 0.1579],\n",
|
|
" [1.0000, 0.1579],\n",
|
|
" [0.0000, 0.2105],\n",
|
|
" [0.0526, 0.2105],\n",
|
|
" [0.1053, 0.2105],\n",
|
|
" [0.1579, 0.2105],\n",
|
|
" [0.2105, 0.2105],\n",
|
|
" [0.2632, 0.2105],\n",
|
|
" [0.3158, 0.2105],\n",
|
|
" [0.3684, 0.2105],\n",
|
|
" [0.4211, 0.2105],\n",
|
|
" [0.4737, 0.2105],\n",
|
|
" [0.5263, 0.2105],\n",
|
|
" [0.5789, 0.2105],\n",
|
|
" [0.6316, 0.2105],\n",
|
|
" [0.6842, 0.2105],\n",
|
|
" [0.7368, 0.2105],\n",
|
|
" [0.7895, 0.2105],\n",
|
|
" [0.8421, 0.2105],\n",
|
|
" [0.8947, 0.2105],\n",
|
|
" [0.9474, 0.2105],\n",
|
|
" [1.0000, 0.2105],\n",
|
|
" [0.0000, 0.2632],\n",
|
|
" [0.0526, 0.2632],\n",
|
|
" [0.1053, 0.2632],\n",
|
|
" [0.1579, 0.2632],\n",
|
|
" [0.2105, 0.2632],\n",
|
|
" [0.2632, 0.2632],\n",
|
|
" [0.3158, 0.2632],\n",
|
|
" [0.3684, 0.2632],\n",
|
|
" [0.4211, 0.2632],\n",
|
|
" [0.4737, 0.2632],\n",
|
|
" [0.5263, 0.2632],\n",
|
|
" [0.5789, 0.2632],\n",
|
|
" [0.6316, 0.2632],\n",
|
|
" [0.6842, 0.2632],\n",
|
|
" [0.7368, 0.2632],\n",
|
|
" [0.7895, 0.2632],\n",
|
|
" [0.8421, 0.2632],\n",
|
|
" [0.8947, 0.2632],\n",
|
|
" [0.9474, 0.2632],\n",
|
|
" [1.0000, 0.2632],\n",
|
|
" [0.0000, 0.3158],\n",
|
|
" [0.0526, 0.3158],\n",
|
|
" [0.1053, 0.3158],\n",
|
|
" [0.1579, 0.3158],\n",
|
|
" [0.2105, 0.3158],\n",
|
|
" [0.2632, 0.3158],\n",
|
|
" [0.3158, 0.3158],\n",
|
|
" [0.3684, 0.3158],\n",
|
|
" [0.4211, 0.3158],\n",
|
|
" [0.4737, 0.3158],\n",
|
|
" [0.5263, 0.3158],\n",
|
|
" [0.5789, 0.3158],\n",
|
|
" [0.6316, 0.3158],\n",
|
|
" [0.6842, 0.3158],\n",
|
|
" [0.7368, 0.3158],\n",
|
|
" [0.7895, 0.3158],\n",
|
|
" [0.8421, 0.3158],\n",
|
|
" [0.8947, 0.3158],\n",
|
|
" [0.9474, 0.3158],\n",
|
|
" [1.0000, 0.3158],\n",
|
|
" [0.0000, 0.3684],\n",
|
|
" [0.0526, 0.3684],\n",
|
|
" [0.1053, 0.3684],\n",
|
|
" [0.1579, 0.3684],\n",
|
|
" [0.2105, 0.3684],\n",
|
|
" [0.2632, 0.3684],\n",
|
|
" [0.3158, 0.3684],\n",
|
|
" [0.3684, 0.3684],\n",
|
|
" [0.4211, 0.3684],\n",
|
|
" [0.4737, 0.3684],\n",
|
|
" [0.5263, 0.3684],\n",
|
|
" [0.5789, 0.3684],\n",
|
|
" [0.6316, 0.3684],\n",
|
|
" [0.6842, 0.3684],\n",
|
|
" [0.7368, 0.3684],\n",
|
|
" [0.7895, 0.3684],\n",
|
|
" [0.8421, 0.3684],\n",
|
|
" [0.8947, 0.3684],\n",
|
|
" [0.9474, 0.3684],\n",
|
|
" [1.0000, 0.3684],\n",
|
|
" [0.0000, 0.4211],\n",
|
|
" [0.0526, 0.4211],\n",
|
|
" [0.1053, 0.4211],\n",
|
|
" [0.1579, 0.4211],\n",
|
|
" [0.2105, 0.4211],\n",
|
|
" [0.2632, 0.4211],\n",
|
|
" [0.3158, 0.4211],\n",
|
|
" [0.3684, 0.4211],\n",
|
|
" [0.4211, 0.4211],\n",
|
|
" [0.4737, 0.4211],\n",
|
|
" [0.5263, 0.4211],\n",
|
|
" [0.5789, 0.4211],\n",
|
|
" [0.6316, 0.4211],\n",
|
|
" [0.6842, 0.4211],\n",
|
|
" [0.7368, 0.4211],\n",
|
|
" [0.7895, 0.4211],\n",
|
|
" [0.8421, 0.4211],\n",
|
|
" [0.8947, 0.4211],\n",
|
|
" [0.9474, 0.4211],\n",
|
|
" [1.0000, 0.4211],\n",
|
|
" [0.0000, 0.4737],\n",
|
|
" [0.0526, 0.4737],\n",
|
|
" [0.1053, 0.4737],\n",
|
|
" [0.1579, 0.4737],\n",
|
|
" [0.2105, 0.4737],\n",
|
|
" [0.2632, 0.4737],\n",
|
|
" [0.3158, 0.4737],\n",
|
|
" [0.3684, 0.4737],\n",
|
|
" [0.4211, 0.4737],\n",
|
|
" [0.4737, 0.4737],\n",
|
|
" [0.5263, 0.4737],\n",
|
|
" [0.5789, 0.4737],\n",
|
|
" [0.6316, 0.4737],\n",
|
|
" [0.6842, 0.4737],\n",
|
|
" [0.7368, 0.4737],\n",
|
|
" [0.7895, 0.4737],\n",
|
|
" [0.8421, 0.4737],\n",
|
|
" [0.8947, 0.4737],\n",
|
|
" [0.9474, 0.4737],\n",
|
|
" [1.0000, 0.4737],\n",
|
|
" [0.0000, 0.5263],\n",
|
|
" [0.0526, 0.5263],\n",
|
|
" [0.1053, 0.5263],\n",
|
|
" [0.1579, 0.5263],\n",
|
|
" [0.2105, 0.5263],\n",
|
|
" [0.2632, 0.5263],\n",
|
|
" [0.3158, 0.5263],\n",
|
|
" [0.3684, 0.5263],\n",
|
|
" [0.4211, 0.5263],\n",
|
|
" [0.4737, 0.5263],\n",
|
|
" [0.5263, 0.5263],\n",
|
|
" [0.5789, 0.5263],\n",
|
|
" [0.6316, 0.5263],\n",
|
|
" [0.6842, 0.5263],\n",
|
|
" [0.7368, 0.5263],\n",
|
|
" [0.7895, 0.5263],\n",
|
|
" [0.8421, 0.5263],\n",
|
|
" [0.8947, 0.5263],\n",
|
|
" [0.9474, 0.5263],\n",
|
|
" [1.0000, 0.5263],\n",
|
|
" [0.0000, 0.5789],\n",
|
|
" [0.0526, 0.5789],\n",
|
|
" [0.1053, 0.5789],\n",
|
|
" [0.1579, 0.5789],\n",
|
|
" [0.2105, 0.5789],\n",
|
|
" [0.2632, 0.5789],\n",
|
|
" [0.3158, 0.5789],\n",
|
|
" [0.3684, 0.5789],\n",
|
|
" [0.4211, 0.5789],\n",
|
|
" [0.4737, 0.5789],\n",
|
|
" [0.5263, 0.5789],\n",
|
|
" [0.5789, 0.5789],\n",
|
|
" [0.6316, 0.5789],\n",
|
|
" [0.6842, 0.5789],\n",
|
|
" [0.7368, 0.5789],\n",
|
|
" [0.7895, 0.5789],\n",
|
|
" [0.8421, 0.5789],\n",
|
|
" [0.8947, 0.5789],\n",
|
|
" [0.9474, 0.5789],\n",
|
|
" [1.0000, 0.5789],\n",
|
|
" [0.0000, 0.6316],\n",
|
|
" [0.0526, 0.6316],\n",
|
|
" [0.1053, 0.6316],\n",
|
|
" [0.1579, 0.6316],\n",
|
|
" [0.2105, 0.6316],\n",
|
|
" [0.2632, 0.6316],\n",
|
|
" [0.3158, 0.6316],\n",
|
|
" [0.3684, 0.6316],\n",
|
|
" [0.4211, 0.6316],\n",
|
|
" [0.4737, 0.6316],\n",
|
|
" [0.5263, 0.6316],\n",
|
|
" [0.5789, 0.6316],\n",
|
|
" [0.6316, 0.6316],\n",
|
|
" [0.6842, 0.6316],\n",
|
|
" [0.7368, 0.6316],\n",
|
|
" [0.7895, 0.6316],\n",
|
|
" [0.8421, 0.6316],\n",
|
|
" [0.8947, 0.6316],\n",
|
|
" [0.9474, 0.6316],\n",
|
|
" [1.0000, 0.6316],\n",
|
|
" [0.0000, 0.6842],\n",
|
|
" [0.0526, 0.6842],\n",
|
|
" [0.1053, 0.6842],\n",
|
|
" [0.1579, 0.6842],\n",
|
|
" [0.2105, 0.6842],\n",
|
|
" [0.2632, 0.6842],\n",
|
|
" [0.3158, 0.6842],\n",
|
|
" [0.3684, 0.6842],\n",
|
|
" [0.4211, 0.6842],\n",
|
|
" [0.4737, 0.6842],\n",
|
|
" [0.5263, 0.6842],\n",
|
|
" [0.5789, 0.6842],\n",
|
|
" [0.6316, 0.6842],\n",
|
|
" [0.6842, 0.6842],\n",
|
|
" [0.7368, 0.6842],\n",
|
|
" [0.7895, 0.6842],\n",
|
|
" [0.8421, 0.6842],\n",
|
|
" [0.8947, 0.6842],\n",
|
|
" [0.9474, 0.6842],\n",
|
|
" [1.0000, 0.6842],\n",
|
|
" [0.0000, 0.7368],\n",
|
|
" [0.0526, 0.7368],\n",
|
|
" [0.1053, 0.7368],\n",
|
|
" [0.1579, 0.7368],\n",
|
|
" [0.2105, 0.7368],\n",
|
|
" [0.2632, 0.7368],\n",
|
|
" [0.3158, 0.7368],\n",
|
|
" [0.3684, 0.7368],\n",
|
|
" [0.4211, 0.7368],\n",
|
|
" [0.4737, 0.7368],\n",
|
|
" [0.5263, 0.7368],\n",
|
|
" [0.5789, 0.7368],\n",
|
|
" [0.6316, 0.7368],\n",
|
|
" [0.6842, 0.7368],\n",
|
|
" [0.7368, 0.7368],\n",
|
|
" [0.7895, 0.7368],\n",
|
|
" [0.8421, 0.7368],\n",
|
|
" [0.8947, 0.7368],\n",
|
|
" [0.9474, 0.7368],\n",
|
|
" [1.0000, 0.7368],\n",
|
|
" [0.0000, 0.7895],\n",
|
|
" [0.0526, 0.7895],\n",
|
|
" [0.1053, 0.7895],\n",
|
|
" [0.1579, 0.7895],\n",
|
|
" [0.2105, 0.7895],\n",
|
|
" [0.2632, 0.7895],\n",
|
|
" [0.3158, 0.7895],\n",
|
|
" [0.3684, 0.7895],\n",
|
|
" [0.4211, 0.7895],\n",
|
|
" [0.4737, 0.7895],\n",
|
|
" [0.5263, 0.7895],\n",
|
|
" [0.5789, 0.7895],\n",
|
|
" [0.6316, 0.7895],\n",
|
|
" [0.6842, 0.7895],\n",
|
|
" [0.7368, 0.7895],\n",
|
|
" [0.7895, 0.7895],\n",
|
|
" [0.8421, 0.7895],\n",
|
|
" [0.8947, 0.7895],\n",
|
|
" [0.9474, 0.7895],\n",
|
|
" [1.0000, 0.7895],\n",
|
|
" [0.0000, 0.8421],\n",
|
|
" [0.0526, 0.8421],\n",
|
|
" [0.1053, 0.8421],\n",
|
|
" [0.1579, 0.8421],\n",
|
|
" [0.2105, 0.8421],\n",
|
|
" [0.2632, 0.8421],\n",
|
|
" [0.3158, 0.8421],\n",
|
|
" [0.3684, 0.8421],\n",
|
|
" [0.4211, 0.8421],\n",
|
|
" [0.4737, 0.8421],\n",
|
|
" [0.5263, 0.8421],\n",
|
|
" [0.5789, 0.8421],\n",
|
|
" [0.6316, 0.8421],\n",
|
|
" [0.6842, 0.8421],\n",
|
|
" [0.7368, 0.8421],\n",
|
|
" [0.7895, 0.8421],\n",
|
|
" [0.8421, 0.8421],\n",
|
|
" [0.8947, 0.8421],\n",
|
|
" [0.9474, 0.8421],\n",
|
|
" [1.0000, 0.8421],\n",
|
|
" [0.0000, 0.8947],\n",
|
|
" [0.0526, 0.8947],\n",
|
|
" [0.1053, 0.8947],\n",
|
|
" [0.1579, 0.8947],\n",
|
|
" [0.2105, 0.8947],\n",
|
|
" [0.2632, 0.8947],\n",
|
|
" [0.3158, 0.8947],\n",
|
|
" [0.3684, 0.8947],\n",
|
|
" [0.4211, 0.8947],\n",
|
|
" [0.4737, 0.8947],\n",
|
|
" [0.5263, 0.8947],\n",
|
|
" [0.5789, 0.8947],\n",
|
|
" [0.6316, 0.8947],\n",
|
|
" [0.6842, 0.8947],\n",
|
|
" [0.7368, 0.8947],\n",
|
|
" [0.7895, 0.8947],\n",
|
|
" [0.8421, 0.8947],\n",
|
|
" [0.8947, 0.8947],\n",
|
|
" [0.9474, 0.8947],\n",
|
|
" [1.0000, 0.8947],\n",
|
|
" [0.0000, 0.9474],\n",
|
|
" [0.0526, 0.9474],\n",
|
|
" [0.1053, 0.9474],\n",
|
|
" [0.1579, 0.9474],\n",
|
|
" [0.2105, 0.9474],\n",
|
|
" [0.2632, 0.9474],\n",
|
|
" [0.3158, 0.9474],\n",
|
|
" [0.3684, 0.9474],\n",
|
|
" [0.4211, 0.9474],\n",
|
|
" [0.4737, 0.9474],\n",
|
|
" [0.5263, 0.9474],\n",
|
|
" [0.5789, 0.9474],\n",
|
|
" [0.6316, 0.9474],\n",
|
|
" [0.6842, 0.9474],\n",
|
|
" [0.7368, 0.9474],\n",
|
|
" [0.7895, 0.9474],\n",
|
|
" [0.8421, 0.9474],\n",
|
|
" [0.8947, 0.9474],\n",
|
|
" [0.9474, 0.9474],\n",
|
|
" [1.0000, 0.9474],\n",
|
|
" [0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma1 ['x', 'y']\n",
|
|
" tensor([[0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma2 ['x', 'y']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma3 ['y', 'x']\n",
|
|
" tensor([[0.0000, 1.0000],\n",
|
|
" [0.0526, 1.0000],\n",
|
|
" [0.1053, 1.0000],\n",
|
|
" [0.1579, 1.0000],\n",
|
|
" [0.2105, 1.0000],\n",
|
|
" [0.2632, 1.0000],\n",
|
|
" [0.3158, 1.0000],\n",
|
|
" [0.3684, 1.0000],\n",
|
|
" [0.4211, 1.0000],\n",
|
|
" [0.4737, 1.0000],\n",
|
|
" [0.5263, 1.0000],\n",
|
|
" [0.5789, 1.0000],\n",
|
|
" [0.6316, 1.0000],\n",
|
|
" [0.6842, 1.0000],\n",
|
|
" [0.7368, 1.0000],\n",
|
|
" [0.7895, 1.0000],\n",
|
|
" [0.8421, 1.0000],\n",
|
|
" [0.8947, 1.0000],\n",
|
|
" [0.9474, 1.0000],\n",
|
|
" [1.0000, 1.0000]], dtype=torch.float64)\n",
|
|
"\n",
|
|
"[[0. ]\n",
|
|
" [0.05263158]\n",
|
|
" [0.10526316]\n",
|
|
" [0.15789474]\n",
|
|
" [0.21052632]\n",
|
|
" [0.26315789]\n",
|
|
" [0.31578947]\n",
|
|
" [0.36842105]\n",
|
|
" [0.42105263]\n",
|
|
" [0.47368421]\n",
|
|
" [0.52631579]\n",
|
|
" [0.57894737]\n",
|
|
" [0.63157895]\n",
|
|
" [0.68421053]\n",
|
|
" [0.73684211]\n",
|
|
" [0.78947368]\n",
|
|
" [0.84210526]\n",
|
|
" [0.89473684]\n",
|
|
" [0.94736842]\n",
|
|
" [1. ]]\n",
|
|
"gamma4 ['y', 'x']\n",
|
|
" tensor([[0.0000, 0.0000],\n",
|
|
" [0.0526, 0.0000],\n",
|
|
" [0.1053, 0.0000],\n",
|
|
" [0.1579, 0.0000],\n",
|
|
" [0.2105, 0.0000],\n",
|
|
" [0.2632, 0.0000],\n",
|
|
" [0.3158, 0.0000],\n",
|
|
" [0.3684, 0.0000],\n",
|
|
" [0.4211, 0.0000],\n",
|
|
" [0.4737, 0.0000],\n",
|
|
" [0.5263, 0.0000],\n",
|
|
" [0.5789, 0.0000],\n",
|
|
" [0.6316, 0.0000],\n",
|
|
" [0.6842, 0.0000],\n",
|
|
" [0.7368, 0.0000],\n",
|
|
" [0.7895, 0.0000],\n",
|
|
" [0.8421, 0.0000],\n",
|
|
" [0.8947, 0.0000],\n",
|
|
" [0.9474, 0.0000],\n",
|
|
" [1.0000, 0.0000]], dtype=torch.float64)\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[epoch 00100] 2.449821e-06 1.285268e-08 4.097308e-08 3.083415e-08 5.291567e-08 2.312246e-06 \n",
|
|
"[epoch 00200] 1.186237e-06 1.590966e-08 2.882191e-08 1.229838e-08 1.150167e-08 1.117705e-06 \n",
|
|
"[epoch 00300] 9.070970e-07 1.396180e-08 3.233356e-08 1.494195e-08 6.932082e-09 8.389276e-07 \n",
|
|
"[epoch 00400] 8.387060e-07 1.366526e-08 3.432251e-08 1.570916e-08 6.742595e-09 7.682665e-07 \n",
|
|
"[epoch 00500] 8.072937e-07 1.367752e-08 3.455297e-08 1.579026e-08 7.048264e-09 7.362247e-07 \n",
|
|
"[epoch 00600] 7.851720e-07 1.365594e-08 3.419066e-08 1.570082e-08 7.288332e-09 7.143363e-07 \n",
|
|
"[epoch 00700] 7.671788e-07 1.356286e-08 3.370152e-08 1.558370e-08 7.423148e-09 6.969076e-07 \n",
|
|
"[epoch 00800] 7.513057e-07 1.340045e-08 3.319448e-08 1.546490e-08 7.464257e-09 6.817816e-07 \n",
|
|
"[epoch 00900] 7.365569e-07 1.317059e-08 3.268964e-08 1.533747e-08 7.425420e-09 6.679338e-07 \n",
|
|
"[epoch 01000] 7.224186e-07 1.287546e-08 3.218795e-08 1.518933e-08 7.320412e-09 6.548454e-07 \n",
|
|
"[epoch 01100] 7.086260e-07 1.252173e-08 3.168448e-08 1.501088e-08 7.163309e-09 6.422456e-07 \n",
|
|
"[epoch 01200] 6.950466e-07 1.212006e-08 3.117191e-08 1.479807e-08 6.968400e-09 6.299882e-07 \n",
|
|
"[epoch 01300] 6.816094e-07 1.168346e-08 3.064397e-08 1.455177e-08 6.748364e-09 6.179819e-07 \n",
|
|
"[epoch 01400] 6.682782e-07 1.122503e-08 3.009753e-08 1.427569e-08 6.513624e-09 6.061663e-07 \n",
|
|
"[epoch 01500] 2.377443e-05 6.153234e-08 1.867868e-07 2.873395e-07 2.042824e-07 2.303449e-05 \n",
|
|
"[epoch 01600] 6.566677e-07 2.026499e-08 3.530525e-08 2.481044e-08 9.733339e-09 5.665537e-07 \n",
|
|
"[epoch 01700] 6.313417e-07 1.533029e-08 3.314551e-08 2.030905e-08 8.125988e-09 5.544309e-07 \n",
|
|
"[epoch 01800] 6.149585e-07 1.277815e-08 3.130785e-08 1.725946e-08 7.070138e-09 5.465429e-07 \n",
|
|
"[epoch 01900] 7.178596e-05 6.206079e-07 7.863235e-07 7.367274e-07 1.694257e-07 6.947288e-05 \n",
|
|
"[epoch 02000] 6.344173e-07 2.503726e-08 3.811270e-08 3.012313e-08 1.161453e-08 5.295297e-07 \n",
|
|
"[epoch 02100] 5.941106e-07 1.697277e-08 3.442613e-08 2.292317e-08 9.071148e-09 5.107173e-07 \n",
|
|
"[epoch 02200] 5.731380e-07 1.321456e-08 3.172271e-08 1.824342e-08 7.446659e-09 5.025107e-07 \n",
|
|
"[epoch 02300] 5.574405e-07 1.107414e-08 2.988577e-08 1.546175e-08 6.553564e-09 4.944652e-07 \n",
|
|
"[epoch 02400] 1.175493e-06 1.665258e-08 2.819209e-08 3.540587e-08 2.106312e-08 1.074180e-06 \n",
|
|
"[epoch 02500] 5.632784e-07 1.799709e-08 3.407171e-08 2.482117e-08 1.012247e-08 4.762660e-07 \n",
|
|
"[epoch 02600] 5.359130e-07 1.327450e-08 3.147717e-08 1.854376e-08 7.681444e-09 4.649361e-07 \n",
|
|
"[epoch 02700] 5.186673e-07 1.071392e-08 2.940300e-08 1.520066e-08 6.600401e-09 4.567493e-07 \n",
|
|
"[epoch 02800] 1.318498e-04 7.567500e-07 1.029399e-06 8.910201e-07 3.258224e-07 1.288468e-04 \n",
|
|
"[epoch 02900] 5.378853e-07 1.832840e-08 3.311077e-08 2.636266e-08 1.114935e-08 4.489341e-07 \n",
|
|
"[epoch 03000] 5.012579e-07 1.310389e-08 3.102025e-08 1.847484e-08 7.857932e-09 4.308009e-07 \n",
|
|
"[epoch 03100] 4.828630e-07 1.037512e-08 2.887904e-08 1.462342e-08 6.514833e-09 4.224706e-07 \n",
|
|
"[epoch 03200] 8.354662e-05 1.870518e-07 4.784762e-07 2.813427e-07 6.983530e-08 8.252992e-05 \n",
|
|
"[epoch 03300] 4.725636e-07 1.226459e-08 2.921810e-08 1.562728e-08 6.876438e-09 4.085772e-07 \n",
|
|
"[epoch 03400] 4.532993e-07 9.259055e-09 2.722841e-08 1.331028e-08 6.181778e-09 3.973198e-07 \n",
|
|
"[epoch 03500] 8.016963e-07 1.258879e-08 2.568930e-08 3.649976e-08 2.119319e-08 7.057253e-07 \n",
|
|
"[epoch 03600] 4.497913e-07 1.251117e-08 2.925990e-08 1.784472e-08 7.962415e-09 3.822131e-07 \n",
|
|
"[epoch 03700] 9.633097e-07 1.920105e-07 2.047150e-07 1.129305e-07 5.950363e-08 3.941501e-07 \n",
|
|
"[epoch 03800] 4.447614e-07 5.153798e-09 2.101126e-08 1.742079e-08 1.030297e-08 3.908726e-07 \n",
|
|
"[epoch 03900] 4.896620e-07 1.294376e-08 2.706091e-08 1.660914e-08 9.325985e-09 4.237222e-07 \n",
|
|
"[epoch 04000] 4.079714e-07 9.336059e-09 2.609123e-08 1.344196e-08 6.540115e-09 3.525621e-07 \n",
|
|
"[epoch 04100] 3.946924e-07 8.190001e-09 2.529534e-08 1.048395e-08 5.162554e-09 3.455606e-07 \n",
|
|
"[epoch 04200] 5.574619e-07 7.629792e-09 2.201119e-08 4.318544e-08 3.316979e-08 4.514657e-07 \n",
|
|
"[epoch 04300] 3.913472e-07 1.016409e-08 2.587179e-08 1.436200e-08 7.166314e-09 3.337830e-07 \n",
|
|
"[epoch 04400] 3.758263e-07 7.951610e-09 2.412119e-08 1.137459e-08 5.952831e-09 3.264261e-07 \n",
|
|
"[epoch 04500] 3.671766e-07 6.667031e-09 2.250351e-08 1.004102e-08 5.550956e-09 3.224140e-07 \n",
|
|
"[epoch 04600] 4.007230e-07 1.088771e-08 2.226688e-08 2.136751e-08 1.362846e-08 3.325725e-07 \n",
|
|
"[epoch 04700] 3.608801e-07 9.180816e-09 2.412517e-08 1.305426e-08 6.621759e-09 3.078981e-07 \n",
|
|
"[epoch 04800] 3.460814e-07 7.369851e-09 2.261202e-08 9.945857e-09 5.271156e-09 3.008825e-07 \n",
|
|
"[epoch 04900] 6.526444e-06 1.385636e-08 3.518059e-08 8.811765e-08 4.520537e-08 6.344084e-06 \n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"3.484224671899308e-07"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"param_poisson_problem = ParametricPoisson()\n",
|
|
"\n",
|
|
"class myFeature(torch.nn.Module):\n",
|
|
" \"\"\"\n",
|
|
" \"\"\"\n",
|
|
" def __init__(self):\n",
|
|
" super(myFeature, self).__init__()\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" return (x['beta']*torch.sin(x['alpha']*x['x']*torch.pi)*\n",
|
|
" torch.sin(x['alpha']*x['y']*torch.pi))\n",
|
|
"\n",
|
|
"feat = [myFeature()]\n",
|
|
"model_learn = FeedForward(layers=[10, 10],\n",
|
|
" output_variables=param_poisson_problem.output_variables,\n",
|
|
" input_variables=param_poisson_problem.input_variables,\n",
|
|
" extra_features=feat)\n",
|
|
"\n",
|
|
"pinn_learn = PINN(poisson_problem, model_feat, lr=0.003, regularizer=1e-8)\n",
|
|
"pinn_learn.span_pts(20, 'grid', ['D'])\n",
|
|
"pinn_learn.span_pts(20, 'grid', ['gamma1', 'gamma2', 'gamma3', 'gamma4'])\n",
|
|
"pinn_learn.train(5000, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e91e8be7",
|
|
"metadata": {},
|
|
"source": [
|
|
"The losses are saved as for the other two cases trained above."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "26581f50",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open('tutorial1_files/poisson_history_learn_feat.txt', 'w') as file_:\n",
|
|
" for i, losses in enumerate(pinn_learn.history):\n",
|
|
" file_.write('{} {}\\n'.format(i, sum(losses)))\n",
|
|
"pinn_learn.save_state('tutorial1_files/pina.poisson_learn_feat')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5e018d4d",
|
|
"metadata": {},
|
|
"source": [
|
|
"Here the plots for the prediction error (below on the right) shows that the prediction coming from the **parametric PINN** is more accurate than the one of the basic version of PINN."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "81c94c8f",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[0. 0. ]\n",
|
|
" [0.00392157 0. ]\n",
|
|
" [0.00784314 0. ]\n",
|
|
" ...\n",
|
|
" [0.99215686 1. ]\n",
|
|
" [0.99607843 1. ]\n",
|
|
" [1. 1. ]]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 1152x432 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plotter_learn = Plotter()\n",
|
|
"plotter_learn.plot(pinn_learn)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ed030a0f",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now the files containing the loss trends for the three cases are read. The loss histories are compared; we can see that the loss decreases faster in the cases of PINN with extra-feature."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 53,
|
|
"id": "55497e4e",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
" \n",
|
|
"df = pd.read_csv(\"tutorial1_files/poisson_history.txt\", sep=\" \", header=None)\n",
|
|
"epochs = df[0]\n",
|
|
"poisson_data = epochs.to_numpy()*100\n",
|
|
"basic = df[1].to_numpy()\n",
|
|
"\n",
|
|
"df_feat = pd.read_csv(\"tutorial1_files/poisson_history_feat.txt\", sep=\" \", header=None)\n",
|
|
"feat = df_feat[1].to_numpy()\n",
|
|
"\n",
|
|
"df_learn = pd.read_csv(\"tutorial1_files/poisson_history_learn_feat.txt\", sep=\" \", header=None)\n",
|
|
"learn_feat = df_learn[1].to_numpy()\n",
|
|
"\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"plt.semilogy(epochs, basic, label='Basic PINN')\n",
|
|
"plt.semilogy(epochs, feat, label='PINN with extra-feature')\n",
|
|
"plt.semilogy(epochs, learn_feat, label='PINN with learnable extra-feature')\n",
|
|
"plt.legend()\n",
|
|
"plt.grid()\n",
|
|
"plt.show()"
|
|
]
|
|
}
|
|
],
|
|
"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.8.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|