updated HIG notebook
This commit is contained in:
1 parent
a8c116eb1e
commit
6427365d55
2 files changed
+227
-229
No files matched your search
@@ -58,6 +58,7 @@ for fnOut in fileList:
|
|||||||
|
|
||||||
res.append( re.compile(r"ERROR: pip") ) # pip dependencies
|
res.append( re.compile(r"ERROR: pip") ) # pip dependencies
|
||||||
res.append( re.compile(r"requires imgaug") ) # pip dependencies
|
res.append( re.compile(r"requires imgaug") ) # pip dependencies
|
||||||
|
res.append( re.compile(r"See the documentation of nn.Upsample") ) # pip dependencies
|
||||||
|
|
||||||
# remove all "warnings.warn" from phiflow?
|
# remove all "warnings.warn" from phiflow?
|
||||||
|
|
||||||
|
|||||||
+226
-229
@@ -2,6 +2,10 @@
|
|||||||
"cells": [
|
"cells": [
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false,
|
||||||
|
"id": "XLjsvhkuS2eJ"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"# Learning to Invert Heat Conduction with Scale-invariant Updates\n",
|
"# Learning to Invert Heat Conduction with Scale-invariant Updates\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -11,14 +15,13 @@
|
|||||||
"[[run in colab]](https://colab.research.google.com/github/tum-pbs/pbdl-book/blob/main/physgrad-code.ipynb)\n",
|
"[[run in colab]](https://colab.research.google.com/github/tum-pbs/pbdl-book/blob/main/physgrad-code.ipynb)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n"
|
"\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"id": "XLjsvhkuS2eJ"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "9fETS9hwrQrc"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Problem Statement\n",
|
"## Problem Statement\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -34,13 +37,13 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"$$L(x) = || \\mathcal P(x) - y^* ||_2^2 = || \\mathcal F^{-1}\\left( \\mathcal F(x) \\cdot e^{-k^2 (t_* - t_0)} \\right) - y^* ||_2^2 . $$\n",
|
"$$L(x) = || \\mathcal P(x) - y^* ||_2^2 = || \\mathcal F^{-1}\\left( \\mathcal F(x) \\cdot e^{-k^2 (t_* - t_0)} \\right) - y^* ||_2^2 . $$\n",
|
||||||
"\n"
|
"\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "9fETS9hwrQrc"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "EA7qc5mXsZLU"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"---\n",
|
"---\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -51,43 +54,46 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"We'll use phiflow with PyTorch as default backend, but this example code likewise runs with TensorFlow (just switch to `phi.tf.flow` below).\n",
|
"We'll use phiflow with PyTorch as default backend, but this example code likewise runs with TensorFlow (just switch to `phi.tf.flow` below).\n",
|
||||||
"\n"
|
"\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "EA7qc5mXsZLU"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 17,
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "vN06frDqS2eM",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"!pip install --upgrade --quiet git+https://github.com/tum-pbs/PhiFlow\n",
|
"!pip install --upgrade --quiet git+https://github.com/tum-pbs/PhiFlow\n",
|
||||||
"from phi.torch.flow import * # switch to TF with \"phi.tf.flow\""
|
"from phi.torch.flow import * # switch to TF with \"phi.tf.flow\""
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"id": "vN06frDqS2eM"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false,
|
||||||
|
"id": "fc6Am-XcS2eN"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"\n",
|
"\n",
|
||||||
"## Data generation\n",
|
"## Data generation\n",
|
||||||
"\n",
|
"\n",
|
||||||
"For training, we generate $x^*$ by randomly placing between 4 and 10 \"hot\" rectangles of random size and shape in the domain. The `generate_heat_example()` function below generates a full mini batch (via `shape.batch`) of example positions. These will be $x$ later on. They're never passed to the solver, but should be reconstructed by the neural network.\n",
|
"For training, we generate $x^*$ by randomly placing between 4 and 10 \"hot\" rectangles of random size and shape in the domain. The `generate_heat_example()` function below generates a full mini batch (via `shape.batch`) of example positions. These will be $x$ later on. They're never passed to the solver, but should be reconstructed by the neural network.\n",
|
||||||
"\n"
|
"\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"id": "fc6Am-XcS2eN"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 18,
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "-39wQc1ES2eN",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"def generate_heat_example(*shape, bounds: Box = None):\n",
|
"def generate_heat_example(*shape, bounds: Box = None):\n",
|
||||||
@@ -106,58 +112,56 @@
|
|||||||
" component_mask = component_mask.at(heat_t0)\n",
|
" component_mask = component_mask.at(heat_t0)\n",
|
||||||
" heat_t0 += component_mask * strength\n",
|
" heat_t0 += component_mask * strength\n",
|
||||||
" return heat_t0"
|
" return heat_t0"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"id": "-39wQc1ES2eN"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"source": [
|
|
||||||
"The data is generated on-the-fly later during training, but let's look at two example $x$ for now using phiflow's `vis.plot` function:"
|
|
||||||
],
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"id": "sz_eZyZ7S2eO"
|
"id": "sz_eZyZ7S2eO"
|
||||||
}
|
},
|
||||||
|
"source": [
|
||||||
|
"The data is generated on-the-fly later during training, but let's look at two example $x$ for now using phiflow's `vis.plot` function:"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 19,
|
"execution_count": null,
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"<Figure size 864x360 with 4 Axes>"
|
|
||||||
],
|
|
||||||
"image/png": "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 truncated
|
|
||||||
},
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"needs_background": "light"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"vis.plot(generate_heat_example(batch(view_examples=2), spatial(x=64, y=64)));"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 390
|
"height": 390
|
||||||
},
|
},
|
||||||
"id": "BHtnPdL3S2eO",
|
"id": "BHtnPdL3S2eO",
|
||||||
"outputId": "7937d111-1c65-44fb-e11a-1f219cc8ecb1"
|
"outputId": "3dbf4cca-015b-4e9d-8274-acea430c6ecd",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
|
"text/plain": [
|
||||||
|
"<Figure size 864x360 with 4 Axes>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"needs_background": "light"
|
||||||
|
},
|
||||||
|
"output_type": "display_data"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"vis.plot(generate_heat_example(batch(view_examples=2), spatial(x=64, y=64)));"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false,
|
||||||
|
"id": "XURdC4v_S2eP"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"\n",
|
"\n",
|
||||||
"## Differentiable physics and gradient descent\n",
|
"## Differentiable physics and gradient descent\n",
|
||||||
@@ -174,14 +178,13 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"For the implementation below, we will simply use `y = diffuse.fourier(x, 8., 1)` for the forward pass, and then similarly compute an $L^2$ loss for two $y$ fields to which `diffuse.fourier( , 8., 1)` is applied.\n",
|
"For the implementation below, we will simply use `y = diffuse.fourier(x, 8., 1)` for the forward pass, and then similarly compute an $L^2$ loss for two $y$ fields to which `diffuse.fourier( , 8., 1)` is applied.\n",
|
||||||
"\n"
|
"\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"id": "XURdC4v_S2eP"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "EUIM1Av5vlfR"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Stable SIP gradients\n",
|
"## Stable SIP gradients\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -190,7 +193,9 @@
|
|||||||
"The frequency formulation of the heat equation can be inverted analytically, yielding\n",
|
"The frequency formulation of the heat equation can be inverted analytically, yielding\n",
|
||||||
"$\\hat x_k = \\hat y_k \\cdot e^{k^2 (t_* - t_0)}$.\n",
|
"$\\hat x_k = \\hat y_k \\cdot e^{k^2 (t_* - t_0)}$.\n",
|
||||||
"This allows us to define the update \n",
|
"This allows us to define the update \n",
|
||||||
|
"\n",
|
||||||
"$$\\Delta x_{\\text{PG}} = - \\eta \\cdot \\mathcal F^{-1}\\left( e^{k^2 (t_* - t_0)} \\mathcal F(y - y^*) \\right).$$\n",
|
"$$\\Delta x_{\\text{PG}} = - \\eta \\cdot \\mathcal F^{-1}\\left( e^{k^2 (t_* - t_0)} \\mathcal F(y - y^*) \\right).$$\n",
|
||||||
|
"\n",
|
||||||
"Here, high frequencies are multiplied by exponentially large factors, resulting in numerical instabilities.\n",
|
"Here, high frequencies are multiplied by exponentially large factors, resulting in numerical instabilities.\n",
|
||||||
"When applying this formula directly to the gradients, it can lead to large oscillations in $\\Delta x_{\\text{PG}}$.\n",
|
"When applying this formula directly to the gradients, it can lead to large oscillations in $\\Delta x_{\\text{PG}}$.\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -209,14 +214,17 @@
|
|||||||
"This leads to a much faster convergence and more precise solution than any generic optimization method.\n",
|
"This leads to a much faster convergence and more precise solution than any generic optimization method.\n",
|
||||||
"The cell below implements this probabilistic approach, with `probability_signal` in `apply_damping()` containing the parts of the signal to be dampened.\n",
|
"The cell below implements this probabilistic approach, with `probability_signal` in `apply_damping()` containing the parts of the signal to be dampened.\n",
|
||||||
"The `inv_diffuse()` functions employs it to compute a stabilized inverse diffusion process.\n"
|
"The `inv_diffuse()` functions employs it to compute a stabilized inverse diffusion process.\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "EUIM1Av5vlfR"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 20,
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "jJFlJlRwS2eP",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"def apply_damping(kernel, inv_kernel, amp, f_uncertainty, log_kernel):\n",
|
"def apply_damping(kernel, inv_kernel, amp, f_uncertainty, log_kernel):\n",
|
||||||
@@ -247,16 +255,14 @@
|
|||||||
" uncertainty = math.sqrt(math.sum(((f_uncertainty * kernel) ** 2))) / grid.shape.get_size('x') # 1/N normalization in iFFT\n",
|
" uncertainty = math.sqrt(math.sum(((f_uncertainty * kernel) ** 2))) / grid.shape.get_size('x') # 1/N normalization in iFFT\n",
|
||||||
" uncertainty = grid * 0 + uncertainty\n",
|
" uncertainty = grid * 0 + uncertainty\n",
|
||||||
" return grid.with_values(data), uncertainty, abs(amp), raw_kernel, kernel, sig_prob"
|
" return grid.with_values(data), uncertainty, abs(amp), raw_kernel, kernel, sig_prob"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"id": "jJFlJlRwS2eP"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false,
|
||||||
|
"id": "Prft7mS6S2eQ"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Neural network and loss function\n",
|
"## Neural network and loss function\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -264,15 +270,17 @@
|
|||||||
"We train with a batch size of 128 and a constant learning rate of $\\eta = 10^{-3}$, using 64 bit precision for physics but 32 bits for the network.\n",
|
"We train with a batch size of 128 and a constant learning rate of $\\eta = 10^{-3}$, using 64 bit precision for physics but 32 bits for the network.\n",
|
||||||
"The network updates are computed with TensorFlow's or PyTorch's automatic differentiation.\n",
|
"The network updates are computed with TensorFlow's or PyTorch's automatic differentiation.\n",
|
||||||
"\n"
|
"\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"id": "Prft7mS6S2eQ"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 21,
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "edLI4HnjS2eR",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"math.set_global_precision(64)\n",
|
"math.set_global_precision(64)\n",
|
||||||
@@ -282,16 +290,14 @@
|
|||||||
"math.seed(0)\n",
|
"math.seed(0)\n",
|
||||||
"net = u_net(1, 1)\n",
|
"net = u_net(1, 1)\n",
|
||||||
"optimizer = adam(net, 0.001)"
|
"optimizer = adam(net, 0.001)"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"id": "edLI4HnjS2eR"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false,
|
||||||
|
"id": "lkkXZc_kS2eR"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"Now we'll define loss function for phiflow.\n",
|
"Now we'll define loss function for phiflow.\n",
|
||||||
"The gradients for the network weights are always computed as d(loss_function)/d$\\theta$.\n",
|
"The gradients for the network weights are always computed as d(loss_function)/d$\\theta$.\n",
|
||||||
@@ -301,15 +307,17 @@
|
|||||||
"The Adam / GD version for `sip=False` simply computes the L2 difference of the predicted, diffused $y$ field to the target, and backprops through the operations for the gradient.\n",
|
"The Adam / GD version for `sip=False` simply computes the L2 difference of the predicted, diffused $y$ field to the target, and backprops through the operations for the gradient.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"We also compute the reference $y = \\mathcal P(x^*)$ in the loss function on-the-fly.\n"
|
"We also compute the reference $y = \\mathcal P(x^*)$ in the loss function on-the-fly.\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"id": "lkkXZc_kS2eR"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 22,
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "aUKHZMwkS2eR",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"# @math.jit_compile\n",
|
"# @math.jit_compile\n",
|
||||||
@@ -329,57 +337,39 @@
|
|||||||
" y = diffuse.fourier(prediction, 8., 1)\n",
|
" y = diffuse.fourier(prediction, 8., 1)\n",
|
||||||
" loss = y_l2 = field.l2_loss(y - y_target) # for Adam we backprop through the loss and y\n",
|
" loss = y_l2 = field.l2_loss(y - y_target) # for Adam we backprop through the loss and y\n",
|
||||||
" return loss, x, y, field.l2_loss(x_gt - x), y_l2\n"
|
" return loss, x, y, field.l2_loss(x_gt - x), y_l2\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"id": "aUKHZMwkS2eR"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false,
|
||||||
|
"id": "0L142o1OS2eS"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Training\n",
|
"## Training\n",
|
||||||
"\n",
|
"\n",
|
||||||
"In the training loop, we generate data on-the-fly via `generate_heat_example()` and use phiflow's `update_weights()` function to call the correct functions of the chosen backend. Note that we're only printing the loss of the first 5 steps below for clarity, the whole history is collected in the `loss_` lists. The following cell runs the SIP version of the training:\n"
|
"In the training loop, we generate data on-the-fly via `generate_heat_example()` and use phiflow's `update_weights()` function to call the correct functions of the chosen backend. Note that we're only printing the loss of the first 5 steps below for clarity, the whole history is collected in the `loss_` lists. The following cell runs the SIP version of the training:\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"id": "0L142o1OS2eS"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"source": [
|
"execution_count": null,
|
||||||
"loss_sip_x=[]; loss_sip_y=[] \n",
|
|
||||||
"for training_step in range(STEPS):\n",
|
|
||||||
" data = generate_heat_example(spatial(x=64, y=64), BATCH)\n",
|
|
||||||
" loss_value, x_sip, y_sip, x_l2, y_l2 = update_weights(net, optimizer, loss_function, net, data, sip=True)\n",
|
|
||||||
" loss_sip_x.append(float(x_l2.mean)) \n",
|
|
||||||
" loss_sip_y.append(float(y_l2.mean))\n",
|
|
||||||
" if(training_step<5): print(\"SIP L2 loss x ; y: \"+format(float(x_l2.mean))+\" ; \"+format(float(y_l2.mean)) )"
|
|
||||||
],
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
},
|
},
|
||||||
"id": "PK47PUNKaeA0",
|
"id": "PK47PUNKaeA0",
|
||||||
"outputId": "f275a0bb-6fab-412a-fcc7-e2a786b8fa8b"
|
"outputId": "4d938ed4-484b-46df-d0ca-d2268cb97dd0"
|
||||||
},
|
},
|
||||||
"execution_count": 23,
|
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stderr",
|
"name": "stderr",
|
||||||
"text": [
|
"output_type": "stream",
|
||||||
"/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3635: UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.\n",
|
"text": []
|
||||||
" \"See the documentation of nn.Upsample for details.\".format(mode)\n"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"SIP L2 loss x ; y: 187.2586057892786 ; 59.48433060883144\n",
|
"SIP L2 loss x ; y: 187.2586057892786 ; 59.48433060883144\n",
|
||||||
"SIP L2 loss x ; y: 70.21347147390776 ; 13.783476203544797\n",
|
"SIP L2 loss x ; y: 70.21347147390776 ; 13.783476203544797\n",
|
||||||
@@ -388,32 +378,48 @@
|
|||||||
"SIP L2 loss x ; y: 34.611490797378366 ; 3.359133206049436\n"
|
"SIP L2 loss x ; y: 34.611490797378366 ; 3.359133206049436\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"loss_sip_x=[]; loss_sip_y=[] \n",
|
||||||
|
"for training_step in range(STEPS):\n",
|
||||||
|
" data = generate_heat_example(spatial(x=64, y=64), BATCH)\n",
|
||||||
|
" loss_value, x_sip, y_sip, x_l2, y_l2 = update_weights(net, optimizer, loss_function, net, data, sip=True)\n",
|
||||||
|
" loss_sip_x.append(float(x_l2.mean)) \n",
|
||||||
|
" loss_sip_y.append(float(y_l2.mean))\n",
|
||||||
|
" if(training_step<5): print(\"SIP L2 loss x ; y: \"+format(float(x_l2.mean))+\" ; \"+format(float(y_l2.mean)) )"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"source": [
|
|
||||||
"And now we can repeat the training with the DP version using Adam, deactivating the SIP update via `sip=False`:"
|
|
||||||
],
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "32HFjc2y7noA"
|
"id": "32HFjc2y7noA"
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"source": [
|
||||||
"cell_type": "code",
|
"And now we can repeat the training with the DP version using Adam, deactivating the SIP update via `sip=False`:"
|
||||||
"execution_count": 24,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stderr",
|
|
||||||
"text": [
|
|
||||||
"/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3635: UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.\n",
|
|
||||||
" \"See the documentation of nn.Upsample for details.\".format(mode)\n"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"colab": {
|
||||||
|
"base_uri": "https://localhost:8080/"
|
||||||
|
},
|
||||||
|
"id": "0ENSdgZiS2eS",
|
||||||
|
"outputId": "9262848f-2838-4fc5-f36c-0a1d88a0f7af",
|
||||||
|
"pycharm": {
|
||||||
|
"name": "#%%\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
|
"text": []
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"GD L2 loss x ; y: 187.2586057892786 ; 59.48433060883144\n",
|
"GD L2 loss x ; y: 187.2586057892786 ; 59.48433060883144\n",
|
||||||
"GD L2 loss x ; y: 104.37856249315794 ; 20.323700695817763\n",
|
"GD L2 loss x ; y: 104.37856249315794 ; 20.323700695817763\n",
|
||||||
@@ -435,33 +441,46 @@
|
|||||||
" loss_gd_x.append(float(x_l2.mean)) \n",
|
" loss_gd_x.append(float(x_l2.mean)) \n",
|
||||||
" loss_gd_y.append(float(y_l2.mean))\n",
|
" loss_gd_y.append(float(y_l2.mean))\n",
|
||||||
" if(training_step<5): print(\"GD L2 loss x ; y: \"+format(float(x_l2.mean))+\" ; \"+format(float(y_l2.mean)) )"
|
" if(training_step<5): print(\"GD L2 loss x ; y: \"+format(float(x_l2.mean))+\" ; \"+format(float(y_l2.mean)) )"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"pycharm": {
|
|
||||||
"name": "#%%\n"
|
|
||||||
},
|
|
||||||
"id": "0ENSdgZiS2eS",
|
|
||||||
"colab": {
|
|
||||||
"base_uri": "https://localhost:8080/"
|
|
||||||
},
|
|
||||||
"outputId": "272f48e4-fadd-44d6-c8b3-3704c8135a9a"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "eV1j8lYuwUqB"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Evaluation\n",
|
"## Evaluation\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Now we can evaluate how the two variants behave in direct comparison. Note that due to the on-the-fly generation of randomized data, all samples are previously unseen, and hence we'll directly use the training curves here to draw conclusions about the performance of the two approaches.\n",
|
"Now we can evaluate how the two variants behave in direct comparison. Note that due to the on-the-fly generation of randomized data, all samples are previously unseen, and hence we'll directly use the training curves here to draw conclusions about the performance of the two approaches.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The following graph shows the $L^2$ error over training in terms of the reconstructed $x$ input, the main goal of our training."
|
"The following graph shows the $L^2$ error over training in terms of the reconstructed $x$ input, the main goal of our training."
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "eV1j8lYuwUqB"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"colab": {
|
||||||
|
"base_uri": "https://localhost:8080/",
|
||||||
|
"height": 300
|
||||||
|
},
|
||||||
|
"id": "uUkHS8Xljn7O",
|
||||||
|
"outputId": "b20fa929-c474-4b4c-be42-00f382c2fee8"
|
||||||
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
|
"text/plain": [
|
||||||
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"needs_background": "light"
|
||||||
|
},
|
||||||
|
"output_type": "display_data"
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"import pylab as plt\n",
|
"import pylab as plt\n",
|
||||||
"fig = plt.figure().gca()\n",
|
"fig = plt.figure().gca()\n",
|
||||||
@@ -469,44 +488,44 @@
|
|||||||
"fig.plot(pltx, loss_gd_x , lw=2, color='blue', label=\"GD\") \n",
|
"fig.plot(pltx, loss_gd_x , lw=2, color='blue', label=\"GD\") \n",
|
||||||
"fig.plot(pltx, loss_sip_x , lw=2, color='red', label=\"SIP\")\n",
|
"fig.plot(pltx, loss_sip_x , lw=2, color='red', label=\"SIP\")\n",
|
||||||
"plt.xlabel('iterations'); plt.ylabel('x loss'); plt.legend(); plt.yscale(\"log\")\n"
|
"plt.xlabel('iterations'); plt.ylabel('x loss'); plt.legend(); plt.yscale(\"log\")\n"
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"id": "uUkHS8Xljn7O",
|
|
||||||
"colab": {
|
|
||||||
"base_uri": "https://localhost:8080/",
|
|
||||||
"height": 300
|
|
||||||
},
|
|
||||||
"outputId": "aee621e7-d572-44fb-8100-43988e999ae1"
|
|
||||||
},
|
|
||||||
"execution_count": 25,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
|
||||||
],
|
|
||||||
"image/png": "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 truncated
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"needs_background": "light"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "-ZIRzk7ZwZ2x"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"The log-scale for the loss in $x$ nicely highlights that the SIP version does inherently better, and shows a significantly improved convergence for the NN training. This is purely caused by the better signal for the physics via the proxy loss. As shown in `loss_function()`, both variants use the same backprop-based update to change the weights of the NN. The improvements purely stem from the higher-order step in $y$ space computed by the inverse simulator.\n",
|
"The log-scale for the loss in $x$ nicely highlights that the SIP version does inherently better, and shows a significantly improved convergence for the NN training. This is purely caused by the better signal for the physics via the proxy loss. As shown in `loss_function()`, both variants use the same backprop-based update to change the weights of the NN. The improvements purely stem from the higher-order step in $y$ space computed by the inverse simulator.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Just out of curiosity, we can also compare how the two versions compare in terms of difference in the output space $y$."
|
"Just out of curiosity, we can also compare how the two versions compare in terms of difference in the output space $y$."
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "-ZIRzk7ZwZ2x"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"colab": {
|
||||||
|
"base_uri": "https://localhost:8080/",
|
||||||
|
"height": 300
|
||||||
|
},
|
||||||
|
"id": "KcJemrzNu6dm",
|
||||||
|
"outputId": "84bf4c24-9d8b-4f4a-a0d4-fbb6dfa569d8"
|
||||||
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
|
"text/plain": [
|
||||||
|
"<Figure size 432x288 with 1 Axes>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"needs_background": "light"
|
||||||
|
},
|
||||||
|
"output_type": "display_data"
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"fig = plt.figure().gca()\n",
|
"fig = plt.figure().gca()\n",
|
||||||
"pltx = range(len(loss_gd_y)) \n",
|
"pltx = range(len(loss_gd_y)) \n",
|
||||||
@@ -514,84 +533,67 @@
|
|||||||
"fig.plot(pltx, scipy.ndimage.filters.gaussian_filter1d(loss_gd_y,sigma=2) , lw=2, color='blue', label=\"GD\") \n",
|
"fig.plot(pltx, scipy.ndimage.filters.gaussian_filter1d(loss_gd_y,sigma=2) , lw=2, color='blue', label=\"GD\") \n",
|
||||||
"fig.plot(pltx, scipy.ndimage.filters.gaussian_filter1d(loss_sip_y ,sigma=2), lw=2, color='red', label=\"SIP\")\n",
|
"fig.plot(pltx, scipy.ndimage.filters.gaussian_filter1d(loss_sip_y ,sigma=2), lw=2, color='red', label=\"SIP\")\n",
|
||||||
"plt.xlabel('iterations'); plt.ylabel('y loss'); plt.legend(); plt.yscale(\"log\")\n"
|
"plt.xlabel('iterations'); plt.ylabel('y loss'); plt.legend(); plt.yscale(\"log\")\n"
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"colab": {
|
|
||||||
"base_uri": "https://localhost:8080/",
|
|
||||||
"height": 300
|
|
||||||
},
|
|
||||||
"id": "KcJemrzNu6dm",
|
|
||||||
"outputId": "d3f1bf55-4673-44a8-8793-a58c99442753"
|
|
||||||
},
|
|
||||||
"execution_count": 26,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"<Figure size 432x288 with 1 Axes>"
|
|
||||||
],
|
|
||||||
"image/png": "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 truncated
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"needs_background": "light"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "DeSQEpHB0Tip"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"There's likewise an improvements for SIPs, but it is not as pronounced as in $x$ space. Luckily, the $x$ reconstruction is the primary target, and hence of higher importance for the inverse problem at hand.\n",
|
"There's likewise an improvements for SIPs, but it is not as pronounced as in $x$ space. Luckily, the $x$ reconstruction is the primary target, and hence of higher importance for the inverse problem at hand.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The differences in terms of $L^2$ error are also very obvious in direct comparison. The following cell plots a reconstruction from GD & Adam next to the SIP version, and the ground truth on the right. The difference is obvious: the SIP reconstruction is significantly sharper, and contains fewer halos than the GD version. This is a direct consequence of the undesirable behavior of GD applying diffusion to the backpropagated gradient, instead of working against it."
|
"The differences in terms of $L^2$ error are also very obvious in direct comparison. The following cell plots a reconstruction from GD & Adam next to the SIP version, and the ground truth on the right. The difference is obvious: the SIP reconstruction is significantly sharper, and contains fewer halos than the GD version. This is a direct consequence of the undesirable behavior of GD applying diffusion to the backpropagated gradient, instead of working against it."
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "DeSQEpHB0Tip"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"source": [
|
"execution_count": null,
|
||||||
"vis.plot(x_gd.values.batch[0], x_sip.values.batch[0], data.values.batch[0]);"
|
|
||||||
],
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "gNvf0FuxwfdF",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 390
|
"height": 313
|
||||||
},
|
},
|
||||||
"outputId": "dbea2b17-baf0-43a7-bceb-43921beb4b97"
|
"id": "gNvf0FuxwfdF",
|
||||||
|
"outputId": "e83e2cd5-a7ee-46d5-a679-637a11c0e822"
|
||||||
},
|
},
|
||||||
"execution_count": 27,
|
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 864x360 with 6 Axes>"
|
"<Figure size 1080x288 with 6 Axes>"
|
||||||
],
|
]
|
||||||
"image/png": "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 truncated
|
|
||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"needs_background": "light"
|
"needs_background": "light"
|
||||||
|
},
|
||||||
|
"output_type": "display_data"
|
||||||
}
|
}
|
||||||
}
|
],
|
||||||
|
"source": [
|
||||||
|
"plt = vis.plot(x_gd.values.batch[0], x_sip.values.batch[0], data.values.batch[0], size=(15,4) )\n",
|
||||||
|
"plt.get_axes()[0].set_title(\"Adam\"); plt.get_axes()[1].set_title(\"SIP\"); plt.get_axes()[2].set_title(\"Reference\");\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "pC5xFvjv7wGz"
|
||||||
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Next steps\n",
|
"## Next steps\n",
|
||||||
"\n",
|
"\n",
|
||||||
"* For this example, it's worth experimenting with various training parameters: run the training longer, with varying learning rates, and different network sizes (or even different architectures).\n"
|
"* For this example, it's worth experimenting with various training parameters: run the training longer, with varying learning rates, and different network sizes (or even different architectures).\n"
|
||||||
],
|
]
|
||||||
"metadata": {
|
|
||||||
"id": "pC5xFvjv7wGz"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
"colab": {
|
||||||
|
"collapsed_sections": [],
|
||||||
|
"name": "Heat-SIP-forPBDL.ipynb",
|
||||||
|
"provenance": []
|
||||||
|
},
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python 3",
|
"display_name": "Python 3",
|
||||||
"language": "python",
|
"language": "python",
|
||||||
@@ -608,11 +610,6 @@
|
|||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython2",
|
"pygments_lexer": "ipython2",
|
||||||
"version": "2.7.6"
|
"version": "2.7.6"
|
||||||
},
|
|
||||||
"colab": {
|
|
||||||
"name": "Heat-SIP-forPBDL.ipynb",
|
|
||||||
"provenance": [],
|
|
||||||
"collapsed_sections": []
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|||||||
Reference in new issue
Block a user