updated physical loss chapter
This commit is contained in:
1 parent
c8c0158ec2
commit
42c0aafa21
10 files changed
+112
-92
No files matched your search
@@ -92,7 +92,6 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"WARNING:tensorflow:From /Users/thuerey/miniconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/ops/math_grad.py:297: setdiff1d (from tensorflow.python.ops.array_ops) is deprecated and will be removed after 2018-11-30.\n",
|
|
||||||
"Instructions for updating:\n",
|
"Instructions for updating:\n",
|
||||||
"This op will be removed after the deprecation date. Please switch to tf.sets.difference().\n",
|
"This op will be removed after the deprecation date. Please switch to tf.sets.difference().\n",
|
||||||
"Loss: 0.382915\n"
|
"Loss: 0.382915\n"
|
||||||
@@ -592,4 +591,4 @@
|
|||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
"nbformat_minor": 4
|
"nbformat_minor": 4
|
||||||
}
|
}
|
||||||
+1
-1
@@ -153,7 +153,7 @@ techniques:
|
|||||||
- _Loss-terms_: the physical dynamics (or parts thereof) are encoded in the
|
- _Loss-terms_: the physical dynamics (or parts thereof) are encoded in the
|
||||||
loss function, typically in the form of differentiable operations. The
|
loss function, typically in the form of differentiable operations. The
|
||||||
learning process can repeatedly evaluate the loss, and usually receives
|
learning process can repeatedly evaluate the loss, and usually receives
|
||||||
gradients from a PDE-based formulation. These soft-constraints sometimes also go
|
gradients from a PDE-based formulation. These soft constraints sometimes also go
|
||||||
under the name "physics-informed" training.
|
under the name "physics-informed" training.
|
||||||
|
|
||||||
- _Interleaved_: the full physical simulation is interleaved and combined with
|
- _Interleaved_: the full physical simulation is interleaved and combined with
|
||||||
|
|||||||
+42
-64
@@ -8,7 +8,7 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"# Burgers Optimization with a Physics-Informed NN\n",
|
"# Burgers Optimization with a Physics-Informed NN\n",
|
||||||
"\n",
|
"\n",
|
||||||
"To illustrate how the physics-informed losses work, let's consider a reconstruction task\n",
|
"To illustrate how the physics-informed losses work for variant 2, let's consider a reconstruction task\n",
|
||||||
"as an inverse problem example.\n",
|
"as an inverse problem example.\n",
|
||||||
"We'll use Burgers equation $\\frac{\\partial u}{\\partial{t}} + u \\nabla u = \\nu \\nabla \\cdot \\nabla u$ as a simple yet non-linear equation in 1D, for which we have a series of _observations_ at time $t=0.5$. \n",
|
"We'll use Burgers equation $\\frac{\\partial u}{\\partial{t}} + u \\nabla u = \\nu \\nabla \\cdot \\nabla u$ as a simple yet non-linear equation in 1D, for which we have a series of _observations_ at time $t=0.5$. \n",
|
||||||
"The solution should fulfill the residual formulation for Burgers equation and match the observations.\n",
|
"The solution should fulfill the residual formulation for Burgers equation and match the observations.\n",
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
"They both represent two-dimensional solutions\n",
|
"They both represent two-dimensional solutions\n",
|
||||||
"$x(p_i,t_i)$ and $y^*(p_i,t_i)$ for a spatial coordinate $p_i$ and a time $t_i$, where the index $i$ sums over a set of chosen $p_i,t_i$ locations at which we evaluate the PDE and the approximated solutions. Thus $y^*$ denotes a reference $u$ for $\\mathcal{P}$ being Burgers equation, which $x$ should approximate as closely as possible. Thus our neural network representation of $x$ will receive $p,t$ as input to produce a velocity solution at the specified position.\n",
|
"$x(p_i,t_i)$ and $y^*(p_i,t_i)$ for a spatial coordinate $p_i$ and a time $t_i$, where the index $i$ sums over a set of chosen $p_i,t_i$ locations at which we evaluate the PDE and the approximated solutions. Thus $y^*$ denotes a reference $u$ for $\\mathcal{P}$ being Burgers equation, which $x$ should approximate as closely as possible. Thus our neural network representation of $x$ will receive $p,t$ as input to produce a velocity solution at the specified position.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The residual function $R$ above collects additional evaluations of $f(;\\theta)$ and its derivatives to formulate the residual for $\\mathcal{P}$. This approach -- using derivatives of a neural network to compute a PDE residual -- is typically called a _physics-informed_ approach, yielding a _physics-informed neural network_ (PINN) to represent a solution for the inverse reconstruction problem.\n",
|
"The residual function $R$ above collects additional evaluations of $f(;\\theta)$ and its derivatives to formulate the residual for $\\mathcal{P}$. This approach -- using derivatives of a neural network to compute a PDE residual -- is typically called a _physics-informed_ approach, yielding a _physics-informed neural network_ (PINN) {cite}`raissi2019pinn` to represent a solution for the inverse reconstruction problem.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Thus, in the formulation above, $R$ should simply converge to zero above. We've omitted scaling factors in the objective function for simplicity. Note that, effectively, we're only dealing with individual point samples of a single solution $u$ for $\\mathcal{P}$ here.\n",
|
"Thus, in the formulation above, $R$ should simply converge to zero above. We've omitted scaling factors in the objective function for simplicity. Note that, effectively, we're only dealing with individual point samples of a single solution $u$ for $\\mathcal{P}$ here.\n",
|
||||||
"\n"
|
"\n"
|
||||||
@@ -69,28 +69,26 @@
|
|||||||
"outputId": "bcceefc0-fb33-44c7-959c-0b742e5a1606"
|
"outputId": "bcceefc0-fb33-44c7-959c-0b742e5a1606"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"/bin/bash: pip: command not found\n",
|
"Could not load resample cuda libraries: CUDA binaries not found at /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n"
|
||||||
"Could not load resample cuda libraries: CUDA binaries not found at /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n",
|
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/util.py:119: The name tf.AUTO_REUSE is deprecated. Please use tf.compat.v1.AUTO_REUSE instead.\n",
|
|
||||||
"\n",
|
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:12: The name tf.RunOptions is deprecated. Please use tf.compat.v1.RunOptions instead.\n",
|
|
||||||
"\n",
|
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:13: The name tf.RunMetadata is deprecated. Please use tf.compat.v1.RunMetadata instead.\n",
|
|
||||||
"\n"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "stderr",
|
"name": "stderr",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"/Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n",
|
" for key in self._mapping:\n",
|
||||||
|
" yield (key, self._mapping[key])\n",
|
||||||
"$ python setup.py tf_cuda\n",
|
"$ python setup.py tf_cuda\n",
|
||||||
"before reinstalling phiflow.\n",
|
"before reinstalling phiflow.\n"
|
||||||
" warnings.warn(\"TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\\n$ python setup.py tf_cuda\\nbefore reinstalling phiflow.\")\n"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -211,10 +209,8 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"WARNING:tensorflow:From <ipython-input-2-f2ebc84042fb>:7: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
|
|
||||||
"Instructions for updating:\n",
|
"Instructions for updating:\n",
|
||||||
"Use keras.layers.Dense instead.\n",
|
"Use keras.layers.Dense instead.\n",
|
||||||
"WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/layers/core.py:187: Layer.apply (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n",
|
|
||||||
"Instructions for updating:\n",
|
"Instructions for updating:\n",
|
||||||
"Please use `layer.__call__` method instead.\n"
|
"Please use `layer.__call__` method instead.\n"
|
||||||
]
|
]
|
||||||
@@ -259,20 +255,12 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Size of grid_u: (1, 128, 33, 1)\n",
|
"Size of grid_u: (1, 128, 33, 1)\n",
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:17: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
|
|
||||||
"\n",
|
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:18: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
|
|
||||||
"\n",
|
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:28: The name tf.global_variables_initializer is deprecated. Please use tf.compat.v1.global_variables_initializer instead.\n",
|
|
||||||
"\n",
|
|
||||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:29: The name tf.train.Saver is deprecated. Please use tf.compat.v1.train.Saver instead.\n",
|
|
||||||
"\n",
|
|
||||||
"Randomly initialized network state:\n"
|
"Randomly initialized network state:\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 1152x360 with 2 Axes>"
|
"<Figure size 1152x360 with 2 Axes>"
|
||||||
]
|
]
|
||||||
@@ -337,17 +325,7 @@
|
|||||||
"id": "bfZvwnFooXa1",
|
"id": "bfZvwnFooXa1",
|
||||||
"outputId": "f0188a14-5922-4faa-b1aa-fb6482bd81f3"
|
"outputId": "f0188a14-5922-4faa-b1aa-fb6482bd81f3"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [],
|
||||||
{
|
|
||||||
"name": "stdout",
|
|
||||||
"output_type": "stream",
|
|
||||||
"text": [
|
|
||||||
"WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/math_grad.py:1375: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
|
|
||||||
"Instructions for updating:\n",
|
|
||||||
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
"source": [
|
||||||
"# Boundary loss\n",
|
"# Boundary loss\n",
|
||||||
"N_SAMPLE_POINTS_BND = 100\n",
|
"N_SAMPLE_POINTS_BND = 100\n",
|
||||||
@@ -395,20 +373,20 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Step 0, loss: 0.095709\n",
|
"Step 0, loss: 0.155002\n",
|
||||||
"Step 1, loss: 0.093502\n",
|
"Step 1, loss: 0.139890\n",
|
||||||
"Step 2, loss: 0.091750\n",
|
"Step 2, loss: 0.128770\n",
|
||||||
"Step 1000, loss: 0.050177\n",
|
"Step 1000, loss: 0.058176\n",
|
||||||
"Step 2000, loss: 0.044144\n",
|
"Step 2000, loss: 0.047925\n",
|
||||||
"Step 3000, loss: 0.039773\n",
|
"Step 3000, loss: 0.043175\n",
|
||||||
"Step 4000, loss: 0.034952\n",
|
"Step 4000, loss: 0.039472\n",
|
||||||
"Step 5000, loss: 0.032054\n",
|
"Step 5000, loss: 0.038181\n",
|
||||||
"Step 6000, loss: 0.030908\n",
|
"Step 6000, loss: 0.035628\n",
|
||||||
"Step 7000, loss: 0.029630\n",
|
"Step 7000, loss: 0.026915\n",
|
||||||
"Step 8000, loss: 0.028747\n",
|
"Step 8000, loss: 0.021984\n",
|
||||||
"Step 9000, loss: 0.028692\n",
|
"Step 9000, loss: 0.018708\n",
|
||||||
"Step 10000, loss: 0.020781\n",
|
"Step 10000, loss: 0.016682\n",
|
||||||
"Runtime 88.29s\n"
|
"Runtime 104.06s\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -456,7 +434,7 @@
|
|||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 1152x360 with 2 Axes>"
|
"<Figure size 1152x360 with 2 Axes>"
|
||||||
]
|
]
|
||||||
@@ -499,7 +477,7 @@
|
|||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x11f9b5b90>"
|
"<matplotlib.legend.Legend at 0x7f947c590e20>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 9,
|
"execution_count": 9,
|
||||||
@@ -508,7 +486,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEWCAYAAABIVsEJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6yklEQVR4nO3deXzT9f3A8deb0kIBKaecIjhPtAjYocwD5VBxKuI80KngMTynTB3CzwvxmDoPRNmUqfMWLxgwZShFcN6CQ6vigXgVQU6rYKEtff/++HwDIU3aJE3yTZr38/HIo/meeTeUvPO5RVUxxhhjYtXI7wCMMcZkJksgxhhj4mIJxBhjTFwsgRhjjImLJRBjjDFxsQRijDEmLpZAjEkQEfm9iLzsdxzGpIolEJN2ROR0EVkkIhtFZKWIzBGRQ/yOqy6q+qSqHul3HAEiMkpEXq/jnAUicl6c979RREpEpEpEJkQ45wERGS0ivxWR10XkRxFZJSIPishO8byuSR+WQExaEZHLgUnALUAHoBvwN2CYj2HVSUQa+x2DD5YBY4EXazlnKPASUADcBHQG9gG6AH9NdoAmyVTVHvZIiwfuQ2YjcHIt5zTBJZjvvcckoIl37HCgFPehthpYCZwAHAN8DqwH/i/oXhOA54FngJ+B94H9g46PA770jn0CDA86Ngp4A7gbWIf7cBwFvO4dF+/YauAnoATYL+j3fAxYA3wDXAM0Crrv68AdwAbgK2BoLe9H2BhxH9Kbga3ee/pjmGtv9o5v9s65L85/tyeACWH29wI+jHDNiUCJ339z9qjfw0ogJp30B5oCM2o552rgIKA3sD/QD/cBHNDRu0cX4DrgH8AZwAHAocC1ItIj6PxhwHNAG+Ap4F8ikusd+9K7pgC4AXhCRDoFXXsgsBxXUro5JM4jgcOAPb3rT8ElGoB7vX27AQOAs4CzQ+77GdAOuB14SEQkwvsRNkZVXQpcALylqi1UtVXohap6NfBf4BLvnEsARORDr6op3ONvEeII5xgil04OAz6O4V4mDVkCMemkLbBWVatqOef3wERVXa2qa3AfmmcGHa8EblbVSmAa7kP4HlX9WVU/xn1L3z/o/MWq+rx3/l245HMQgKo+p6rfq2q1qj4DfIFLWAHfq+q9qlqlquUhcVYCOwF7A6KqS1V1pYjkACOA8V5MXwN3hvwO36jqP1R1K/Ao0AmXpGqIIsaYqWovVW0V4XFRDLf6La76agciMgQYiUvwJoNZAjHpZB3Qro72hM64ap+Ab7x92+7hffACBD7Ufwg6Xg60CNr+LvBEVatxVWCdAUTkLBFZEvj2DeyHS0g1rg2lqvOB+4ApwGoRmSoiLb3rc8P8Dl2CtlcF3ecX72lwzNtEEaMvRKQVLnm+GbL/IFxJ7yRV/dyH0EwCWQIx6eQtYAuu3SKS74Fdg7a7efvitUvgiYg0AroC34vIrrjqr0uAtl4V0Ee4to2AWqeyVtXJqnoA0BNXlfVnYC2udBL6O6yINfAoYoxmqu0a54jIx14PuHCP+6MM7yhgflAyR0T6ALOAc1S1OMr7mDRmCcSkDVUtw1VrTBGRE0SkmYjkishQEbndO+1p4BoRaS8i7bzzn6jHyx4gIid6pZ4xuAT2NtAc9+G6BkBEzsZ9u4+KiPxaRA702lM24Rqqq70P1GeBm0VkJy8JXB7n71BXjD8AXUUkr5Z7/IBri9lGVff12kTCPS4I+h1zRaQp7nOksYg09aroIKT9Q0T2A/4D/FFVZ8fxu5o0ZAnEpBVVvRP3gXoN7oPxO9w37H95p9wELAI+xPVset/bF6+ZwKm4Hk9nAieqaqWqfoJrm3gL9yFbiOt1Fa2WuNLBBlwV1Tq2d1v9Iy6pLMf1uHoKeDjWwKOIcT6uoXqViKyNcJt7gJNEZIOITI4xhH/gqgRPw3VuKAfO9Br8j8IljIArgPa4DgGB0ow1omc4UbUFpUx28ga/7a6qZ/gdS0MiIv1wXYLr1Zhv0p+VQIwxyXC93wGY5MvG0bPGmCRS1Xf9jsGkhlVhGWOMiYtVYRljjIlLVlVhtWvXTrt37+53GMYYk1EWL168VlXbh+7PqgTSvXt3Fi1a5HcYxhiTUUTkm3D7rQrLGGNMXCyBGGOMiYslEGOMMXHxtQ1ERB4GjgVWq2qNeYa8KRHuwc2r8wswSlXf946NZPs6EDep6qOpidoY47fKykpKS0vZvHmz36E0KE2bNqVr167k5ubWfTL+N6I/gpvy+rEIx4cCe3iPA4G/AweKSBvcSNci3GRyi0VklqpuSHrExhjflZaWstNOO9G9e3cir7VlYqGqrFu3jtLSUnr06FH3BficQFT1NRHpXsspw4DH1I12fFtEWnkrwh0OvKKq6wFE5BXgaNxMrcaknZKSEoqLiykrK6OgoIBBgwZRWFjod1gZa/PmzZY8EkxEaNu2LWvWrIn6Gr9LIHXpwo6L9pR6+yLtr0FERgOjAbp165acKI0JEpws8vPzqaqqorKyctvxsrIypk+fzvTp0y2Z1IMlj8SL9T1N9wRSb6o6FZgKUFRUZPO2mKQpKSlhzpw5lJdvX902+Hk4ZWVlzJ7tlsewJGIyTbr3wlpB0IpxuNXiVtSy3xhflJSUMHv27DoTRjiVlZUUF9sCfZlGRLjiiiu2bd9xxx1MmDABgAkTJtCsWTNWr1697XiLFmFXJc5o6V4CmQVcIiLTcI3oZaq6UkTmAreISGvvvCOB8X4FabJPaJtGRUXFDtVUsSorK0tgdCYVmjRpwvTp0xk/fjzt2tVchr5du3bceeed3HbbbT5Elxq+lkBE5Gncamp7iUipiJwrIheISGDZzJdwq7Ytw61+dhGA13h+I/Ce95gYaFA3JplKSkq4/fbbmT59+rYP/bKysrhKHsEKCgoSEZ5JocaNGzN69GjuvvvusMfPOeccnnnmGdavb7gfTX73wjqtjuMKXBzh2MPEsQyoMfEKVFPVp6QRTm5uLoMGDUroPbNJstrSo1np4uKLL6ZXr16MHTu2xrEWLVpwzjnncM8993DDDTckIUL/pXsVljG+C66uilVeXh45OTmUl5dv63EFWJfeBqJly5acddZZTJ48mfz8/BrHL730Unr37s2VV17pQ3TJZwnEmAjC9aqqTX5+Pnl5eVElBksYieP3mnhjxoyhb9++nH322TWOtWrVitNPP50pU6b4EFnyWQIxJkSsiQNcNdTQoUMtMWShNm3acMopp/DQQw9xzjnn1Dh++eWX8+tf/5qqqiofoksuSyDGUL9qqvz8fEseWe6KK67gvvvuC3usXbt2DB8+PGJjeybLqjXRi4qK1BaUMqHibRy39gv/LF26lH322cfvMBqkcO+tiCxW1aLQc60EYrJaSUkJM2bMIJYvUrm5uRx33HGWOEzWswRislag5BFL8rDqKmO2swRislZxcXHU1VaWOIypyRKIyRqh049E02Bu7RzGRGYJxGSF0Iby2pKHiDB8+HBLGsbUwRKIyQrRVldZA7kx0bMEYhqkWKqrAsetusrEIicnh8LCQqqqqujRowePP/44rVq1inj+mjVrOPbYY6moqGDy5MkceuihqQs2SSyBmAYl3CjyupLHmDFjUhCZaWjy8/NZsmQJACNHjmTKlClcffXVEc8vLi6msLCQBx98MOrX2Lp1Kzk5OfUNNWnSfUEpY6IW66JONgtu9igpKWHSpEnccMMNTJo0iZKSkoTev3///qxY4da0+/LLLzn66KM54IADOPTQQ/n0009ZsmQJY8eOZebMmfTu3Zvy8nJefvll+vfvT9++fTn55JPZuHEjAN27d+eqq66ib9++PPfcc7Wed/3119O3b18KCwv59NNPAdi4cSNnn302hYWF9OrVixdeeAEg4n3qwxKIyXiBD4fp06fX2c4RWHejoKDA2jqyROCLRfD6LbNnz05YEtm6dSvFxcUcf/zxAIwePZp7772XxYsXc8cdd3DRRRfRu3dvJk6cyKmnnsqSJUvYtGkTN910E/PmzeP999+nqKiIu+66a9s927Zty/vvv8/gwYNrPa9du3a8//77XHjhhdxxxx0A3HjjjRQUFFBSUsKHH37IwIEDWbt2ba33iZdVYZmMFeukh1ZdlZ3CdaAILCNcny8Q5eXl9O7dmxUrVrDPPvswZMgQNm7cyJtvvsnJJ5+87bwtW7bUuPbtt9/mk08+4eCDDwagoqKC/v37bzt+6qmnRnXeiSeeCMABBxzA9OnTAZg3bx7Tpk3bdk7r1q3597//Xet94uVrAhGRo4F7gBzgQVW9NeT43cAR3mYzYGdVbeUd2woEvkJ8q6rHpyRokxZinb/KqquyV6Q2sPouIxxoA/nll1846qijmDJlCqNGjaJVq1bb2kYiUVWGDBnC008/HfZ48+bNozqvSZMmgGvQr22237ruEy/fqrBEJAeYAgwFegKniUjP4HNU9U+q2ltVewP3AtODDpcHjlnyyC6B+atiGUVu1VXZK9JywYlaRrhZs2ZMnjyZO++8k2bNmtGjRw+ee+45wH1wf/DBBzWuOeigg3jjjTdYtmwZAJs2beLzzz+P+7xgQ4YM2WH9kQ0bNsR1n2j42QbSD1imqstVtQKYBgyr5fzTgMSmT5NxYpm/qqCggBNPPJGxY8da8shigwYNIjc3d4d9iS6R9unTh169evH000/z5JNP8tBDD7H//vuz7777MnPmzBrnt2/fnkceeYTTTjuNXr160b9//22N4PGcF+yaa65hw4YN7Lfffuy///68+uqrcd0nGr5N5y4iJwFHq+p53vaZwIGqekmYc3cF3ga6qupWb18VsASoAm5V1X9FeJ3RwGiAbt26HfDNN98k/pcxSRfLeh02GLDhi3U699BxQTbeJ7KGOJ37COD5QPLw7KqqK0RkN2C+iJSo6pehF6rqVGAquPVAUhOuSZR4lpW1SQ9NqMLCQvubSAI/E8gKYJeg7a7evnBGABcH71DVFd7P5SKLine truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -561,7 +539,7 @@
|
|||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x11fa4db90>"
|
"<matplotlib.legend.Legend at 0x7f947cc9cca0>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 10,
|
"execution_count": 10,
|
||||||
@@ -570,7 +548,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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3nvvZezYsdWaPAqJCH379uUHP/gBUVFRXLhwgffee48NGzagyy8rb/XTn/6UU6dOlXgsPDycW265pagtsSapVWuix8bGGl1Q6nJbt27liy++wOVy0a5dO6ZOneo1DdgFBQUsW7aMDRs2ANC3b19uvPFG/P39HY5MOW3Pnj1069bN6TBqpJL+bEVkizEm9spztQqrljLGsGrVKlatWgXAoEGDGDNmTIV6V3mKv78/Y8eOJTIykk8//ZStW7eSkZHB7bffTt26dZ0OT6laz3u+LVS1cblcfPHFF6xatQoR4Xvf+x7jxo3zquRRXHR0NPfffz9BQUEcPHiQDz74gJycHKfDUqrW885vDOUxLpeL+fPns2XLFgICArj99tvp16+f02FdV6tWrXjooYcICQkhNTWV9957r8ZNC6GUr9EEUou4XC4+++wzduzYQWBgIHfddRddu3Z1OqwyCw0N5YEHHiA8PJyTJ08yc+ZMsrKynA5LqVpLE0gtYYxhwYIF7Ny5kzp16nD33XfTtm1bp8Mqt0aNGnH//ffTtGlTTp06pdVZSjlIE0gtYIxh8eLFbN++vajk4cvjKho0aMA999xDWFgYaWlpfPDBBzWyi6RS3k4TSC2wevVqNm3ahL+/P9OmTfPp5FEoODiYe++9lyZNmnD8+HE+/vhjCgoKnA5L1SL+/v7ExMTQo0cPJk6ceNks1aV59dVX6datG3fddVc1ROh5mkBquMTERFauXImIMGXKFNq3b+90SFWmUaNG3H333TRo0IADBw6wYMECHWyoqk39+vVJTExk165dhIaGlmm6ktdff52lS5fy4Ycfluk9vH30uiaQGuzQoUP897//BWDChAk1cuBVaGgo06dPJzAwkB07drBy5UqnQ1K1UFxcHKmpqUWvX3zxRfr370+vXr34zW9+A8AjjzzCwYMHmTBhAi+//DJZWVk8+OCDDBgwgD59+jB//nwA3nvvPSZNmsSoUaO44YYbSr3f4cOH6datG9///veJjo5m7NixRe2B+/fvZ/To0fTu3Zu+ffty4MCBUu9TGTqQsIY6deoUc+bMweVyERcXR//+/Z0OyWNatmzJbbfdxqxZs1i9ejURERH06NHD6bBUNfHUVOll/YItnDHhoYceAmDJkiUkJyfz9ddfY4xh0qRJrF69mjfeeINFixaxYsUKwsPD+eUvf8moUaN49913ycjIYMCAAYwePRqwM0Ts2LGD0NDQUu8XFRVFcnIys2bN4u233+b2229n3rx53H333dx11108/fTT3HLLLeTm5uJyuUq9T3x8fIX/jDSB1EC5ubnMnj2b3NxcunbtWvSPsibr1KkTY8eOZfHixcyfP58mTZoQGVniKsdKVYmcnBxiYmJLine truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -631,7 +609,7 @@
|
|||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x11faef650>"
|
"<matplotlib.legend.Legend at 0x7f9474d7b130>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 11,
|
"execution_count": 11,
|
||||||
@@ -640,7 +618,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -710,7 +688,7 @@
|
|||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x11fb76c50>"
|
"<matplotlib.legend.Legend at 0x7f947cd89ee0>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 12,
|
"execution_count": 12,
|
||||||
@@ -719,7 +697,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -768,13 +746,13 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Mean absolute error for re-simulation across 16 steps: 0.02124\n"
|
"Mean absolute error for re-simulation across 16 steps: 0.01372\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x11fc06910>"
|
"<matplotlib.legend.Legend at 0x7f947c5d91f0>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 13,
|
"execution_count": 13,
|
||||||
@@ -783,7 +761,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deXxb5ZXw8d/R7j2Ol8SJQxYSAoFAEgItpWULTFimoR06QwK8BV6WoTMM7XTaKW0Z2tLhAwwzU4a30JbSlimlUIZOaUqBsJWlLIFAwpJAgrPaiZPYjvdF6/P+ca8UWZZkOZFsyzrfz0cfSfdeSUfXso7O8zz3uWKMQSmlVOFyjHUASimlxpYmAqWUKnCaCJRSqsBpIlBKqQKniUAppQqcJgKllCpwmgiUUqrAaSJQKkMicoWIhEWkJ+EybaxjU+pwuMY6AKXyzOvGmE8Pt5GIuIwxoeGWZfA8TmNMeKRBKjUSWhGogiYiRkTmxt1/QET+9RCfa4eIfENE3gN6RcSVYtkxIvKiiHSIyEYRWZHw+j8SkSdFpBc487DfpFLD0ESgVHatAi4AJsX9+o8tAwT4A/AMUAv8A/CQiMyPe45LgFuBMuDPoxS3KmCaCJQamU/av+Sjl60J6+82xjQaY/pTLPskUArcbowJGGNeAJ7AShZRvzfGvGqMiRhjBnL7dpTSPgKlRuqNYfoIGodZNg1oNMZE4pbtBKYP8xxK5YxWBKrQ9QHFcfenHubzJZvON37ZHmCGiMT/7x0B7B7mOZTKGU0EqtBtAC4REaeInAucnuPXW4uVfP5ZRNwicgbwWeCRHL+uUilpIlCF7stYX8QdwKXA48Nsf0qS4whOyvTFjDEB+/XOA1qBe4EvGmM+OrTwlTp8oiemUUqpwqYVgVJKFThNBEopVeA0ESilVIHTRKCUUgUu7w4oq66uNrNmzRrrMJRSKq+8/fbbrcaYmmTr8i4RzJo1i3Xr1o11GEoplVdEZGeqddo0pJRSBU4TgVJKFThNBEopVeDyro9AKVVYgsEgTU1NDAzojNyZ8Pl81NfX43a7M36MJgKl1LjW1NREWVkZs2bNQkTGOpxxzRhDW1sbTU1NzJ49O+PHadOQUmpcGxgYoKqqSpNABkSEqqqqEVdPmgiUUuOeJoHMHcq+0kSgVAbeuf8dXviXF9DZetVEpIlAqQw8/83neeVfX2Hv+r1jHYoaZR0dHdx7770Zb3/FFVcwe/ZsFi1axKJFi9iwYUMOo8sOTQRKZcDf7QegYU3DGEeiRttIEwHAnXfeyYYNG9iwYQOLFi3KUWTZo4lAqWFEwhHC/jAAW9dsHeNo1Gi78cYb2bp1K4sWLeLrX//6WIeTEzp8VKlhBPuCsduNrzbi7/bjLfOOYUSFK1d9xum6fm6//XY++OADNmzYQHd3d8pf+L/+9a9ZsGABAN/+9re55ZZbWLZsGbfffjte7/j+vGgiUGoY8YkgEoqw4087mL9i/hhGpMZKWVnZsG3+t912G1OnTiUQCHDttddyxx13cPPNN49ShIdGE4FSw4hPBAANTzdoIhgjYz1oq7u7m8985jNJ10Urgrq6OgC8Xi9XXnkl//7v/z6aIR4STQRKDSPYayUCh8tBJBTRfoICU1ZWRnd3d+z2cBVBc3MzdXV1GGN4/PHHOe6440YjzMOincVKDSNaEdQurKVochHt29o50HBgjKNSo6WqqopTTz2V4447LqPO4ksvvZSFCxeycOFCWltbuemmm0YhysOjFYFSw4gmAm+Zlzlnz2HjoxvZ9tw2Js+dPMaRqdHy61//OuNtX3jhhRxGkhtaESg1jEBvAAB3iZvqY6oB6G7uHsuQlMoqTQRKDSNaEbiL3biKrCI6NBAay5CUyipNBEoNY1Ai8NmJoF8TgZo4NBEoNYzoqCF3SVwi0IpATSCaCJQaRtKKQBOBmkA0ESg1jPhE4C6yTv+niUBNJJoIlBpGdNSQp8SjFUEBGunso9u3b+cTn/gEc+fO5eKLLyYQCCTd7r333uOUU07h2GOPZeHChQwMDNDX18cFF1zA0UcfzbHHHsuNN94Y2/6BBx6gpqYmNr31/ffff9jvLUoTgVLD0M7iwjbSRPCNb3yDf/zHf6ShoYHKykp+9rOfDdkmFApx2WWX8eMf/5iNGzfy4osvxk42/7WvfY2PPvqI9evX8+qrr/LUU0/FHnfxxRfHpre++uqrD//N2TQRKDUM7SMobCOZhtoYwwsvvMAXvvAFAC6//HIef/zxIds988wzHH/88ZxwwgmAdfSy0+mkuLiYM888EwCPx8OSJUtoamrK8jsaSo8sVmoYOmpo/JDv5WYeavOd1LPZjWQa6traWiZNmoTLZX1O6uvr2b1795Btt2zZgoiwfPlyWlpaWLlyJf/8z/88aJuOjg7+8Ic/8OUvfzm27Le//S0vv/wyRx11FD/4wQ+YMWPGobzdITQRKDUMPaBMRQ036Vxra2tGzxMKhfjzn//MW2+9RXFxMcuWLePEE09k2bJlsfWrVq3ihhtuYM6cOQB89rOfZdWqVXi9Xn7yk59w+eWXZ206C00ESg0jWdNQsD+Y7iEqR9L9ch8Nw01Dfcwxx9DR0UEoFMLlctHU1MT06dOHbFtfX89pp51GdbU1Zcn555/PO++8E0sE1157LfPmzeMrX/lK7DFVVVWx21dfffWQCuJw5LSPQETOFZHNItIgIjcmWX+EiPxJRNaLyHsicn4u41HqUESbhnTUUGFKNg11ssuCBQsQEc4880wee+wxAP77v/+bCy+8cMhzLl++nPfff5++vj5CoRAvvfRS7OxmN910E52dndx1112DHtPc3By7vXr1ao455pisvcecJQIRcQL3AOcBC4BVIrIgYbObgEeNMYuBlcDIzhCt1CjQzuLCNtJpqO+44w7+8z//k7lz59LW1sZVV10FWF/e0TOVVVZW8tWvfpWTTjqJRYsWsWTJEi644AKampq49dZb2bRpE0uWLBk0TPTuu+/m2GOP5YQTTuDuu+/mgQceyNp7zGXT0MlAgzFmG4CIPAJcCGyK28YA5fbtCmBPDuNR6pDoAWVqJNNQz5kzhzfffHPI8hUrVrBixYrY/csuu4zLLrts0Db19fWYFKdhu+2227jtttsyjmMkctk0NB1ojLvfZC+L913gMhFpAp4E/iHZE4nItSKyTkTWtbS05CJWpVKKn4Y6/jiCVP+wSuWbsT6OYBXwgDGmHjgfeFBEhsRkjLnPGLPUGLO0pqZm1INUhS2+InC4HIhTMBFDJBQZ48iUyo5cJoLdQPwg13p7WbyrgEcBjDGvAz6gOocxKTVi8YkA0H4CNeHkMhG8BcwTkdki4sHqDF6dsM0uYBmAiByDlQi07UeNG+FgmEgwgjgFp8cJoP0EasLJWSIwxoSA64E1wIdYo4M2isgtIhLtMfkn4BoReRd4GLjCaMOrGkfiqwER66hWnW9ITTQ5PaDMGPMkVidw/LKb425vAk7NZQxKHY7EZiHQpiE18Yx1Z7FS41r8wWRRmggKSy6moX7ooYdi00kvWrQIh8MRm7rijDPOYP78+bF1+/fvz9p7SUUTgVJpJK0IdL6hgpKLaagvvfTS2BHJDz74ILNnzx40md1DDz0UW19bW5uV95GOJgKl0tCmIZWLaajjPfzww6xcuTJr8R4KnXROqTTiDyaL0onnxk5uJqG2pjhIJRfTUMf7zW9+w+9///tBy6688kqcTicXXXQRN910U2ygQq5oIlAqDa0IVLxsTUMdtXbtWoqLiznuuONiyx566CGmT59Od3c3F110EQ8++CBf/OIXDznmTGgiUCoNTQTjy1iPLc/WNNRRjzzyCKtWrRq0LLp9WVkZl1xyCW+++aYmAqXGUrJRQ3pAWWFJNg11OtFpqFeuXJlyGmqASCTCo48+yiuvvBJbFgqF6OjooLq6mmAwyBNPPMHZZ5+dvTeTgnYWK5VGtCJwFR/8zeT0WUcY6wFlhSEX01ADvPzyy8yYMSN2BjIAv9/P8uXLOf7441m0aBHTp0/nmmuuyf6bSqAVgVJpaNOQgtxMQ33GGWfwxhtvDNqmpKSEt99++9ADPURaESiVRnTUkB5QpiYyTQRKpZGsItA+AjXRaCJQKo10TUN6HIGaKDQRKJVGdNRQsgPKtCJQE4UmAqXS0M5iVQg0ESiVRrpJ58ID4TGJSals00SgVBrppqHWPoLCMNLZR3/4wx8yd+5cRGTEU06MFU0ESqWhTUNqpIng1FNP5bnnnmPmzJk5jCq7NBEolYYmAjWSaagBFi9ezKxZs3IfWBbpkcVKpZFsGmo9jmDsfE++l5Pn/Y75Tsp1I5mGesGCBTmJL9c0ESiVhlYEKl4mk87lI00ESqWRNhHopHOjLt0v99Ew3DTUWhEoNcEYYw4eUKYVQcEa6TTU+Ug7i5VKIRwIYyIGh9uB0+2MLddEUFhGOg313XffTX19PU1NTRx//PFcffXVoxDl4dGKQKkUkjULwcEDyjQRFI6RTEN9ww03cMMNN+QwmuzTikCpFJIdTAZ6QJmaeDQRKJVCyopAm4bUBKOJQKkUUiUCh8uBOAQTNkRCkbEIreAYM9anrc8fh7KvNBEolUKyg8kARET7CUaRz+ejra1Nk0EGjDG0tbXh8/lG9DjtLFYqhVQVAVjNQ8HeIA39QRaUeoasV9kTHYHT0tIy1qHkBZ/PR319/Ygeo4lAqRRiiaBoaCJw2P0EVw2EeH1Uoyo8breb2bNnj3UYE5o2DSmVQthvnW8g2jkcT+xle7RpSE0AmgiUSiEcsBKB0+Mcss5hVwkDAyH09DQq3+U0EYjIuSKyWUQaROTGFNv8jYhsEpGNIpL5URtK5VgsEXiHJoJoReDuD9E5qlEplX056yMQESdwD3AO0AS8JSKrjTGb4raZB3wTONUY0y4itbmKR6mRCvmtZp9kFQF2InANhOgAJo9iXEplWy4Line truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -833,7 +811,7 @@
|
|||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 1152x360 with 2 Axes>"
|
"<Figure size 1152x360 with 2 Axes>"
|
||||||
]
|
]
|
||||||
@@ -931,9 +909,9 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.7.6"
|
"version": "3.8.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
"nbformat_minor": 1
|
"nbformat_minor": 1
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
Discussion of Physical Soft-Constraints
|
Discussion of Physical Losses
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
The good news so far is - we have a DL method that can include
|
The good news so far is - we have a DL method that can include
|
||||||
@@ -9,7 +9,7 @@ starting point.
|
|||||||
On the positive side, we can leverage DL frameworks with backpropagation to compute
|
On the positive side, we can leverage DL frameworks with backpropagation to compute
|
||||||
the derivatives of the model. At the same time, this puts us at the mercy of the learned
|
the derivatives of the model. At the same time, this puts us at the mercy of the learned
|
||||||
representation regarding the reliability of these derivatives. Also, each derivative
|
representation regarding the reliability of these derivatives. Also, each derivative
|
||||||
requires backpropagation through the full network, which can be very expensive. Especially so
|
requires backpropagation through the full network. This can be very expensive, especially
|
||||||
for higher-order derivatives.
|
for higher-order derivatives.
|
||||||
|
|
||||||
And while the setup is relatively simple, it is generally difficult to control. The NN
|
And while the setup is relatively simple, it is generally difficult to control. The NN
|
||||||
@@ -23,23 +23,23 @@ Of course, such denomination questions are superficial - if an algorithm is usef
|
|||||||
what name it has. However, here the question helps to highlight some important properties
|
what name it has. However, here the question helps to highlight some important properties
|
||||||
that are typically associated with algorithms from fields like machine learning or optimization.
|
that are typically associated with algorithms from fields like machine learning or optimization.
|
||||||
|
|
||||||
One main reason _not_ to call these physical constraints machine learning (ML), is that the
|
One main reason _not_ to call the optimization of the previous notebook machine learning (ML), is that the
|
||||||
positions where we test and constrain the solution are the final positions we are interested in.
|
positions where we test and constrain the solution are the final positions we are interested in.
|
||||||
As such, there is no real distinction between training, validation and (out of distribution) test sets.
|
As such, there is no real distinction between training, validation and test sets.
|
||||||
Computing the solution for a known and given set of samples is much more akin to classical optimization,
|
Computing the solution for a known and given set of samples is much more akin to classical optimization,
|
||||||
where inverse problems like the previous Burgers example stem from.
|
where inverse problems like the previous Burgers example stem from.
|
||||||
|
|
||||||
For machine learning, we typically work under the assumption that the final performance of our
|
For machine learning, we typically work under the assumption that the final performance of our
|
||||||
model will be evaluated on a different, potentially unknown set of inputs. The _test data_
|
model will be evaluated on a different, potentially unknown set of inputs. The _test data_
|
||||||
should usually capture such out of distribution (OOD) behavior, so that we can make estimates
|
should usually capture such _out of distribution_ (OOD) behavior, so that we can make estimates
|
||||||
about how well our model will generalize to "real-world" cases that we will encounter when
|
about how well our model will generalize to "real-world" cases that we will encounter when
|
||||||
we deploy it into an application.
|
we deploy it in an application.
|
||||||
|
|
||||||
In contrast, for the PINN training as described here, we reconstruct a single solution in a known
|
In contrast, for the PINN training as described here, we reconstruct a single solution in a known
|
||||||
and given space-time region. As such, any samples from this domain follow the same distribution
|
and given space-time region. As such, any samples from this domain follow the same distribution
|
||||||
and hence don't really represent test or OOD sampes. As the NN directly encodes the solution,
|
and hence don't really represent test or OOD samples. As the NN directly encodes the solution,
|
||||||
there is also little hope that it will yield different solutions, or perform well outside
|
there is also little hope that it will yield different solutions, or perform well outside
|
||||||
of the training distribution. If we're interested in a different solution, we most likely
|
of the training range. If we're interested in a different solution, we
|
||||||
have to start training the NN from scratch.
|
have to start training the NN from scratch.
|
||||||
|
|
||||||

