{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "bdb8d92e", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/vemuri/.local/lib/python3.10/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] } ], "source": [ "import sys\n", "sys.path.insert(0, \"../\")\n", "import time\n", "import numpy as np\n", "from pinn import *\n", "from grad_stats import *\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "import torch\n", "import torch.nn as nn\n", "from torch.autograd import grad\n", "from torch.optim import Adam\n", "from torch.optim.lr_scheduler import ExponentialLR, MultiStepLR\n", "\n", "from tqdm import tqdm_notebook as tqdm \n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "c8841a8d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "seed 1\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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sRjmzp2Lp5566libdMxYu3YtzjjjDNTU1KCxsRGf+MQnsGPHDtHH8zysWrUKU6ZMQTwex9lnn41XXnnlGFlsB2vXroXjOFi+fHnuGOdpkD179uBzn/scJk6ciEQigfe85z3Ytm1b7jznCchkMvjGN76BmTNnIh6P44QTTsDq1avhum6uD+eJjGs8C3nooYe8cDjs3Xnnnd6rr77qXXvttV5VVZX397///Vibdkz48Ic/7N19993en//8Z2/79u3e+eef702fPt3r7u7O9fnOd77j1dTUeA8//LD38ssvexdffLE3efJkr7Oz8xhafux47rnnvOOPP95717ve5V177bW545wnzztw4IA3Y8YM74tf/KL37LPPejt37vR+/etfe//93/+d68N58rxvf/vb3sSJE73/9//+n7dz507vpz/9qVddXe2tW7cu14fzRMYzVi4AzjzzTO/KK68Ux2bPnu1df/31x8giu2hra/MAeJs3b/Y8z/Nc1/Wam5u973znO7k+/f39XjKZ9H784x8fKzOPGV1dXd6sWbO8TZs2eWeddVZuAcB5GuTrX/+69973vnfY85ynQc4//3zvn//5n8WxCy+80Pvc5z7neR7niYx/rAsBpFIpbNu2DUuWLBHHlyxZgi1byt/28e1AR0cHAKC+vh4AsHPnTrS2too5i0ajOOussypyzq666iqcf/75+NCHPiSOc54GeeyxxzBv3jx85jOfQWNjI0477TTceeedufOcp0He+9734je/+Q3+8pe/AABeeuklPP300/jIRz4CgPNExj/W7Qa4b98+ZLNZNDU1ieNNTU1obW09RlbZg+d5WLFiBd773vdizpw5AJCbl6Hm7O9///uY23gseeihh/DHP/4Rzz//fN45ztMgf/3rX3H77bdjxYoV+Pd//3c899xzuOaaaxCNRvH5z3+e83SIr3/96+jo6MDs2bMRDAaRzWZx00034bOf/SwAfp/I+Me6BcBhHMcRbc/z8o5VIldffTX+9Kc/4emnn847V+lztnv3blx77bV48sknC24RWunz5Lou5s2bhzVr1gAATjvtNLzyyiu4/fbb8fnPfz7Xr9LnaePGjbjvvvvwwAMP4JRTTsH27duxfPlyTJkyBV/4whdy/Sp9nsj4xboQQENDA4LBYN5f+21tbXkr7UrjX/7lX/DYY4/hd7/7HaZOnZo73tzcDAAVP2fbtm1DW1sb5s6di1AohFAohM2bN+PWW29FKBTKzUWlz9PkyZNx8skni2MnnXQSdu3aBYDfp8P827/9G66//npccsklOPXUU7F06VJ89atfxdq1awFwnsj4x7oFQCQSwdy5c7Fp0yZxfNOmTVi0aNExsurY4nkerr76ajzyyCP47W9/i5kzZ4rzM2fORHNzs5izVCqFzZs3V9ScffCDH8TLL7+M7du3537mzZuHyy67DNu3b8cJJ5zAeQKwePHivDTSv/zlL5gxYwYAfp8O09vbi0BA/i8yGAzm0gA5T2TccwxfQByWw2mAd911l/fqq696y5cv96qqqry//e1vx9q0Y8L/+l//y0smk97vf/97r6WlJffT29ub6/Od73zHSyaT3iOPPOK9/PLL3mc/+1mmI3meyALwPM6T5w2mSIZCIe+mm27yXn/9de/+++/3EomEd9999+X6cJ487wtf+IJ33HHH5dIAH3nkEa+hocG77rrrcn04T2Q8Y+UCwPM870c/+pE3Y8YMLxKJeKeffnou5a0SATDkz913353r47qu961vfctrbm72otGo9/73v997+eWXj53RlqAXAJynQX7+8597c+bM8aLRqDd79mzvjjvuEOc5T57X2dnpXXvttd706dO9WCzmnXDCCd4NN9zgDQwM5Ppwnsh4xvE8zzuWHghCCCGEjD3WvQNACCGEkNGHCwBCCCGkAuECgBBCCKlAuAAghBBCKhAuAAghhJAKhAsAQgghpALhAoAQQgipQLgAIIQQQioQLgAIIYSQCoQLAEIIIaQC4QKAEEIIqUD+f+TEv7FGQmqpAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# experiment setup\n", "lx=ly=0\n", "rx=ry=1\n", "seed = 1\n", "omega = 6*np.pi\n", "\n", "print(\"seed\", seed)\n", "\n", "# genereate ground truth\n", "def poisson_equation(x,y,omega):\n", " return np.cos(omega*x)*np.sin(omega*y)\n", "\n", "x = np.linspace(0, 1, 100)\n", "y = np.linspace(0, 1, 100)\n", "\n", "xx,yy = np.meshgrid(x,y)\n", "u_sol = poisson_equation(xx,yy,omega)\n", "\n", "X = np.vstack([xx.ravel(), yy.ravel()]).T\n", "plt.imshow(u_sol, cmap=\"Spectral\")\n", "plt.colorbar()\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "0eeb989f", "metadata": {}, "outputs": [], "source": [ "def sampler(num_r=2500, num_b=100,lx=0,rx=1,ly=0,ry=1,seed=1):\n", " # generate training data\n", " x = np.linspace(lx, rx, 100)\n", " y = np.linspace(ly, ry, 100)\n", " xb = np.linspace(lx,rx,num_b)\n", " yb = np.linspace(ly,ry,num_b)\n", " \n", " xx,yy = np.meshgrid(x,y)\n", " \n", " X = np.vstack([xx.ravel(), yy.ravel()]).T\n", "\n", "\n", " # X boundaries\n", " lb = lx*np.ones((yb.shape))\n", " rb = rx*np.ones((yb.shape))\n", " Xlb = np.vstack((lb,yb)).T\n", " Xrb = np.vstack((rb,yb)).T\n", " UXlb = np.cos(omega*Xlb[:,0])*np.sin(omega*Xlb[:,1])\n", " UXrb = np.cos(omega*Xrb[:,0])*np.sin(omega*Xrb[:,1])\n", "\n", " # Y boundaries\n", " lb = ly*np.ones((xb.shape))\n", " rb = ry*np.ones((xb.shape))\n", " Ylb = np.vstack((xb,lb)).T\n", " Yrb = np.vstack((xb,rb)).T\n", " UYlb = np.cos(omega*Ylb[:,0])*np.sin(omega*Ylb[:,1])\n", " UYrb = np.cos(omega*Yrb[:,0])*np.sin(omega*Yrb[:,1])\n", "\n", " seedc = seed\n", " np.random.seed(seedc)\n", " torch.manual_seed(seedc)\n", "\n", " # training tensors\n", " idxs = np.random.choice(xx.size, num_r, replace=False)\n", " X_train = torch.tensor(X[idxs], dtype=torch.float32, requires_grad=True,device=device)\n", " X_rb = torch.tensor(Xrb, dtype=torch.float32, device=device)\n", " X_lb = torch.tensor(Xlb, dtype=torch.float32, device=device)\n", " Y_rb = torch.tensor(Yrb, dtype=torch.float32, device=device)\n", " Y_lb = torch.tensor(Ylb, dtype=torch.float32, device=device)\n", " # compute mean and std of training data\n", " X_mean = torch.tensor(np.mean(np.concatenate([X[idxs], Xrb, Xlb, Yrb, Ylb], 0), axis=0, keepdims=True), dtype=torch.float32, device=device)\n", " X_std = torch.tensor(np.std(np.concatenate([X[idxs], Xrb, Xlb, Yrb, Ylb], 0), axis=0, keepdims=True), dtype=torch.float32, device=device)\n", " \n", " U_X_rb = torch.tensor(UXrb, dtype=torch.float32, device=device).reshape(num_b,1)\n", " U_X_lb = torch.tensor(UXlb, dtype=torch.float32, device=device).reshape(num_b,1)\n", " U_Y_rb = torch.tensor(UYrb, dtype=torch.float32, device=device).reshape(num_b,1)\n", " U_Y_lb = torch.tensor(UYlb, dtype=torch.float32, device=device).reshape(num_b,1)\n", " \n", "\n", " return X_train, X_lb, X_rb, Y_lb, Y_rb, U_X_lb, U_X_rb, U_Y_lb, U_Y_rb, X_mean, X_std" ] }, { "cell_type": "code", "execution_count": 4, "id": "c3ce382d", "metadata": {}, "outputs": [], "source": [ "# computes pde residual\n", "def poisson_res(uhat, data, omega):\n", " xin = data[:,0:1]\n", " yin = data[:,1:2]\n", " du = grad(outputs=uhat, inputs=data, grad_outputs=torch.ones_like(uhat), create_graph=True)[0]\n", " dudx = du[:,0:1]\n", " dudxx = grad(outputs=dudx, inputs=data,grad_outputs=torch.ones_like(uhat), create_graph=True)[0][:,0:1]\n", " dudy = du[:,1:2]\n", " dudyy = grad(outputs=dudy, inputs=data,grad_outputs=torch.ones_like(uhat), create_graph=True)[0][:,1:2]\n", " source = -2.0*omega*omega*torch.cos(omega*xin)*torch.sin(omega*yin) + 0*uhat\n", " residual = dudxx + dudyy - source\n", " return residual" ] }, { "cell_type": "code", "execution_count": 5, "id": "b24193a2", "metadata": {}, "outputs": [], "source": [ "def plot_function(lx,rx,ly,ry,u_sol,out,method):\n", " methods=[\"W1 (uniform)\",\"W2 (max_by_mean)\",\"W3 (std)\",\"W4 (mean+std)\",\"W5 (mean*std)\",\"W6 (kurtosis)\"]\n", " plt.subplot(1,3,1)\n", " plt.imshow(u_sol, cmap=\"twilight\", origin=\"lower\",vmin=-1.0,vmax=1.0)\n", " plt.xticks(np.arange(0,101,50),np.linspace(lx,rx,3),fontsize=12)\n", " plt.yticks(np.arange(0,101,50),np.linspace(ly,ry,3),fontsize=12)\n", " plt.xlabel(r\"$x$\",fontsize=15)\n", " plt.ylabel(r\"$y$\",fontsize=15)\n", " plt.title(\"Ground Truth\",fontsize=18)\n", " plt.colorbar(fraction=0.046, pad=0.04)\n", "\n", " plt.subplot(1,3,2)\n", " plt.imshow(out, cmap=\"twilight\", origin=\"lower\",vmin=-1.0,vmax=1.0)\n", " plt.xticks(np.arange(0,101,50),np.linspace(lx,rx,3),fontsize=12)\n", " plt.yticks(np.arange(0,101,50),np.linspace(ly,ry,3),fontsize=12)\n", " plt.xlabel(r\"$x$\",fontsize=15)\n", " plt.ylabel(r\"$y$\",fontsize=15)\n", " plt.title(\"Prediction\",fontsize=18)\n", " plt.colorbar(fraction=0.046, pad=0.04)\n", "\n", " plt.subplot(1,3,3)\n", " plt.imshow(np.abs(out-u_sol)/np.max(np.abs(u_sol)), cmap=\"nipy_spectral\", origin=\"lower\",vmin=0,vmax=0.2)\n", " plt.xticks(np.arange(0,101,50),np.linspace(lx,rx,3),fontsize=12)\n", " plt.yticks(np.arange(0,101,50),np.linspace(ly,ry,3),fontsize=12)\n", " plt.xlabel(r\"$x$\",fontsize=15)\n", " plt.ylabel(r\"$y$\",fontsize=15)\n", " plt.title(\"Point-wise Error\",fontsize=18)\n", " plt.colorbar(fraction=0.046, pad=0.04)\n", " \n", " plt.gcf().set_size_inches(15,5)\n", " plt.tight_layout()\n", " plt.suptitle(\"Poisson Equation using PINN_{}\".format(methods[method]),fontsize=25)\n", " plt.savefig(\"PoissonEqn_{}_based\".format(methods[method]),dpi=800)\n", " return None" ] }, { "cell_type": "code", "execution_count": 6, "id": "449f066f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.0587277412, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 0\n", "pred rel. l2-error = 1.993628e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6607208252, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 1\n", "pred rel. l2-error = 1.373621e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3560345769, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 2\n", "pred rel. l2-error = 8.387591e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2873021364, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 3\n", "pred rel. l2-error = 1.728218e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4072301388, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 4\n", "pred rel. l2-error = 9.284583e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4270504713, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 5\n", "pred rel. l2-error = 1.409505e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.2833399773, lambda=15.7399, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 0\n", "pred rel. l2-error = 5.095449e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5603357553, lambda=15.8360, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 1\n", "pred rel. l2-error = 4.065455e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4139996767, lambda=27.4207, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 2\n", "pred rel. l2-error = 1.208782e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7634063959, lambda=22.1109, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 3\n", "pred rel. l2-error = 1.425402e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5286167860, lambda=46.0921, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 4\n", "pred rel. l2-error = 1.047966e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2501690090, lambda=122.8639, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 5\n", "pred rel. l2-error = 6.491240e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=7.3747315407, lambda=1390.7593, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 0\n", "pred rel. l2-error = 9.951869e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.6766937971, lambda=559.2260, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 1\n", "pred rel. l2-error = 5.635386e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7099538445, lambda=263.0750, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 2\n", "pred rel. l2-error = 3.649318e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.5793051720, lambda=1401.9312, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 3\n", "pred rel. l2-error = 4.294254e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.9797462225, lambda=3125.1179, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 4\n", "pred rel. l2-error = 1.975881e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6341127157, lambda=3034.1323, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 5\n", "pred rel. l2-error = 1.676085e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.4775464535, lambda=10.7336, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 0\n", "pred rel. l2-error = 3.499443e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.6233466864, lambda=25.8915, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 1\n", "pred rel. l2-error = 2.633367e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3992195427, lambda=29.6989, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 2\n", "pred rel. l2-error = 1.783958e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.2434844971, lambda=17.7884, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 3\n", "pred rel. l2-error = 3.506106e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7134901881, lambda=71.0052, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 4\n", "pred rel. l2-error = 1.613186e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.1964043677, lambda=88.5779, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 5\n", "pred rel. l2-error = 5.434060e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=11.0910577774, lambda=1927.7290, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 0\n", "pred rel. l2-error = 1.138208e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.2459180355, lambda=886.4578, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 1\n", "pred rel. l2-error = 4.190080e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.7715576887, lambda=497.3097, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 2\n", "pred rel. l2-error = 5.902099e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=9.7692146301, lambda=1582.7810, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 3\n", "pred rel. l2-error = 9.489242e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.7819324732, lambda=1487.5305, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 4\n", "pred rel. l2-error = 2.630002e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6110224128, lambda=4232.5327, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 5\n", "pred rel. l2-error = 1.304663e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.4035105705, lambda=140.8383, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 0\n", "pred rel. l2-error = 2.113426e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.1936957836, lambda=1092.9211, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 1\n", "pred rel. l2-error = 3.984669e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.1865053177, lambda=2055.3269, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 2\n", "pred rel. l2-error = 2.979357e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.7917604446, lambda=558.4196, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 3\n", "pred rel. l2-error = 6.244686e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0346097946, lambda=919.2617, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 4\n", "pred rel. l2-error = 2.804825e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7928894758, lambda=35046.1484, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 5\n", "pred rel. l2-error = 1.978314e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.9268984795, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 0\n", "pred rel. l2-error = 2.567825e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7093264461, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 1\n", "pred rel. l2-error = 1.549938e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3029614389, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 2\n", "pred rel. l2-error = 8.380728e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=9.8022661209, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 3\n", "pred rel. l2-error = 4.039781e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5848922729, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 4\n", "pred rel. l2-error = 9.713128e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2139681727, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 5\n", "pred rel. l2-error = 5.522222e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=6.8717117310, lambda=19.3666, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 0\n", "pred rel. l2-error = 8.807670e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch 40001/40001, loss=0.9828424454, lambda=18.4683, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 1\n", "pred rel. l2-error = 3.096557e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4005044997, lambda=38.1219, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 2\n", "pred rel. l2-error = 1.459911e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.0261473656, lambda=16.0375, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 3\n", "pred rel. l2-error = 3.827284e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8135836124, lambda=31.5059, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 4\n", "pred rel. l2-error = 1.915483e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2751113176, lambda=97.1482, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 5\n", "pred rel. l2-error = 7.796141e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=8.7282381058, lambda=1034.9131, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 0\n", "pred rel. l2-error = 1.047065e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3151794672, lambda=822.6962, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 1\n", "pred rel. l2-error = 4.996563e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7670463324, lambda=467.2100, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 2\n", "pred rel. l2-error = 4.679972e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=8.2272987366, lambda=3135.0083, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 3\n", "pred rel. l2-error = 6.377722e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9215104580, lambda=3036.8083, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 4\n", "pred rel. l2-error = 4.350009e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8617116213, lambda=6517.2100, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 5\n", "pred rel. l2-error = 2.168530e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.5981502533, lambda=12.7620, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 0\n", "pred rel. l2-error = 6.763381e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.9139133096, lambda=15.4218, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 1\n", "pred rel. l2-error = 2.853768e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4836990833, lambda=49.1090, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 2\n", "pred rel. l2-error = 1.509168e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5206791162, lambda=38.2909, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 3\n", "pred rel. l2-error = 2.309315e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.1203945875, lambda=34.1840, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 4\n", "pred rel. l2-error = 2.649199e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2872385979, lambda=110.7759, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 5\n", "pred rel. l2-error = 7.561260e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=10.1351766586, lambda=1200.0616, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 0\n", "pred rel. l2-error = 1.334300e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.8778004646, lambda=1045.9795, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 1\n", "pred rel. l2-error = 4.546896e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.0743510723, lambda=499.9454, lr=0.00000\t\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 2\n", "pred rel. l2-error = 9.015307e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=7.9115905762, lambda=2114.5376, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 3\n", "pred rel. l2-error = 1.001145e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.1135914326, lambda=2791.0142, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 4\n", "pred rel. l2-error = 6.143984e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6449249387, lambda=28518.2812, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 5\n", "pred rel. l2-error = 2.334708e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=12.3496122360, lambda=881.0537, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 0\n", "pred rel. l2-error = 1.805051e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.8267569542, lambda=491.0936, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 1\n", "pred rel. l2-error = 9.283826e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5833107233, lambda=4026.2773, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 2\n", "pred rel. l2-error = 3.640854e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.6920523643, lambda=660.8620, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 3\n", "pred rel. l2-error = 6.024832e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9647090435, lambda=483.7794, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 4\n", "pred rel. l2-error = 8.829804e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2896170616, lambda=26891.8203, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 5\n", "pred rel. l2-error = 4.586715e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2376408577, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 0\n", "pred rel. l2-error = 1.350172e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8484767675, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 1\n", "pred rel. l2-error = 1.218242e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3259329498, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 2\n", "pred rel. l2-error = 9.114174e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.9764704704, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 3\n", "pred rel. l2-error = 4.102003e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3389938474, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 4\n", "pred rel. l2-error = 9.520035e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2658644021, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 5\n", "pred rel. l2-error = 6.171094e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.4336123466, lambda=13.8263, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 0\n", "pred rel. l2-error = 4.293344e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3196320534, lambda=17.6360, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 1\n", "pred rel. l2-error = 2.828773e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8563302159, lambda=48.4259, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 2\n", "pred rel. l2-error = 2.189616e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2760100365, lambda=20.8811, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 3\n", "pred rel. l2-error = 3.365738e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8964375854, lambda=23.0295, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 4\n", "pred rel. l2-error = 1.929111e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2537699938, lambda=72.9904, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 5\n", "pred rel. l2-error = 7.873054e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=7.2326021194, lambda=1397.8815, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 0\n", "pred rel. l2-error = 9.760555e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.7599611282, lambda=840.7174, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 1\n", "pred rel. l2-error = 9.177881e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch 40001/40001, loss=1.8302074671, lambda=331.6205, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 2\n", "pred rel. l2-error = 7.245706e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.1998181343, lambda=2869.2515, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 3\n", "pred rel. l2-error = 6.084710e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0109381676, lambda=3364.6797, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 4\n", "pred rel. l2-error = 2.291373e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6034194827, lambda=2578.0017, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 5\n", "pred rel. l2-error = 2.526945e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.4783089161, lambda=12.8322, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 0\n", "pred rel. l2-error = 3.754822e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5278477669, lambda=16.9567, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 1\n", "pred rel. l2-error = 3.343811e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5905456543, lambda=55.5470, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 2\n", "pred rel. l2-error = 1.466108e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.6154810190, lambda=21.4714, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 3\n", "pred rel. l2-error = 3.569664e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0644153357, lambda=41.4867, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 4\n", "pred rel. l2-error = 1.802727e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3182931840, lambda=86.6439, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 5\n", "pred rel. l2-error = 5.917576e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=16.5624370575, lambda=2308.5791, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 0\n", "pred rel. l2-error = 1.153047e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.8886547089, lambda=607.6752, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 1\n", "pred rel. l2-error = 6.600822e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.3642206192, lambda=538.3821, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 2\n", "pred rel. l2-error = 4.566632e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.7905969620, lambda=1973.4576, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 3\n", "pred rel. l2-error = 6.290785e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3551657200, lambda=3677.2021, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 4\n", "pred rel. l2-error = 4.364687e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2374265194, lambda=12866.9199, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 5\n", "pred rel. l2-error = 4.122359e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.2202582359, lambda=64.2645, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 0\n", "pred rel. l2-error = 3.622626e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.4408388138, lambda=266.4552, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 1\n", "pred rel. l2-error = 1.121184e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.1543462276, lambda=694.1635, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 2\n", "pred rel. l2-error = 5.943562e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9750404358, lambda=407.7084, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 3\n", "pred rel. l2-error = 6.896148e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.7296918631, lambda=2926.3579, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 4\n", "pred rel. l2-error = 6.358197e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.9131912589, lambda=12810.5391, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 5\n", "pred rel. l2-error = 2.037239e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.1348812580, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 0\n", "pred rel. l2-error = 1.469192e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6448348761, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 1\n", "pred rel. l2-error = 1.326227e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3171915412, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 2\n", "pred rel. l2-error = 1.239010e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.1768885851, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 3\n", "pred rel. l2-error = 1.744450e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5688830018, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 4\n", "pred rel. l2-error = 7.686738e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2355245650, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 5\n", "pred rel. l2-error = 6.775192e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.4519739151, lambda=9.1710, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 0\n", "pred rel. l2-error = 6.887072e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7853644490, lambda=17.1587, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 1\n", "pred rel. l2-error = 2.688166e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3785205483, lambda=36.6343, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 2\n", "pred rel. l2-error = 1.018245e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.6632866859, lambda=16.9040, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 3\n", "pred rel. l2-error = 3.226073e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3079825640, lambda=23.9710, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 4\n", "pred rel. l2-error = 1.216811e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2451264411, lambda=230.4865, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 5\n", "pred rel. l2-error = 3.900732e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=6.9524784088, lambda=458.0177, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 0\n", "pred rel. l2-error = 1.523731e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.5957708359, lambda=635.6509, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 1\n", "pred rel. l2-error = 7.366538e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2939910889, lambda=432.9315, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 2\n", "pred rel. l2-error = 5.971719e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.2981355190, lambda=1195.7773, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 3\n", "pred rel. l2-error = 7.095847e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9311093092, lambda=2738.7241, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 4\n", "pred rel. l2-error = 4.073823e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6158649921, lambda=8047.0332, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 5\n", "pred rel. l2-error = 4.054317e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.1172933578, lambda=11.7384, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 0\n", "pred rel. l2-error = 7.490466e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.9982446432, lambda=29.4667, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 1\n", "pred rel. l2-error = 3.150126e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5242639780, lambda=29.2615, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 2\n", "pred rel. l2-error = 1.961889e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch 40001/40001, loss=0.9005728960, lambda=26.4748, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 3\n", "pred rel. l2-error = 2.638622e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7950896621, lambda=38.6401, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 4\n", "pred rel. l2-error = 1.930153e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.1787283272, lambda=150.1173, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 5\n", "pred rel. l2-error = 4.241639e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=11.2370929718, lambda=1457.9576, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 0\n", "pred rel. l2-error = 1.149281e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.0811419487, lambda=689.9861, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 1\n", "pred rel. l2-error = 7.219353e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.1054683924, lambda=345.8036, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 2\n", "pred rel. l2-error = 6.567592e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.8788857460, lambda=3231.4329, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 3\n", "pred rel. l2-error = 4.743593e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9974763393, lambda=1778.9075, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 4\n", "pred rel. l2-error = 5.884394e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9688861370, lambda=10592.5410, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 5\n", "pred rel. l2-error = 2.689713e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.7981352806, lambda=1091.4805, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 0\n", "pred rel. l2-error = 1.396000e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=32450.5136718750, lambda=295489.6875, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 1\n", "pred rel. l2-error = 8.925598e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=42501.3437500000, lambda=1062467200.0000, lr=0.00000\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 2\n", "pred rel. l2-error = 9.127242e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=6.5471267700, lambda=2143.7026, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 3\n", "pred rel. l2-error = 6.541626e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.6910729408, lambda=353.3929, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 4\n", "pred rel. l2-error = 4.439860e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5334863067, lambda=3703.6204, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 5\n", "pred rel. l2-error = 1.764519e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.9809232950, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 0\n", "pred rel. l2-error = 2.285528e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3522626162, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 1\n", "pred rel. l2-error = 1.207537e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4057528377, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 2\n", "pred rel. l2-error = 1.043787e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3450759649, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 3\n", "pred rel. l2-error = 1.222236e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.3374209404, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 4\n", "pred rel. l2-error = 9.038128e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2385858893, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 5\n", "pred rel. l2-error = 9.066192e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5593134165, lambda=13.2366, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 0\n", "pred rel. l2-error = 2.982443e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3417578936, lambda=23.6590, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 1\n", "pred rel. l2-error = 2.062546e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4935755134, lambda=27.4380, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 2\n", "pred rel. l2-error = 1.650273e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0082454681, lambda=18.0982, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 3\n", "pred rel. l2-error = 2.371080e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4804111421, lambda=28.8089, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 4\n", "pred rel. l2-error = 1.154044e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2062474191, lambda=85.4830, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 5\n", "pred rel. l2-error = 6.292825e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.5058093071, lambda=718.3486, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 0\n", "pred rel. l2-error = 1.048018e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3210757971, lambda=704.8610, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 1\n", "pred rel. l2-error = 4.516799e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.4393450022, lambda=272.6981, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 2\n", "pred rel. l2-error = 8.526351e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.1221904755, lambda=1000.2628, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 3\n", "pred rel. l2-error = 6.996535e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.1683084965, lambda=1694.9460, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 4\n", "pred rel. l2-error = 3.499748e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5008351207, lambda=5751.9131, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 5\n", "pred rel. l2-error = 1.413907e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.7645452023, lambda=11.9422, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 0\n", "pred rel. l2-error = 5.262542e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2190917730, lambda=23.1828, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 1\n", "pred rel. l2-error = 2.593706e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8963226676, lambda=41.9976, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 2\n", "pred rel. l2-error = 1.677226e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7810757756, lambda=17.6917, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 3\n", "pred rel. l2-error = 1.549356e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6160820723, lambda=71.6919, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 4\n", "pred rel. l2-error = 1.728163e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2311656028, lambda=57.0384, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 5\n", "pred rel. l2-error = 6.261363e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=8.8485260010, lambda=2612.2832, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 0\n", "pred rel. l2-error = 1.336036e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.9628160000, lambda=703.9918, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 1\n", "pred rel. l2-error = 8.484998e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3665437698, lambda=564.0110, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 2\n", "pred rel. l2-error = 4.487107e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.3715810776, lambda=776.1477, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 3\n", "pred rel. l2-error = 8.845074e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch 40001/40001, loss=2.1507470608, lambda=2270.0806, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 4\n", "pred rel. l2-error = 3.564442e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7033841014, lambda=11415.8711, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 5\n", "pred rel. l2-error = 3.421046e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=7.0880155563, lambda=1932.4409, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 0\n", "pred rel. l2-error = 8.026228e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.9782843590, lambda=1118.7941, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 1\n", "pred rel. l2-error = 5.991672e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0276792049, lambda=222.2304, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 2\n", "pred rel. l2-error = 6.857432e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.1036758423, lambda=1098.6528, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 3\n", "pred rel. l2-error = 6.975797e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3327647448, lambda=1825.8621, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 4\n", "pred rel. l2-error = 5.354915e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0983977318, lambda=15752.3789, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 5\n", "pred rel. l2-error = 3.634482e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.4861085415, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 0\n", "pred rel. l2-error = 1.743364e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5794082880, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 1\n", "pred rel. l2-error = 1.491924e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5517559648, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 2\n", "pred rel. l2-error = 1.590660e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3829870224, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 3\n", "pred rel. l2-error = 1.501073e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.5859781504, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 4\n", "pred rel. l2-error = 1.516780e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.1549158990, lambda=1.0000, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 0\n", "Architecture: 5\n", "pred rel. l2-error = 7.685833e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.7564601898, lambda=15.2475, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 0\n", "pred rel. l2-error = 5.646198e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.3651349545, lambda=14.3205, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 1\n", "pred rel. l2-error = 3.273341e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8491660953, lambda=46.6805, lr=0.00000\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 2\n", "pred rel. l2-error = 1.255158e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8659296036, lambda=26.7852, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 3\n", "pred rel. l2-error = 2.388246e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.6464391947, lambda=18.0069, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 4\n", "pred rel. l2-error = 3.040729e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.2233335674, lambda=86.8101, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 1\n", "Architecture: 5\n", "pred rel. l2-error = 6.207236e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.7595317364, lambda=523.3790, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 0\n", "pred rel. l2-error = 7.578180e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.1254699230, lambda=645.1641, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 1\n", "pred rel. l2-error = 6.953547e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.8796443939, lambda=483.1089, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 2\n", "pred rel. l2-error = 4.789138e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.1519014835, lambda=483.1333, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 3\n", "pred rel. l2-error = 6.198565e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5560982227, lambda=1035.8151, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 4\n", "pred rel. l2-error = 4.179974e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.4863400757, lambda=2753.2310, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 2\n", "Architecture: 5\n", "pred rel. l2-error = 1.847037e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.7273623943, lambda=13.0884, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 0\n", "pred rel. l2-error = 5.330436e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.2935056686, lambda=29.8620, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 1\n", "pred rel. l2-error = 2.513073e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7275580168, lambda=56.5989, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 2\n", "pred rel. l2-error = 2.197626e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.0828878880, lambda=17.6550, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 3\n", "pred rel. l2-error = 3.805876e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.7835582495, lambda=17.2478, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 4\n", "pred rel. l2-error = 3.551772e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=0.1948639899, lambda=68.2808, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 3\n", "Architecture: 5\n", "pred rel. l2-error = 5.468433e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=8.3066282272, lambda=1338.6509, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 0\n", "pred rel. l2-error = 1.195575e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.3109960556, lambda=1210.9921, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 1\n", "pred rel. l2-error = 7.435846e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5587714911, lambda=400.5573, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 2\n", "pred rel. l2-error = 4.761151e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=5.5639624596, lambda=1883.6118, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 3\n", "pred rel. l2-error = 7.260640e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=2.9084849358, lambda=2902.8596, lr=0.00000\t\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 4\n", "pred rel. l2-error = 3.145863e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.5717140436, lambda=5168.3809, lr=0.00000\t\t\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 4\n", "Architecture: 5\n", "pred rel. l2-error = 2.787492e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=4.6843237877, lambda=335.2692, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 0\n", "pred rel. l2-error = 1.318180e-02\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.6668605804, lambda=1020.9109, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 1\n", "pred rel. l2-error = 5.981018e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=1.0451763868, lambda=2239.5991, lr=0.00000\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 2\n", "pred rel. l2-error = 3.493490e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=3.8838417530, lambda=487.2222, lr=0.00000\t\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 3\n", "pred rel. l2-error = 5.598755e-03\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n", "epoch 40001/40001, loss=109848.3281250000, lambda=1205861504.0000, lr=0.00000\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 4\n", "pred rel. l2-error = 9.841301e-01\n", "\n", ".....\n", "\n", "training with shape torch.Size([2500, 2])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch 40001/40001, loss=0.7037231326, lambda=20216.5391, lr=0.00000\t\t\t\t\t\t\t\n", ".....\n", "\n", "Method: 5\n", "Architecture: 5\n", "pred rel. l2-error = 2.171921e-03\n", "\n", ".....\n", "\n" ] } ], "source": [ "losses_boundary_global=[]\n", "losses_residual_global=[]\n", "lambdas_global=[]\n", "list_of_l2_Errors=[]\n", "for k in range(6):\n", " for i in range(6):\n", " for j in range(6):\n", " mm = 5\n", " alpha_ann = 0.5\n", " n_epochs = 40_001\n", " method = i\n", " X_train, X_lb, X_rb, Y_lb, Y_rb, U_X_lb, U_X_rb, U_Y_lb, U_Y_rb, X_mean, X_std= sampler(seed=k)\n", "\n", " if j ==0:\n", " net = PINN(sizes=[2,30,30,30,1], mean=X_mean, std=X_std, activation=torch.nn.SiLU()).to(device)\n", " elif j==1:\n", " net = PINN(sizes=[2,50,50,50,1], mean=X_mean, std=X_std, activation=torch.nn.SiLU()).to(device)\n", " elif j==2:\n", " net = PINN(sizes=[2,100,100,100,1], mean=X_mean, std=X_std, activation=torch.nn.SiLU()).to(device)\n", " elif j==3:\n", " net = PINN(sizes=[2,30,30,30,30,30,1], mean=X_mean, std=X_std, activation=torch.nn.SiLU()).to(device)\n", " elif j==4:\n", " net = PINN(sizes=[2,50,50,50,50,50,1], mean=X_mean, std=X_std, activation=torch.nn.SiLU()).to(device)\n", " elif j==5:\n", " net = PINN(sizes=[2,100,100,100,100,100,1], mean=X_mean, std=X_std, activation=torch.nn.SiLU()).to(device)\n", "\n", " #net = PINN(sizes=[2,50,50,50,50,50,50,50,1], mean=X_mean, std=X_std, seed=j, activation=torch.nn.SiLU()).to(device)\n", " lambd = 1\n", " lambds = [];\n", " losses_boundary = [];\n", " losses_residual = [];\n", " params = [{'params': net.parameters(), 'lr': 1e-3}]\n", " milestones = [[10000,20000,30000]]\n", " optimizer = Adam(params)\n", " scheduler = MultiStepLR(optimizer, milestones[0], gamma=0.1)\n", " print(\"training with shape\", X_train.size())\n", " start_time = time.time()\n", " for epoch in range(n_epochs): \n", " uhat = net(X_train)\n", " res = poisson_res(uhat, X_train, omega)\n", " l_reg = torch.mean((res)**2)\n", " predl = net(X_lb)\n", " predr = net(X_rb)\n", " l_bc = torch.mean((predl - U_X_lb)**2, dim=0)\n", " l_bc += torch.mean((predr - U_X_rb)**2, dim=0)\n", " predl = net(Y_lb)\n", " predr = net(Y_rb)\n", " l_bc += torch.mean((predl - U_Y_lb)**2, dim=0)\n", " l_bc += torch.mean((predr - U_Y_rb)**2, dim=0) \n", " with torch.no_grad():\n", " if epoch % mm == 0:\n", " stdr,kurtr=loss_grad_stats(l_reg, net)\n", " stdb,kurtb=loss_grad_stats(l_bc, net)\n", " maxr,meanr=loss_grad_max_mean(l_reg, net)\n", " maxb,meanb=loss_grad_max_mean(l_bc, net,lambg=lambd)\n", " if method == 2:\n", " # inverse dirichlet\n", " lamb_hat = stdr/stdb\n", " lambd = (1-alpha_ann)*lambd + alpha_ann*lamb_hat\n", " elif method == 1:\n", " # max/avg\n", " lamb_hat = maxr/meanb\n", " lambd = (1-alpha_ann)*lambd + alpha_ann*lamb_hat \n", " elif method==3:\n", " # mean + std weighing\n", " covr= stdr + maxr\n", " covb= stdb + meanb\n", " lamb_hat = covr/covb\n", " lambd = (1-alpha_ann)*lambd + alpha_ann*lamb_hat \n", " elif method == 5:\n", " # kurtosis based weighing\n", " covr= stdr/kurtr\n", " covb= stdb/kurtb\n", " lamb_hat = covr/covb\n", " lambd = (1-alpha_ann)*lambd + alpha_ann*lamb_hat\n", " elif method == 4:\n", " # mean * std weighing\n", " covr= stdr * meanr\n", " covb= stdb * meanb\n", " lamb_hat = covr/covb\n", " lambd = (1-alpha_ann)*lambd + alpha_ann*lamb_hat\n", " else:\n", " # uniform weighing \n", " lambd = 1;\n", " if(method == 0):\n", " loss = l_reg + l_bc\n", " elif(method == 1 or method == 2 or method==3 or method==4 or method == 5):\n", " loss = l_reg + lambd*l_bc\n", " if epoch%100==0:\n", " losses_boundary.append(l_bc.item())\n", " losses_residual.append(l_reg.item())\n", " if method !=0:\n", " lambds.append(lambd.item())\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " scheduler.step()\n", " print(\"epoch {}/{}, loss={:.10f}, lambda={:.4f}, lr={:,.5f}\\t\\t\\t\"\n", " .format(epoch+1, n_epochs, loss.item(), lambd, optimizer.param_groups[0]['lr']), end=\"\\r\")\n", " elapsed_time = time.time() - start_time\n", " #print('CPU time = ',elapsed_time)\n", " inp = torch.tensor(X, dtype=torch.float32, device=device)\n", " out = net(inp).cpu().data.numpy().reshape(u_sol.shape)\n", " print(\"\\n.....\\n\")\n", " print(\"Method:\",method)\n", " print(\"Architecture:\",j)\n", " print(\"pred rel. l2-error = {:e}\".format(np.linalg.norm(out.reshape(-1)-u_sol.reshape(-1))/np.linalg.norm(out.reshape(-1))))\n", " print(\"\\n.....\\n\")\n", " #plot_function(lx,rx,ly,ry,u_sol,out,method)\n", " list_of_l2_Errors.append(np.linalg.norm(out.reshape(-1)-u_sol.reshape(-1))/np.linalg.norm(out.reshape(-1)))\n", " #losses_boundary_global.append(losses_boundary)\n", " #losses_residual_global.append(losses_residual)" ] }, { "cell_type": "code", "execution_count": 7, "id": "8293a266", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.19936283 0.1373621 0.08387591 0.17282182 0.09284583 0.14095045]\n", "[0.05095449 0.04065455 0.01208782 0.01425402 0.01047966 0.00649124]\n", "[0.00995187 0.00563539 0.00364932 0.00429425 0.00197588 0.00167609]\n", "[0.03499443 0.02633367 0.01783958 0.03506106 0.01613186 0.00543406]\n", "[0.01138208 0.00419008 0.0059021 0.00948924 0.00263 0.00130466]\n", "[0.02113426 0.00398467 0.00297936 0.00624469 0.00280482 0.00197831]\n", "[0.25678248 0.15499377 0.08380728 0.40397806 0.09713128 0.05522222]\n", "[0.0880767 0.03096557 0.01459911 0.03827284 0.01915483 0.00779614]\n", "[0.01047065 0.00499656 0.00467997 0.00637772 0.00435001 0.00216853]\n", "[0.06763381 0.02853768 0.01509168 0.02309315 0.02649199 0.00756126]\n", "[0.013343 0.0045469 0.00901531 0.01001145 0.00614398 0.00233471]\n", "[0.01805051 0.00928383 0.00364085 0.00602483 0.0088298 0.00458671]\n", "[0.13501722 0.12182417 0.09114174 0.41020026 0.09520035 0.06171094]\n", "[0.04293344 0.02828773 0.02189616 0.03365738 0.01929111 0.00787305]\n", "[0.00976056 0.00917788 0.00724571 0.00608471 0.00229137 0.00252694]\n", "[0.03754822 0.03343811 0.01466108 0.03569664 0.01802727 0.00591758]\n", "[0.01153047 0.00660082 0.00456663 0.00629078 0.00436469 0.00412236]\n", "[0.03622626 0.01121184 0.00594356 0.00689615 0.0063582 0.00203724]\n", "[0.14691918 0.1326227 0.12390102 0.17444495 0.07686738 0.06775192]\n", "[0.06887072 0.02688166 0.01018245 0.03226073 0.01216811 0.00390073]\n", "[0.01523731 0.00736654 0.00597172 0.00709585 0.00407382 0.00405432]\n", "[0.07490466 0.03150126 0.01961889 0.02638622 0.01930153 0.00424164]\n", "[0.01149281 0.00721935 0.00656759 0.00474359 0.00588439 0.00268971]\n", "[0.01396 0.89255976 0.91272418 0.00654163 0.00443986 0.00176452]\n", "[0.22855277 0.12075374 0.10437873 0.1222236 0.09038128 0.09066192]\n", "[0.02982443 0.02062546 0.01650273 0.0237108 0.01154044 0.00629283]\n", "[0.01048018 0.0045168 0.00852635 0.00699654 0.00349975 0.00141391]\n", "[0.05262542 0.02593706 0.01677226 0.01549356 0.01728163 0.00626136]\n", "[0.01336036 0.008485 0.00448711 0.00884507 0.00356444 0.00342105]\n", "[0.00802623 0.00599167 0.00685743 0.0069758 0.00535492 0.00363448]\n", "[0.17433644 0.14919237 0.15906601 0.15010732 0.15167803 0.07685833]\n", "[0.05646198 0.03273341 0.01255158 0.02388246 0.03040729 0.00620724]\n", "[0.00757818 0.00695355 0.00478914 0.00619857 0.00417997 0.00184704]\n", "[0.05330436 0.02513073 0.02197626 0.03805876 0.03551772 0.00546843]\n", "[0.01195575 0.00743585 0.00476115 0.00726064 0.00314586 0.00278749]\n", "[0.0131818 0.00598102 0.00349349 0.00559875 0.98413009 0.00217192]\n" ] } ], "source": [ "def split(list_a, chunk_size):\n", "\n", " for i in range(0, len(list_a), chunk_size):\n", " yield list_a[i:i + chunk_size]\n", "List = list(split(list_of_l2_Errors,6))\n", "for i in List:\n", " arr = np.array(i)\n", " #print(\"\\n\")\n", " print(arr)" ] }, { "cell_type": "code", "execution_count": 22, "id": "7aa7e401", "metadata": {}, "outputs": [], "source": [ "split_list = list(split(List,6))" ] }, { "cell_type": "code", "execution_count": 37, "id": "088290dc", "metadata": {}, "outputs": [], "source": [ "mean_lists=[]\n", "for i in range(6):\n", " temp = np.array(List[i])+np.array(List[i+6])+np.array(List[i+2*6])+np.array(List[i+4*6])\n", " mean_lists.append(temp/4)" ] }, { "cell_type": "code", "execution_count": 38, "id": "4996fc48", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.20492882, 0.13373345, 0.09080091, 0.27730593, 0.09388969,\n", " 0.08713638],\n", " [0.05294727, 0.03013333, 0.01627145, 0.02747376, 0.01511651,\n", " 0.00711332],\n", " [0.01016581, 0.00608166, 0.00602534, 0.00593831, 0.00302925,\n", " 0.00194637],\n", " [0.04820047, 0.02856163, 0.01609115, 0.0273361 , 0.01948319,\n", " 0.00629356],\n", " [0.01240398, 0.0059557 , 0.00599279, 0.00865914, 0.00417578,\n", " 0.00279569],\n", " [0.02085931, 0.007618 , 0.0048553 , 0.00653537, 0.00583694,\n", " 0.00305919]])" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "mean_lists_arr = np.array(mean_lists)\n", "mean_lists_arr" ] }, { "cell_type": "code", "execution_count": null, "id": "929e0564", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "30175679", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "pytorch", "language": "python", "name": "pytorch" }, "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.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }