Automatize Tutorials html, py files creation (#496)
* workflow to export tutorials ---------
This commit is contained in:
committed by
Nicola Demo
parent
aea24d0bee
commit
0146155c9b
75
tutorials/tutorial8/tutorial.ipynb
vendored
75
tutorials/tutorial8/tutorial.ipynb
vendored
@@ -38,12 +38,13 @@
|
||||
"source": [
|
||||
"## routine needed to run the notebook on Google Colab\n",
|
||||
"try:\n",
|
||||
" import google.colab\n",
|
||||
" IN_COLAB = True\n",
|
||||
" import google.colab\n",
|
||||
"\n",
|
||||
" IN_COLAB = True\n",
|
||||
"except:\n",
|
||||
" IN_COLAB = False\n",
|
||||
" IN_COLAB = False\n",
|
||||
"if IN_COLAB:\n",
|
||||
" !pip install \"pina-mathlab\"\n",
|
||||
" !pip install \"pina-mathlab\"\n",
|
||||
"\n",
|
||||
"%matplotlib inline\n",
|
||||
"\n",
|
||||
@@ -60,7 +61,7 @@
|
||||
"from pina.problem.zoo import SupervisedProblem\n",
|
||||
"from pina.model.block import PODBlock, RBFBlock\n",
|
||||
"\n",
|
||||
"warnings.filterwarnings('ignore')"
|
||||
"warnings.filterwarnings(\"ignore\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -93,12 +94,13 @@
|
||||
],
|
||||
"source": [
|
||||
"from smithers.dataset import NavierStokesDataset\n",
|
||||
"\n",
|
||||
"dataset = NavierStokesDataset()\n",
|
||||
"\n",
|
||||
"fig, axs = plt.subplots(1, 4, figsize=(14, 3))\n",
|
||||
"for ax, p, u in zip(axs, dataset.params[:4], dataset.snapshots['mag(v)'][:4]):\n",
|
||||
"for ax, p, u in zip(axs, dataset.params[:4], dataset.snapshots[\"mag(v)\"][:4]):\n",
|
||||
" ax.tricontourf(dataset.triang, u, levels=16)\n",
|
||||
" ax.set_title(f'$\\mu$ = {p[0]:.2f}')"
|
||||
" ax.set_title(f\"$\\mu$ = {p[0]:.2f}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -118,7 +120,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"u = torch.tensor(dataset.snapshots['mag(v)']).float()\n",
|
||||
"u = torch.tensor(dataset.snapshots[\"mag(v)\"]).float()\n",
|
||||
"p = torch.tensor(dataset.params).float()\n",
|
||||
"problem = SupervisedProblem(input_=p, output_=u)"
|
||||
]
|
||||
@@ -158,20 +160,18 @@
|
||||
" \"\"\"\n",
|
||||
" Proper orthogonal decomposition with neural network model.\n",
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" def __init__(self, pod_rank, layers, func):\n",
|
||||
" \"\"\"\n",
|
||||
" \n",
|
||||
" \"\"\"\n",
|
||||
" \"\"\" \"\"\"\n",
|
||||
" super().__init__()\n",
|
||||
" \n",
|
||||
"\n",
|
||||
" self.pod = PODBlock(pod_rank)\n",
|
||||
" self.nn = FeedForward(\n",
|
||||
" input_dimensions=1,\n",
|
||||
" output_dimensions=pod_rank,\n",
|
||||
" layers=layers,\n",
|
||||
" func=func\n",
|
||||
" func=func,\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
"\n",
|
||||
" def forward(self, x):\n",
|
||||
" \"\"\"\n",
|
||||
@@ -210,10 +210,11 @@
|
||||
"source": [
|
||||
"pod_nn = PODNN(pod_rank=20, layers=[10, 10, 10], func=torch.nn.Tanh)\n",
|
||||
"pod_nn_stokes = SupervisedSolver(\n",
|
||||
" problem=problem, \n",
|
||||
" model=pod_nn, \n",
|
||||
" problem=problem,\n",
|
||||
" model=pod_nn,\n",
|
||||
" optimizer=TorchOptimizer(torch.optim.Adam, lr=0.0001),\n",
|
||||
" use_lt=False)"
|
||||
" use_lt=False,\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -278,14 +279,17 @@
|
||||
" solver=pod_nn_stokes,\n",
|
||||
" max_epochs=1000,\n",
|
||||
" batch_size=None,\n",
|
||||
" accelerator='cpu',\n",
|
||||
" accelerator=\"cpu\",\n",
|
||||
" train_size=0.9,\n",
|
||||
" val_size=0.0,\n",
|
||||
" test_size=0.1)\n",
|
||||
" test_size=0.1,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# fit the pod basis\n",
|
||||
"trainer.data_module.setup(\"fit\") # set up the dataset\n",
|
||||
"x_train = trainer.data_module.train_dataset.conditions_dict[\"data\"][\"target\"] # extract data for training\n",
|
||||
"trainer.data_module.setup(\"fit\") # set up the dataset\n",
|
||||
"x_train = trainer.data_module.train_dataset.conditions_dict[\"data\"][\n",
|
||||
" \"target\"\n",
|
||||
"] # extract data for training\n",
|
||||
"pod_nn.fit_pod(x=x_train)\n",
|
||||
"\n",
|
||||
"# now train\n",
|
||||
@@ -328,12 +332,12 @@
|
||||
"u_test_nn = pod_nn_stokes(p_test)\n",
|
||||
"u_train_nn = pod_nn_stokes(p_train)\n",
|
||||
"\n",
|
||||
"relative_error_train = torch.norm(u_train_nn - u_train)/torch.norm(u_train)\n",
|
||||
"relative_error_test = torch.norm(u_test_nn - u_test)/torch.norm(u_test)\n",
|
||||
"relative_error_train = torch.norm(u_train_nn - u_train) / torch.norm(u_train)\n",
|
||||
"relative_error_test = torch.norm(u_test_nn - u_test) / torch.norm(u_test)\n",
|
||||
"\n",
|
||||
"print('Error summary for POD-NN model:')\n",
|
||||
"print(f' Train: {relative_error_train.item():e}')\n",
|
||||
"print(f' Test: {relative_error_test.item():e}')"
|
||||
"print(\"Error summary for POD-NN model:\")\n",
|
||||
"print(f\" Train: {relative_error_train.item():e}\")\n",
|
||||
"print(f\" Test: {relative_error_test.item():e}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -365,14 +369,11 @@
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" def __init__(self, pod_rank, rbf_kernel):\n",
|
||||
" \"\"\"\n",
|
||||
" \n",
|
||||
" \"\"\"\n",
|
||||
" \"\"\" \"\"\"\n",
|
||||
" super().__init__()\n",
|
||||
" \n",
|
||||
"\n",
|
||||
" self.pod = PODBlock(pod_rank)\n",
|
||||
" self.rbf = RBFBlock(kernel=rbf_kernel)\n",
|
||||
" \n",
|
||||
"\n",
|
||||
" def forward(self, x):\n",
|
||||
" \"\"\"\n",
|
||||
@@ -412,7 +413,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"pod_rbf = PODRBF(pod_rank=20, rbf_kernel='thin_plate_spline')\n",
|
||||
"pod_rbf = PODRBF(pod_rank=20, rbf_kernel=\"thin_plate_spline\")\n",
|
||||
"pod_rbf.fit(p_train, u_train)"
|
||||
]
|
||||
},
|
||||
@@ -444,12 +445,12 @@
|
||||
"u_test_rbf = pod_rbf(p_test)\n",
|
||||
"u_train_rbf = pod_rbf(p_train)\n",
|
||||
"\n",
|
||||
"relative_error_train = torch.norm(u_train_rbf - u_train)/torch.norm(u_train)\n",
|
||||
"relative_error_test = torch.norm(u_test_rbf - u_test)/torch.norm(u_test)\n",
|
||||
"relative_error_train = torch.norm(u_train_rbf - u_train) / torch.norm(u_train)\n",
|
||||
"relative_error_test = torch.norm(u_test_rbf - u_test) / torch.norm(u_test)\n",
|
||||
"\n",
|
||||
"print('Error summary for POD-RBF model:')\n",
|
||||
"print(f' Train: {relative_error_train.item():e}')\n",
|
||||
"print(f' Test: {relative_error_test.item():e}')"
|
||||
"print(\"Error summary for POD-RBF model:\")\n",
|
||||
"print(f\" Train: {relative_error_train.item():e}\")\n",
|
||||
"print(f\" Test: {relative_error_test.item():e}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user