|

|
||||||
@@ -48,7 +48,7 @@ have to start training the NN from scratch.
|
|||||||
|
|
||||||
Thus, the physical soft constraints allow us to encode solutions to
|
Thus, the physical soft constraints allow us to encode solutions to
|
||||||
PDEs with the tools of NNs.
|
PDEs with the tools of NNs.
|
||||||
An inherent drawback of this approach is that it yields single solutions,
|
An inherent drawback of this variant 2 is that it yields single solutions,
|
||||||
and that it does not combine with traditional numerical techniques well.
|
and that it does not combine with traditional numerical techniques well.
|
||||||
E.g., the learned representation is not suitable to be refined with
|
E.g., the learned representation is not suitable to be refined with
|
||||||
a classical iterative solver such as the conjugate gradient method.
|
a classical iterative solver such as the conjugate gradient method.
|
||||||
|
|||||||
+58
-15
@@ -10,13 +10,8 @@ We as humans have a lot of knowledge about how to describe physical processes
|
|||||||
mathematically. As the following chapters will show, we can improve the
|
mathematically. As the following chapters will show, we can improve the
|
||||||
training process by guiding it with our human knowledge of physics.
|
training process by guiding it with our human knowledge of physics.
|
||||||
|
|
||||||
```{figure} resources/physloss-overview.jpg
|

|
||||||
---
|
|
||||||
height: 220px
|
|
||||||
name: physloss-overview
|
|
||||||
---
|
|
||||||
Physical losses typically combine a supervised loss with a combination of derivatives from the neural network.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Using physical models
|
## Using physical models
|
||||||
|
|
||||||
@@ -63,17 +58,57 @@ Note that, similar to the data samples used for supervised training, we have no
|
|||||||
residual terms $R$ will actually reach zero during training. The non-linear optimization of the training process
|
residual terms $R$ will actually reach zero during training. The non-linear optimization of the training process
|
||||||
will minimize the supervised and residual terms as much as possible, but there is no guarantee. Large, non-zero residual
|
will minimize the supervised and residual terms as much as possible, but there is no guarantee. Large, non-zero residual
|
||||||
contributions can remain. We'll look at this in more detail in the upcoming code example, for now it's important
|
contributions can remain. We'll look at this in more detail in the upcoming code example, for now it's important
|
||||||
to remember that physical constraints in this way only represent _soft-constraints_, without guarantees
|
to remember that physical constraints in this way only represent _soft constraints_, without guarantees
|
||||||
of minimizing these constraints.
|
of minimizing these constraints.
|
||||||
|
|
||||||
## Neural network derivatives
|
The previous overview did not really make clear how an NN produces $\mathbf{u}$.
|
||||||
|
We can distinguish two different approaches here:
|
||||||
|
via a chosen explicit representation of the target function (v1 in the following), or via using fully-connected neural networks to represent the solution (v2).
|
||||||
|
E.g., for v1 we could set up a _spatial_ grid (or graph, or a set of sample points), while in the second case no explicit representation exists, and the NN instead receives the _spatial coordinate_ to produce the solution at a query position.
|
||||||
|
We'll outline these two variants in more detail the following.
|
||||||
|
|
||||||
In order to compute the residuals at training time, it would be possible to store
|
---
|
||||||
the unknowns of $\mathbf{u}$ on a computational mesh, e.g., a grid, and discretize the equations of
|
|
||||||
$R$ there. This has a fairly long "tradition" in DL, and was proposed by Tompson et al. {cite}`tompson2017` early on.
|
## Variant 1: Residual derivatives for explicit representations
|
||||||
|
|
||||||
|
For variant 1, we choose the discretization and set up a computational mesh that covers our target domain. Without loss of generality, let's assume this is a Cartesian grid that samples the space with positions $\mathbf{p}$. Now, an NN is trained to produce the solution on the grid: $\mathbf{u}(\mathbf{p}) = f(\mathbf{x} ; \theta)$. For a regular grid, a CNN would be a good choice for $f$, while for triangle meshes we could use a graph-network, or a network with point-convolutions for particles.
|
||||||
|
|
||||||
|
```{figure} resources/physloss-overview-v1.jpg
|
||||||
|
---
|
||||||
|
height: 220px
|
||||||
|
name: physloss-overview-v1
|
||||||
|
---
|
||||||
|
Variant 1: the solution is represented by a chosen computational mesh, and produced by an NN. The residual is discretized there, and can be combined with supervised terms.
|
||||||
|
```
|
||||||
|
|
||||||
|
Now, we can discretize the equations of
|
||||||
|
$R$ on our computational mesh, and compute derivatives with our method of choice. Only caveat: to incorporate the residual
|
||||||
|
into training, we have to formulate the evaluation such that a deep learning framework can backpropagate through the
|
||||||
|
calculations. As our network $f()$ produces the solution $\mathbf{u}$, and the residual depends on it ($R(\mathbf{u})$), we at least need $\partial R / \partial \mathbf u$, such that the gradient can be backpropagated for the weights $\theta$. Luckily, if we formulate $R$ in terms of operations of a DL framework, this will be taken care of by the backpropagation functionality of the framework.
|
||||||
|
|
||||||
|
This variant has a fairly long "tradition" in DL, and was, e.g., proposed by Tompson et al. {cite}`tompson2017` early on to learn
|
||||||
|
divergence free motions. To give a specific example: if our goal is to learn velocities $\mathbf u(t)$ which are divergence free $\nabla \cdot \mathbf u=0$, we can employ this training approach to train an NN without having to pre-compute divergence free velocity fields as training data. For brevity, we will drop the spatial index ($\mathbf p$) here, and focus on $t$, which we can likewise simplify: divergence-freeness has to hold at all times, and hence we can consider a single step from $t=0$ with $\Delta t=1$, i.e., a normalized step from a divergent $\mathbf u(0)$ to a divergence-free $\mathbf u(1)$. For a normal solver, we'd have to compute a pressure
|
||||||
|
$p=\nabla^{-2} \mathbf{u}(0)$, such that $\mathbf{u}(1) = \mathbf{u}(0) - \nabla p$. This is the famous fundamental
|
||||||
|
theorem of vector calculus, or
|
||||||
|
[Helmholtz decomposition](https://en.wikipedia.org/wiki/Helmholtz_decomposition), splitting a vector field into a _solenoidal_ (divergence-free) and irrotational part (the pressure gradient).
|
||||||
|
|
||||||
|
To learn this decomposition, we can approximate $p$ with a CNN on our computational mesh: $p = f(\mathbf{u}(0) ; \theta)$. The learning objective becomes minimizing the divergence of $\mathbf u(0)$, which means minimizing
|
||||||
|
$\nabla \cdot \big( \mathbf{u}(0) - \nabla f(\mathbf{u}(0);\theta) \big)$.
|
||||||
|
To implement this residual, all we need to do is provide the divergence operator $(\nabla \cdot)$ of $\mathbf u$ on our computational mesh. This is typically easy to do via
|
||||||
|
a convolutional layer in the DL framework that contains the finite difference weights for the divergence.
|
||||||
|
Nicely enough, in this case we don't even need additional supervised samples, and can typically purely train with this residual formulation. Also, in contrast to variant 2 below, we can directly handle fairly large spaces of solutions here (we're not restricted to learning single solutions)
|
||||||
|
An example implementation can be found in this [code repository](https://github.com/tum-pbs/CG-Solver-in-the-Loop).
|
||||||
|
|
||||||
|
Overall, this variant 1 has a lot in common with _differentiable physics_ training (it's basically a subset). As we'll discuss differentiable physics in a lot more detail
|
||||||
|
in {doc}`diffphys` and after, we'll focus on the direct NN representation (variant 2) from now on.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Variant 2: Derivatives from a neural network representation
|
||||||
|
|
||||||
|
The second variant of employing physical residuals as soft constraints
|
||||||
|
instead uses fully connected NNs to represent $\mathbf{u}$. This _physics-informed_ approach was popularized by Raissi et al. {cite}`raissi2019pinn`, and has some interesting pros and cons that we'll outline in the following. We will target this physics-informed version (variant 2) in the following code examples and discussions.
|
||||||
|
|
||||||
A popular variant of employing physical soft-constraints {cite}`raissi2019pinn`
|
|
||||||
instead uses fully connected NNs to represent $\mathbf{u}$. This has some interesting pros and cons that we'll outline in the following, and we will also focus on it in the following code examples and comparisons.
|
|
||||||
|
|
||||||
The central idea here is that the aforementioned general function $f$ that we're after in our learning problems
|
The central idea here is that the aforementioned general function $f$ that we're after in our learning problems
|
||||||
can also be used to obtain a representation of a physical field, e.g., a field $\mathbf{u}$ that satisfies $R=0$. This means $\mathbf{u}(\mathbf{x})$ will
|
can also be used to obtain a representation of a physical field, e.g., a field $\mathbf{u}$ that satisfies $R=0$. This means $\mathbf{u}(\mathbf{x})$ will
|
||||||
@@ -86,6 +121,14 @@ in {doc}`overview`. Now, we can use the same tools to compute spatial derivative
|
|||||||
Note that above for $R$ we've written this derivative in the shortened notation as $\mathbf{u}_{x}$.
|
Note that above for $R$ we've written this derivative in the shortened notation as $\mathbf{u}_{x}$.
|
||||||
For functions over time this of course also works for $\partial \mathbf{u} / \partial t$, i.e. $\mathbf{u}_{t}$ in the notation above.
|
For functions over time this of course also works for $\partial \mathbf{u} / \partial t$, i.e. $\mathbf{u}_{t}$ in the notation above.
|
||||||
|
|
||||||
|
```{figure} resources/physloss-overview-v2.jpg
|
||||||
|
---
|
||||||
|
height: 220px
|
||||||
|
name: physloss-overview-v2
|
||||||
|
---
|
||||||
|
Variant 2: the solution is produced by a fully-connected network, typically requiring a supervised loss with a combination of derivatives from the neural network for the residual. These NN derivatives have their own share of advantages and disadvantages.
|
||||||
|
```
|
||||||
|
|
||||||
Thus, for some generic $R$, made up of $\mathbf{u}_t$ and $\mathbf{u}_{x}$ terms, we can rely on the backpropagation algorithm
|
Thus, for some generic $R$, made up of $\mathbf{u}_t$ and $\mathbf{u}_{x}$ terms, we can rely on the backpropagation algorithm
|
||||||
of DL frameworks to compute these derivatives once we have a NN that represents $\mathbf{u}$. Essentially, this gives us a
|
of DL frameworks to compute these derivatives once we have a NN that represents $\mathbf{u}$. Essentially, this gives us a
|
||||||
function (the NN) that receives space and time coordinates to produce a solution for $\mathbf{u}$. Hence, the input is typically
|
function (the NN) that receives space and time coordinates to produce a solution for $\mathbf{u}$. Hence, the input is typically
|
||||||
@@ -101,7 +144,7 @@ For higher order derivatives, such as $\frac{\partial^2 u}{\partial x^2}$, we ca
|
|||||||
|
|
||||||
## Summary so far
|
## Summary so far
|
||||||
|
|
||||||
The approach above gives us a method to include physical equations into DL learning as a soft-constraint: the residual loss.
|
The approach above gives us a method to include physical equations into DL learning as a soft constraint: the residual loss.
|
||||||
Typically, this setup is suitable for _inverse problems_, where we have certain measurements or observations
|
Typically, this setup is suitable for _inverse problems_, where we have certain measurements or observations
|
||||||
for which we want to find a PDE solution. Because of the high cost of the reconstruction (to be
|
for which we want to find a PDE solution. Because of the high cost of the reconstruction (to be
|
||||||
demonstrated in the following), the solution manifold shouldn't be overly complex. E.g., it is not possible
|
demonstrated in the following), the solution manifold shouldn't be overly complex. E.g., it is not possible
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 86 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 142 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 127 KiB |
@@ -158,7 +158,7 @@ To summarize, supervised training has the following properties.
|
|||||||
- Interactions with external "processes" (such as embedding into a solver) are difficult.
|
- Interactions with external "processes" (such as embedding into a solver) are difficult.
|
||||||
|
|
||||||
The next chapters will explain how to alleviate these shortcomings of supervised training.
|
The next chapters will explain how to alleviate these shortcomings of supervised training.
|
||||||
First, we'll look at bringing model equations into the picture via soft-constraints, and afterwards
|
First, we'll look at bringing model equations into the picture via soft constraints, and afterwards
|
||||||
we'll revisit the challenges of bringing together numerical simulations and learned approaches.
|
we'll revisit the challenges of bringing together numerical simulations and learned approaches.
|
||||||
|
|
||||||
|
|
||||||
Reference in new issue
Block a user