From 10d2815754918a6c52dccafb390942fa885722fb Mon Sep 17 00:00:00 2001 From: NT Date: Fri, 18 Mar 2022 13:57:00 +0800 Subject: [PATCH] updated PG simple example --- json-cleanup-for-pdf.py | 2 + physgrad-comparison.ipynb | 90 +++++++++++++++++---------------------- 2 files changed, 40 insertions(+), 52 deletions(-) diff --git a/json-cleanup-for-pdf.py b/json-cleanup-for-pdf.py index 1f08347..a7e820c 100644 --- a/json-cleanup-for-pdf.py +++ b/json-cleanup-for-pdf.py @@ -16,6 +16,7 @@ fileList = [ "diffphys-code-burgers.ipynb", "diffphys-code-ns.ipynb", "diffphys-code-sol.ipynb", "physicalloss-code.ipynb", # TF "bayesian-code.ipynb", "supervised-airfoils.ipynb", # pytorch "reinflearn-code.ipynb", # phiflow + "physgrad-comparison.ipynb", # jax ] #fileList = [ "diffphys-code-burgers.ipynb"] # debug, only 1 file @@ -53,6 +54,7 @@ for fnOut in fileList: res.append( re.compile(r"InsecureRequestWarning") ) # for https download res.append( re.compile(r"Building wheel") ) # phiflow install, also gives weird unicode characters res.append( re.compile(r"warnings.warn") ) # phiflow warnings + res.append( re.compile(r"WARNING:absl") ) # jax warnings # remove all "warnings.warn" from phiflow? # shorten data line: "0.008612174447657694, 0.02584669669548606, 0.043136357266407785" diff --git a/physgrad-comparison.ipynb b/physgrad-comparison.ipynb index f39d832..5c17e93 100644 --- a/physgrad-comparison.ipynb +++ b/physgrad-comparison.ipynb @@ -67,7 +67,7 @@ "source": [ "## Implementation\n", "\n", - "For this example we'll use the [JAX framework](https://github.com/google/jax), which represents a nice alternative to pytorch and tensorflow for efficiently working with differentiable functions.\n", + "For this example we'll use the [JAX framework](https://github.com/google/jax), which represents a nice alternative for efficiently working with differentiable functions.\n", "JAX also has a nice numpy wrapper that implements most of numpy's functions. Below we'll use this wrapper as `np`, and the _original_ numpy as `onp`.\n", "\n" ] @@ -98,9 +98,7 @@ { "name": "stderr", "output_type": "stream", - "text": [ - "WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" - ] + "text": [] }, { "name": "stdout", @@ -284,7 +282,7 @@ { "data": { "text/plain": [ - "Text(0, 0.5, 'x1')" + "" ] }, "execution_count": 5, @@ -293,7 +291,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -309,10 +307,9 @@ "axes = plt.figure(figsize=(4, 4), dpi=100).gca()\n", "historyGD = onp.asarray(historyGD)\n", "updatesGD = onp.asarray(updatesGD) # for later\n", - "axes.scatter(historyGD[:,0], historyGD[:,1], lw=0.5, color='blue')\n", + "axes.scatter(historyGD[:,0], historyGD[:,1], lw=0.5, color='blue', label='GD')\n", "axes.scatter([0], [0], lw=0.25, color='black', marker='x') # target at 0,0\n", - "axes.set_xlabel('x0')\n", - "axes.set_ylabel('x1')" + "axes.set_xlabel('x0'); axes.set_ylabel('x1'); axes.legend()" ] }, { @@ -406,7 +403,7 @@ { "data": { "text/plain": [ - "Text(0, 0.5, 'x1')" + "" ] }, "execution_count": 7, @@ -415,7 +412,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -430,11 +427,10 @@ "axes = plt.figure(figsize=(4, 4), dpi=100).gca()\n", "historyNt = onp.asarray(historyNt)\n", "updatesNt = onp.asarray(updatesNt) \n", - "axes.scatter(historyGD[:,0], historyGD[:,1], lw=0.5, color='blue')\n", - "axes.scatter(historyNt[:,0], historyNt[:,1], lw=0.5, color='orange')\n", + "axes.scatter(historyGD[:,0], historyGD[:,1], lw=0.5, color='blue', label='GD')\n", + "axes.scatter(historyNt[:,0], historyNt[:,1], lw=0.5, color='orange', label='Newton')\n", "axes.scatter([0], [0], lw=0.25, color='black', marker='x') # target at 0,0\n", - "axes.set_xlabel('x0')\n", - "axes.set_ylabel('x1')" + "axes.set_xlabel('x0'); axes.set_ylabel('x1'); axes.legend()" ] }, { @@ -531,7 +527,7 @@ { "data": { "text/plain": [ - "Text(0, 0.5, 'x1')" + "" ] }, "execution_count": 9, @@ -540,7 +536,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAFtCAYAAADrr7rKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAi1UlEQVR4nO3df5RcZZ3n8fe3kiawSXczjppAk5ggJxgFG4SjJstBhI0iEn44MnpcZ8m6M4JLn6jrOks2jKsjMTPOWSSztJpVR8joOPwX0qMOP4aB3TUtI9E0ohFkTSRpSFCR7tYloUl/94+nCivVdauruqvqPrfu53XOPUXdem7Vk6L6U7fufe73MXdHRETyoZB2B0REpH0U+iIiOaLQFxHJEYW+iEiOKPRFRHJEoS8ikiMKfRGRHFHoi4jkyPy0O9BuZmbAqcBE2n0REWmibuApn+GK29yFPiHwD6bdCRGRFjgNGK3VII+hPwFw4MABenp60u6LiMicjY+Ps3TpUqjjCEYeQx+Anp4ehb6I5I5O5IqI5IhCX0QkRxT6IiI5otAXEckRhb6ISI4o9EVEIuLHplr6/KmGvpl9yMweMbPx4jJsZu+YYZtrzOwnZnbEzH5oZpe1q78iIq0w8eRTHLygnxd/fz5TL+/ixd+fz8EL+pl48qmmv1bae/oHgRuB84DzgfuBu8zsddUam9ka4BvAV4BzgR3ADjM7qy29FRFpsoknn+KEN51O365HmP/sMeY9N8X8Z4/RN/wIJ7zp9KYHv8U2MbqZPQt83N2/UuWxO4GF7n552brvAnvc/fo6n78HGBsbG9PFWSKSuoMX9NO36xGsShR7AUbX9HPa/95T8znGx8fp7e0F6HX38Vpt097Tf4mZzTOz9wILgeGEZquB+yrW3V1cn/S8C8ysp7QQihKJiERhyd4fVQ18AJuCJT/+UVNfL/XQN7Ozzew3wFHgi8DV7v7jhOZLgMMV6w4X1yfZCIyVLSq2JiJR8GNT2FTtoy02NdXUk7uphz7wGHAO8CbgC8AdZvbaJj7/FqC3bDmtic8tIjJrNq+AF6xmGy8YNq95UZ166Lv7C+7+hLvvdveNwAjw4YTmh4DFFesWF9cnPf9Rdx8vLaiOvohE5NCq1+EJSewFOPTa5o5TST30qygACxIeGwYuqVi3luRzACIiUev9u2/zwisXTAt+L8ALr1xA79e/1dTXS3uc/hYzu9DMlheP7W8BLgK+Xnx8e3FdyVbgUjP7mJm9xsw+SRjqeVu7+y4i0gzdy07lhYd+xuiafl582XyOnVzgxZfNZ3RNPy889DO6l53a1NdLu57+K4HtwCmEk6yPAG9393uLjy8DXjqD4e67zOx9wM3AZ4CfAle5+6Nt7bWISBN1LzuV7uKwTD82hc0rtOzkY3Tj9FtN4/RFpNNkcpy+iIi0nkJfRCRHFPoiIjmi0BcRyRGFvohIjij0RURyRKEvIpIjCn0RkRxR6IuI5IhCX0QkRxT6IiI5otAXEckRhb6ISI4o9EVEckShLyKSIwp9EZEcUeiLiOSIQl9EJEcU+iIiOaLQF5HqcjZ/dl7MT7sDIhKRyQkY2QSjQzA1CYUu6FsH/Zuhqzvt3kkTKPRFJJicgHtWw9heYOp36x8fhMP3w9uGFfwdQId3RCQY2TQ98CHcH9sLIzel0StpMoW+iASjQ0wP/JIpGN3Zzt5Iiyj0RSSctJ2arN1malIndzuAQl9EwCyctK2l0BXaSaYp9EUk6FtHciQUoO+KdvZGWkShLyJB/2boXcX0WCiE9f03p9EraTKFvogEXd1hWObKAVi4HE7qC7crBzRcs4OY5+zEjJn1AGNjY2P09PSk3R2ReLnrGH5GjI+P09vbC9Dr7uO12mpPX0SqU+B3JIW+iEiOKPRFRHJEoS8ic5Oz84JZp9AXkcZNTMCGDbBiBSxdGm43bAjrJWqphr6ZbTSz75nZhJk9Y2Y7zOzMGbZZb2ZesRxpV59Fcm9iAlavhsFB2L8fRkfD7eBgWK/gj1rae/pvAQaBNwNrgS7gHjNbOMN248ApZcurWtlJESmzaRPs3QtTFcXZpqbC+ptUjTNmqYa+u1/q7re7+4/cfQRYDywDzpt5Uz9UthxueWdFJBgamh74JVNTsFPVOGOW9p5+pd7i7bMztFtkZj83swNmdpeZvS6poZktMLOe0gLoskKR2XKHyRmqcU6qGmfMogl9MysAtwLfcfdHazR9DPgAcCXwfsK/YZeZnZbQfiMwVrYcbFafRXLHDLpmqMbZpWqcMYsm9AnH9s8C3lurkbsPu/t2d9/j7g8C7wJ+AVyXsMkWwi+I0pL05SAi9Vi3DgoJ0VEowBWqxhmzKELfzG4DLgfe6u4N7Ym7+yTwA+CMhMePuvt4aQE0tEBkLjZvhlWrpgd/oRDW36xqnDFLe8imFQP/auBid983i+eYB5wNPN3s/olIFd3dMDwMAwOwfDn09YXbgYGwvlunzWKWapVNM/s88D7C8fnHyh4ac/fni222A6PuvrF4/xPAd4EngJOBjwNXAee5+4/reE1V2RRpJlXjTF0jVTbnt6dLiT5UvH2gYv2/B24v/vcyjp+t+feALwFLgF8Du4E19QS+iLSAAj9TVE9fRCTjVE9fpJlytmMknS3twzsicZqcgJFNMDoEU5NQ6AoTh/dv1rSBkmkKfZFKkxNwz2oY28txp5MeH4TD92u+WMk0Hd4RqTSyaXrgQ7g/thdGVFBMskuhL1JpdIjpgV8yBaMqKCbZpdAXKecejuHXMqWCYpJdCn2RcmbhpG0tBRUUk+xS6ItU6ltH8p9GAfpUUEyyS6EvUql/M/SuYvqfRyGs71dBMckuhb5Ipa7uMCxz5QAsXA4n9YXblQMarimZpzIMIjNRQTGJnMowiDSTAl86iEJfRCRHFPoiIjmi0BcRyRGFvohIjij0RURyRKEvIpIjCn0RkRxR6IuI5IhCX0QkRxT6IiI5otAXEckRhb6ISI4o9CU9OavwKhKD+Wl3QHJmcgJGNoXJx6cmw9SDfevCxCWdUqdepZglYtrTl/aZnIB7VsPjg/Db/fD8aLh9fDCsn5xIu4ezNzEBGzbAihWwdGm43bAhrBeJiCZRkfZ5eEMIeKaqPFgIM1Odv7XdvZq7iQlYvRr27oWpsn9boQCrVsHwMHR3yK8YiZImUZE4jQ5RPfAJ60d3trM3zbNp0/TAh3B/71646aZ0+iVShUJf2sM9HMOvZWoymyd3h4amB37J1BTszOiXmXQkhb60h1k4aVtLoSt7J0DdYXKGL7PJjH6ZSUdS6Ev79K0j+SNXgL4r2tmb5jCDrhm+zLoy+GUmHUuhL+3Tvxl6VzH9Y1cI6/tvTqNXc7duXThpW02hAFdk8MtMOpZG70h7TU7AyE3hpO1L4/SvCIGf1XH6Gr0jKWtk9I5CX9LTSRcxTUyEUTo7d4Zj+F1dYQ//5psV+NJymQl9M9sIvAt4DfA8sAv4L+7+2AzbXQN8GlgO/LS4zbfqfE2FvrRWJ32ZSSZkaZz+W4BB4M3AWqALuMfMFiZtYGZrgG8AXwHOBXYAO8zsrJb3VqQeCnyJWFSHd8zsFcAzwFvc/X8ltLkTWOjul5et+y6wx92vr+M1tKcvIh0lS3v6lXqLt8/WaLMauK9i3d3F9dOY2QIz6yktgA6wikhuRRP6ZlYAbgW+4+6P1mi6BDhcse5wcX01G4GxsuXg3HoqIpJd0YQ+4dj+WcB7m/y8Wwi/IErLaU1+fhGRzIiinr6Z3QZcDlzo7jPtiR8CFlesW1xcP427HwWOlr3WHHoqItI8aQz0SnVP34LbgKuBi919Xx2bDQOXVKxbW1wvIhK1tKdeSHuc/ueB9wFXAuVj88fc/flim+3AqLtvLN5fAzwI3Ah8k3A46L8Cb5jhXEDpNTV6R0RS0aqLt7M0eudDhOPsDwBPly3vKWuzDDildMfddxG+KD4IjADvBq6qJ/BFRNIUw9QLUY3Tbwft6YtIWlasgP37kx9fvhz21XOQu0KW9vQlJjnbARBpp1imXohi9I6kaHICRjaFqQxfqnq5LpRBzmrVS5EIxTL1gvb082xyAu5ZHSYr/+1+eH403D4+GNZPtmk4gUhOxDD1gkI/z0Y2wdhepk9WPhXWj2hCb5Fm2rw5jNKpDP7S6J2b2zCPkEI/z0aHmB74JVNhohMRaZru7jAsc2AgnLTt6wu3AwPtm2tHx/Tzyj0cw69lalK14UWarLsbtm4NS+6uyJUUmYWTtrUUNKG3SCul8eel0M+zvnUkfwQKYe5aEekoCv08698MvauY/jEohPX9bTirJCJtpdDPs65ueNswrByAhcvhpL5wu3IgrNc4fZGOozIM8jtZOGmbhT6KtJnKMMjsxBqmadeiFekg2tOXuLWqFq1IB9GevnSOGGrRinQQhb7EbWhoeuCXTE3BTl01LNIIhb7EK5ZatCIdRKEv8YqlFq1IB1HoS9xiqEUr0kEU+hK3GGrRinQQhX7Wdfrx7Bhq0Yp0EI3Tz6I8T3GoK3JFpmlknL7q6WdNaYrDyhmvHh+Ew/d3fs0cBb5kUEz7Kjq8kzWa4lAkE2KtHqLDO1lz14oweXmShcvhyn3t6o2IVNHu6iEqw9CpGpniUERSE3P1EIV+lmiKQ5FMiLl6iEI/azTFoUjUYq8eotDPGk1xKBK12KuHKPSzRlMcikQv5uohGr2TdTENABYRQKN3pJUU+CLRibl6iPb0RURarNU/yLWnLyISkZh+kCv0RURypGmhb2arzOxnDW5zoZkNmdlTZuZmdtUM7S8qtqtclsyp8yIiOdHMPf0TgFc1uM1CYAS4ocHtzgROKVueaXB7EZFcqru0spndMkOTVzT64u7+beDbxedvZNNn3P25Rl8vE7I0BDNLfRURoLF6+h8G9gBJZ4YXzbk39dtjZguAR4FPuvt32vjazZelSVEmJkI1qaGhcC15V1e4EmXzZs1iJUL8+0J1D9k0s8eAT7v71xIePwfY7e7zZtURMweudvcdNdqcCVwEPAwsAP4Y+CPgTe7+/YRtFhTblnQDB6MZspk0KUqprEJMV9m2+4oTkYxIe1+oVUM2HwbOq/G4Ay39fnP3x9x9m7vvdvdd7v4BYBfw0RqbbQTGypaDrexjw7I0KUrM9WJFUlLaFxochP37YXQ03A4OhvVpT5pSqZHQ/xhwa9KD7j7i7mkMAf0X4Iwaj28BesuW09rRqbqNDjE98EumYDTFGqyVYq4XK5KSrO0L1R3S7n7I3X9uZm9NamNm1zWnWw05B3g66UF3P+ru46UFiOd7N0uTosReL1YkJVnbF5rNnvk/mtlfmdlLxUPN7OVmNgT8RSNPZGaLzOyc4vkAgBXF+8uKj28xs+1l7T9iZlea2RlmdpaZ3QpcDAzO4t+RvixNihJ7vViRFGRxX2g2of9W4Grge2b2WjN7J2EUTQ9hr7sR5wM/KC4AtxT/+8+L908BlpW1PwH478APgQeBfuDfuPs/Nf7PiESWJkWJuV6sSAqyuC80q4JrZrYI+CLwbkJi/RnwWc9A9bboCq5p9I5Ipm3YEE7aVjvEUyiEyppbt7a2D+0ouLaSsJd+EHiRcIXsv5rlc+VbliZFiblerEhKNm8O+zyVP4JL+0I3RzaZXcN7+mZ2I/Ap4H8CHyeMnPlbwuGd97v7cLM72UzR7elXiv3KjnJZ6qtIC01MhFE6O3f+bpz+FVeEwI9tnP5sQv9p4APFEgqldV3AZ4AN7r4gceMIRB/6IpJpaewLNRL6jZRhKDnb3X9ZvsLdJ4GPm9k/zOL5REQ6Ruw/fhs+pl8Z+BWPPTi37oiIZEP8w1aq0yQqIiJ1mpgIo3VWrIClS8Pthg3xlVqoRXPktptOfopkUswjljVHbmwmJ+DhDXDXCtixNNw+vCGsF5FMyFqNnSTa02+1LF18JSKJVqwI1TOTLF8O+/a1qzfH055+TLJUOllEqspijZ0kCv1Wy1LpZBGpKos1dpIo9FspS6WTRaSmTqk3qNBvpSyVThaRRO7Zq7GTRKHfajGVTtYvCpG6VY7Jf/3r4YIL4IMfzHa9QY3eabW0R++kPWOzSAbVMyZ/0aJ4fqS3tOBa1qVycdbkRBilM7ozHMMvdIU9/P6bWx/4sV5NIhKxGGrkN0KhX0OursjN2idXJBIxj8mvRuP0Y9bO34NZm7FZJAKdNCa/GoV+p+r0T65Ii3TSmPxqFPqtknaYdvonV6RF3DtnTH41Cv1miq2wWid/ckWaqHJ45l13wcknT98nytqY/Gp0IrdZ0h6aWY1G74jMqNafycknh6GZx461f97bRuhEbhpiLKzW3R2CfWAg21eTiLRQrZLJzz0HV10FBw6E0Tpbt2b/z0Z7+s1y1wr47f7kxxcuhytTHuOlCVxEpsna8MxqtKffblkprKbAFzlOHge5KfSbQYXVRDIrb4PcFPrNElNhNRFJVDlS51e/Sm7biYPcdEy/WWIcvSMix0kaqVNNlga56Zh+Grq6Q7CvHAgnbU/qC7crBxT4IpFIGqkD4RBOd3fnD3LTnn6raKSMSHTqGanzs59l709Xe/oxyNqnRqTDTU3VN1Kn0yn0mylnv5pEYld+0nbZMjh0qHb7ThupU838tDuQeZMT4Wrc0aGyCVLWQf/m1h3H16EjkRk1ctIWOnOkTjXa05+L0oidxwfD1bjPj4bbxwfD+mYWWqscZ7ZiRbg/kVIxN5HI1TppW6kTCqnVSydy5+LhDSHgp9XbASiEkTvnN2FmKhVOE2mIO5x+eu2TtvPnw+LFcRdSq1dmTuSa2YVmNmRmT5mZm9lVdWxzkZl938yOmtkTZra+9T1NMDpE9cAnrB9t0sxUtSpC7d0LN6VQzE0kMpU/hg8cqN1+8WJ48snOKaRWr7QP7ywERoAb6mlsZiuAbwL/DJwD3Ap82cze3qL+JWtnvR1NeyhSU+nH8OBg2LsfHQ3lkGvp6kqebqKTpXoi192/DXwbwOo7MXk9sM/dP1a8v9fMLgA+Ctzdkk4maVe9nUYqQunkruRUI8fvIT8nbavJ2vfcauC+inV3F9dXZWYLzKyntADN+xHXjno7mvZQZEY7dzYW+Hk5aVtN1kJ/CXC4Yt1hoMfMTkrYZiMwVrYcbFpv+jeHujrT3sZivZ3+Jn2qNO2hyDTlx/BnOn4/bx6cempnl1eoVx7G6W8Bbim7302zgr9Ub2fkpnDS9qVx+leEwG/WOP3Nm+H++5NH7+R1l0Vyq9Ex+EuXZrO8QitkLfQPAYsr1i0Gxt39+WobuPtR4Gjpfp3nDuo3f1EYlnn+1tYdVy9Ne3jTTeF37ORkZ4wzE5mlRsfgX3GFAr8kmnH6ZubA1e6+o0abvwQuc/ezy9b9HfAyd7+0zteZ+zj9NK7CLaeTtpJzMxVOK8nLpSyNjNNPdU/fzBYBZ5StWmFm5wDPuvuTZrYF6HP3f1d8/IvAgJl9Fvgb4GLgD4F3tq3TSXXzHx+Ew/e3p4yyAl9yrJ4BbYVCOKRz5ZX6MVwp7cM75xPG3JeUjr3fAawHTgGWlR50931m9k7gc8CHCcfm/9jd2zdcc2RTlYlSCPfH9obj+824CldEqqpnQNuyZfFPZp6WVEfvuPsD7m5VlvXFx9e7+0VVtjnX3Re4+6vd/fa2drpdV+GKSCINaJu9rA3ZTFc7r8IVkUSbN4dj9ZXBrwFtM1PoN6LVV+Hqy0KkLqUBbQMDYex9p09x2EwK/UY1+ypclUwWmZXu7lAobd++cHFW3gqnzVY0QzbbZc5DNpNG75Suwm1k9I5KJotIE2SmtHImla7CXTkAC5fDSX3hduVA48M1VTJZRNpMe/pzNZcLpWa6wmT5co07E5EZaU+/neZy0rbekskiIk2i0E+LSiaLSAoU+mnSFSYi0mYK/TTpChMRaTOFfpp0hYmItJlG78REJZNFZBY0eierFPgi0mIKfRGRHFHot1vODqeJSFwU+u2gomoiEgmdyG01FVUTkRbTidyYqKiaiEREod9qQ0PTA79kagp2anpFEWkfhX4rqaiaiERGod9KKqomIpFR6LeaiqqJSEQU+q2momoiEhGFfqupqJqIRETj9NtNRdVEpMk0Tj8W1b5QFfgikiKFfrOp5IKIREyHd5pJJRdEJAU6vJMWlVwQkcgp9JtJJRdEJHIK/WZRyQURyQCFfrOo5IKIZIBCv5lUckFEIqfQbyaVXBCRyCn0m2nRIpVcEJGoRRH6ZnaDme03syNm9pCZvbFG2/Vm5hXLkXb29ziVF2O9/vXhZO0jj8CBA7BvH2zdqsAXkSjMT7sDZvYe4BbgeuAh4CPA3WZ2prs/k7DZOHBm2f10hsQkXYw1OAj336+9exGJTgx7+v8J+JK7f9Xdf0wI//8HfKDGNu7uh8qWw23paSVdjCUiGZNq6JvZCcB5wH2lde4+Vby/usami8zs52Z2wMzuMrPX1XiNBWbWU1qA5u1662IsEcmYtPf0Xw7MAyr31A8DSxK2eYzwK+BK4P2Ef8MuMzstof1GYKxsOTjHPge6GEtEMijt0G+Yuw+7+3Z33+PuDwLvAn4BXJewyRagt2xJ+nJojC7GEpEMSjv0fwkcAxZXrF8MHKrnCdx9EvgBcEbC40fdfby0AM2rcayLsUQkY1INfXd/AdgNXFJaZ2aF4v3hep7DzOYBZwNPt6KPNeliLBHJmLT39CEM1/wTM7vWzFYBXwAWAl8FMLPtZral1NjMPmFmbzOz083sDcDXgFcBX257zzX/rYhkTOrj9N39TjN7BfDnhJO3e4BLy4ZhLgPKh8j8HvClYttfE34prCkO92y/7u5w8dXWrZr/VkSip5mzREQyTjNniYhIVQp9EZEcUeiLiOSIQl9EJEcU+iIiOaLQFxHJEYW+iEiOKPRFRHJEoS8ikiMKfRGRHFHoi4jkiEJfRCRHFPoiIjmi0BcRyRGFvohIjij0RURyRKEvIpIjCn0RkRxR6IuI5IhCX0QkRxT6IiI5otAXEckRhb6ISI4o9EVEckShLyKSIwp9EZEcUeiLiOSIQl9EJEcU+iIiOaLQFxHJEYW+iEiOKPRFRHJEoS8ikiMKfRGRHFHoi4jkSBShb2Y3mNl+MztiZg+Z2RtnaH+Nmf2k2P6HZnZZK/o1NDTEkSNHqj525MgRhoaGWvGyIiItk3rom9l7gFuATwFvAEaAu83slQnt1wDfAL4CnAvsAHaY2VnN7tvatWvZtm3btOA/cuQI27ZtY+3atc1+SRGRljJ3T7cDZg8B33P3geL9AnAA+B/u/hdV2t8JLHT3y8vWfRfY4+7X1/F6PcDY2NgYPT09M/avFPDXXXcdJ5544rT7IiJpGx8fp7e3F6DX3cdrtU11T9/MTgDOA+4rrXP3qeL91QmbrS5vX3R3UnszW2BmPaUF6G6kjyeeeCLXXXcd27Zt47nnnlPgi0imzU/59V8OzAMOV6w/DLwmYZslCe2XJLTfCPy32XYQQvBfe+21nHfeeezevVuBLyKZlfox/TbYAvSWLac1+gRHjhzhjjvuYPfu3dxxxx2JJ3dFRGKXduj/EjgGLK5Yvxg4lLDNoUbau/tRdx8vLcBEIx0sP4Z/8sknv3SoR8EvIlmUaui7+wvAbuCS0rriidxLgOGEzYbL2xetrdF+1qqdtC0/xq/gF5GsSXtPH8JwzT8xs2vNbBXwBWAh8FUAM9tuZlvK2m8FLjWzj5nZa8zsk8D5wG3N7ti9995b9aRtKfjvvffeZr+kiEhLpT5kE8DMBoCPE07G7gE2uPtDxcceAPa7+/qy9tcANwPLgZ8Cf+ru36rztRoasikiErtGhmxGEfrtpNAXkU6TmXH6IiLSXgp9EZEcUeiLiOSIQl9EJEcU+iIiOaLQFxHJkbQLrqVmfLzmqCYRkcxoJM/yOE6/DziYdj9ERFrgNHcfrdUgj6FvwKk0WHiNUIf/IKFKZ6Pbpk19T4f6no689r0beMpnCPXcHd4pviE1vwmrCd8VAEzMdMVbbNT3dKjv6chx3+tqrxO5IiI5otAXEckRhX79jgKfKt5mjfqeDvU9Hep7Dbk7kSsikmfa0xcRyRGFvohIjij0RURyRKEvIpIjCv0yZnaDme03syNm9pCZvXGG9teY2U+K7X9oZpe1q69V+lJ3381svZl5xXKknf0t68uFZjZkZk8V+3FVHdtcZGbfN7OjZvaEma1vfU+r9qOhvhf7Xfm+u5ktaVOXS/3YaGbfM7MJM3vGzHaY2Zl1bJf65302fY/l825mHzKzR8xsvLgMm9k7Ztim6e+5Qr/IzN4D3EIYLvUGYAS428xemdB+DfAN4CvAucAOYIeZndWWDh/fl4b6XjQOnFK2vKrV/UywkNDfG+ppbGYrgG8C/wycA9wKfNnM3t6i/tXSUN/LnMnx7/0zTe7XTN4CDAJvBtYCXcA9ZrYwaYOIPu8N970ohs/7QeBG4DzgfOB+4C4ze121xi17z91dSxi2+hBwW9n9AqFcw40J7e8E/qFi3XeBL2ag7+uB59J+z6v0y4GrZmjzl8CjFev+HvjHDPT9omK7k9N+ryv69Ypivy6s0Saaz/ss+h7l573Yt2eB/9DO91x7+oCZnUD49r2vtM7dp4r3Vydstrq8fdHdNdq3xCz7DrDIzH5uZgfMLHFvI0JRvO9ztMfMnjaze83sX6fdGaC3ePtsjTaxvu/19B0i+7yb2Twzey/h1+JwQrOWvOcK/eDlwDzgcMX6w0DS8dYlDbZvldn0/THgA8CVwPsJn4NdZnZaqzrZREnve4+ZnZRCfxrxNHA98AfF5QDwgJm9Ia0OmVmBcIjsO+7+aI2msXzeX9JA36P5vJvZ2Wb2G8IVt18Ernb3Hyc0b8l7nrsqmwLuPkzZ3oWZ7QL2AtcBf5ZWvzqduz9GCKCSXWb2auCjwB+l0ysGgbOAC1J6/bmoq++Rfd4fI5yL6gXeDdxhZm+pEfxNpz394JfAMWBxxfrFwKGEbQ412L5VZtP347j7JPAD4Izmdq0lkt73cXd/PoX+zNW/kNL7bma3AZcDb3X3mSYWiuXzDjTc9+Ok+Xl39xfc/Ql33+3uGwkDAT6c0Lwl77lCn/A/AtgNXFJaV/zpeAnJx9uGy9sXra3RviVm2ffjmNk84GzC4YfYRfG+N9E5tPl9t+A24GrgYnffV8dmUbzvs+x75XPE9HkvAAsSHmvNe5722etYFuA9wBHgWmAVsA34NbC4+Ph2YEtZ+zXAJPAx4DXAJ4EXgLMy0PdPAG8DTicM8fwG8Dzw2hT6vogQfOcQRmF8tPjfy4qPbwG2l7VfAfwW+Gzxff+PwIvA2zPQ948QjiufQTgscSvhV9olbe7354HnCMMfl5QtJ5W1ifLzPsu+R/F5L34eLgSWE750tgBTwNp2vudt/SOJfQEGgJ8TTrI8BLyp7LEHgNsr2l9DOEZ3FHgUuCwLfQc+V9b2EGHc+7kp9fuiYmBWLrcXH78deKDKNj8o9v//Auuz0HfgT4EnioHzK8K1Bm9Nod/V+uzl72Osn/fZ9D2WzzthvP3+Yj+eIYzMWdvu91yllUVEckTH9EVEckShLyKSIwp9EZEcUeiLiOSIQl9EJEcU+iIiOaLQFxHJEYW+iEiOKPRFWiyW6R1FQKEv0lKRTe8oojIMInNhZq8Afgj8tbt/prhuDaGOyjsIhb7e6e5nlW3z94QpEy9tf48l77SnLzIH7v4LwqxMnzSz882sG/hbwpzF/0S80wxKTmnmLJE5cvdvmdmXgK8DDxNKP28sPlxzekfP5sQvkmHa0xdpjv9M2Im6Bvi37n405f6IVKXQF2mOVwOnEv6mlpet77TpHSXjdHhHZI7M7ATga8CdhAkvvmxmZ7v7M4Sp7S6r2CTL0ztKxmn0jsgcmdlfAe8G+oHfAA8CY+5+eXHI5qPAIPA3wMXAXxNG9NydUpclxxT6InNgZhcB9xKmPfw/xXXLgRHgRnf/QrHN54DXAgeBT7v77e3vrYhCX0QkV3QiV0QkRxT6IiI5otAXEckRhb6ISI4o9EVEckShLyKSIwp9EZEcUeiLiOSIQl9EJEcU+iIiOaLQFxHJEYW+iEiO/H8eT2QWVl9OjgAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -556,19 +552,18 @@ "updatesPG = onp.asarray(updatesPG) \n", "\n", "axes = plt.figure(figsize=(4, 4), dpi=100).gca()\n", - "axes.scatter(historyGD[:,0], historyGD[:,1], lw=0.5, color='blue')\n", - "axes.scatter(historyNt[:,0], historyNt[:,1], lw=0.5, color='orange')\n", - "axes.scatter(historyPG[:,0], historyPG[:,1], lw=0.5, color='red')\n", + "axes.scatter(historyGD[:,0], historyGD[:,1], lw=0.5, color='blue', label='GD')\n", + "axes.scatter(historyNt[:,0], historyNt[:,1], lw=0.5, color='orange', label='Newton')\n", + "axes.scatter(historyPG[:,0], historyPG[:,1], lw=0.5, color='red', label='PG')\n", "axes.scatter([0], [0], lw=0.25, color='black', marker='x') # target at 0,0\n", - "axes.set_xlabel('x0')\n", - "axes.set_ylabel('x1')" + "axes.set_xlabel('x0'); axes.set_ylabel('x1'); axes.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This illustrates that the PG variant does significantly better than Newton's method. It yields a trajectory that is better aligned with the _diagonal_, and its final state is closer to the origin. A key ingredient here is the inverse function for $\\mathbf{y}$, which yielded higher order terms than the second-order approximation for Newton's method. Despite the simplicity of the problem, Newton's method has problems finding the right search direction. For PG, on the other hand, the higher order information yields an improved direction for the optimization.\n", + "This illustrates that the inverse simulator variant, PG in red, does even better than Newton's method in orange. It yields a trajectory that is better aligned with the ideal _diagonal_ trajectory, and its final state is closer to the origin. A key ingredient here is the inverse function for $\\mathbf{y}$, which provided higher order terms than the second-order approximation for Newton's method. Despite the simplicity of the problem, Newton's method has problems finding the right search direction. For the inverse simulator update, on the other hand, the higher order information yields an improved direction for the optimization.\n", "\n", "This difference also shows in first update step for each method: below we measure how well it is aligned with the diagonal." ] @@ -619,7 +614,7 @@ "\n", "A first thing to note is that for PG, we explicitly map from $L$ to $\\mathbf{y}$, and then continue with a mapping to $\\mathbf{x}$. Thus we already obtained the trajectory in $\\mathbf{y}$ space, and not coincidentally, we already stored it in the `historyPGy` list above.\n", "\n", - "Let's directly take a look what PG did in $\\mathbf{y}$ space:" + "Let's directly take a look what the inverse simulator did in $\\mathbf{y}$ space:" ] }, { @@ -630,7 +625,7 @@ { "data": { "text/plain": [ - "Text(0, 0.5, 'z1')" + "" ] }, "execution_count": 11, @@ -639,7 +634,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -655,17 +650,16 @@ "\n", "axes = plt.figure(figsize=(4, 4), dpi=100).gca()\n", "axes.set_title('y space')\n", - "axes.scatter(historyPGy[:,0], historyPGy[:,1], lw=0.5, color='red', marker='*')\n", + "axes.scatter(historyPGy[:,0], historyPGy[:,1], lw=0.5, color='red', marker='*', label='PG')\n", "axes.scatter([0], [0], lw=0.25, color='black', marker='*') \n", - "axes.set_xlabel('z0')\n", - "axes.set_ylabel('z1')" + "axes.set_xlabel('z0'); axes.set_ylabel('z1'); axes.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "For PG we're making explicit steps in $\\mathbf{y}$ space, which progress in a straight diagonal line to the origin (which is likewise the solution in $\\mathbf{y}$ space).\n", + "With this variant, we're making explicit steps in $\\mathbf{y}$ space, which progress in a straight diagonal line to the origin (which is likewise the solution in $\\mathbf{y}$ space).\n", "\n" ] }, @@ -675,7 +669,7 @@ "source": [ "Interestingly, neither GD nor Newton's method give us information about progress in intermediate spaces (like the $\\mathbf{y}$ space). \n", "\n", - "For **GD** we're concatenating the Jacobians, so we're moving in directions that locally should decrease the loss. However, the $\\mathbf{y}$ position is influenced by $\\mathbf{x}$, and hence we don't know where we end up in $\\mathbf{y}$ space until we have the definite point there. (For NNs in general we won't know at which latent-space points we end up after a GD update until we've actually computed all updated weights.)\n", + "For GD we're concatenating the Jacobians, so we're moving in directions that locally should decrease the loss. However, the $\\mathbf{y}$ position is influenced by $\\mathbf{x}$, and hence we don't know where we end up in $\\mathbf{y}$ space until we have the definite point there. (For NNs in general we won't know at which latent-space points we end up after a GD update until we've actually computed all updated weights.)\n", "\n", "More specifically, we have an update $-\\eta \\frac{\\partial L}{\\partial \\mathbf{x}}$ for GD, which means we arrive at $\\mathbf{y}(\\mathbf{x} -\\eta \\frac{\\partial L}{\\partial \\mathbf{x}})$ in $\\mathbf{y}$ space. A Taylor expansion with \n", "$h = \\eta \\frac{\\partial L}{\\partial \\mathbf{x}}$ yields \n", @@ -687,7 +681,7 @@ "= \\mathbf{y}(x) - \\eta \\frac{\\partial L}{\\partial \\mathbf{y}} (\\frac{\\partial \\mathbf{y}}{\\partial x})^2 + \\mathcal{O}( h^2 )\n", "$.\n", "\n", - "And $\\frac{\\partial L}{\\partial \\mathbf{y}} (\\frac{\\partial \\mathbf{y}}{\\partial \\mathbf{x}})^2$ clearly differs from the step $\\frac{\\partial L}{\\partial \\mathbf{y}}$ we would compute during the backpropagation pass in GD for $\\mathbf{y}$.\n", + "And $\\frac{\\partial L}{\\partial \\mathbf{y}} (\\frac{\\partial \\mathbf{y}}{\\partial \\mathbf{x}})^2$ clearly differs from $\\frac{\\partial L}{\\partial \\mathbf{y}}$, which we would apply with GD when optimizing for $\\mathbf{y}$ directly.\n", "\n", "**Newton's method** does not fare much better: we compute first-order derivatives like for GD, and the second-order derivatives for the Hessian for the full process. But since both are approximations, the actual intermediate states resulting from an update step are unknown until the full chain is evaluated. In the _Consistency in function compositions_ paragraph for Newton's method in {doc}`physgrad` the squared $\\frac{\\partial \\mathbf{y}}{\\partial \\mathbf{x}}$ term for the Hessian already indicated this dependency.\n", "\n", @@ -725,7 +719,7 @@ { "data": { "text/plain": [ - "Text(0, 0.5, 'z1')" + "" ] }, "execution_count": 13, @@ -734,7 +728,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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/P+60HUwF5qL8GCAWBfE2traWgoLW1+NP3jwINu2bWPkyJHdmiq1vt5viU9fWwv5+ZCni/1dkqq/jUhPtHfvXoqKigCKnHN7O/KYwJtWwi4v78iE7V9jEZFwCMvFThER6SIlchGRiFMiFxGJOCVyEZGIUyIXEYk4JXIRkYhTIhcRiTglchGRiFMiFxGJOCXyEJozZw5mxve///1W5Y8++mjapu5dsGABZ599dlqeW0TSS4m8MzI4L01+fj533HEHf/vb3zJ2TBGJJiXyjmpugsfG+9sMmD59OoMHD2bRokVJ66xbt44LLriAvn37cvLJJ/O1r32tZQ7zxYsXc+aZZ7bUjZ/N//znP291jFtuuYVly5bx3e9+l5dffhkzw8xYtmwZAG+99RazZs2ioKCAwsJCrrjiCnbt2tXyHPEz+V/84heMGDGCoqIirrzySvbt25fiV0REklEi76iqtVBbCVVpXn05Jisri9tvv52f/OQnvPPOkUuTbt26lYsvvpjLLruMV155hRUrVrBu3TrmzZsHwJQpU9i0aRNVVVUAVFRUUFxcTHl5OQCNjY2sX7+eqVOnMnv2bG688UbOOOMMdu7cyc6dO5k9ezbNzc3MmjWLPXv2UFFRwRNPPMFf//pXZs+efUQsjz76KKtWrWLVqlVUVFQc0SwkIumjRH40B6th31a/bS6D5kbYUna47GAaVl9OcOmll3L22Wdz6623HnHfokWLuPrqq7nhhhs49dRTKS0t5a677uLBBx/k4MGDnHnmmZxwwglUVFQAUF5ezo033tiyv2HDBhobGyktLaVv374UFBSQnZ3N4MGDGTx4MH379uWpp56isrKS5cuXM27cOCZNmsSDDz5IRUUFL7zwQksszc3NLFu2jDPPPJMLLriAz3/+8zz11FNpfW1E5DAl8qN5dSGsGgOrS2F3bPXlXRV+f9UYf3+a3XHHHTzwwAO89tprrcpffvllli1bRkFBQcs2c+ZMmpub2bZtG2bG5MmTKS8vp6amhk2bNnHttddSX1/P5s2bqaioYMKECfTr1y/psV977TVOPvlkTj755Jay008/nQEDBrSKZ8SIEfTv379lf8iQIezevTuFr4IEJsLrFfQmSuRHM64MJi4By4LGGl/WWAOWDROX+vvTbPLkycycOZObb765VXldXR1f/vKX2bhxY8v28ssv88Ybb1BSUgLA1KlTKS8vZ+3atZxzzjkUFha2JPeKigqmTJmSkhhzcnJa7ZsZzc3NKXluCVBTE4wf728l1JTIj6VkLgxqs/ry4GlQMidjIXz/+9/nd7/7HevXr28p+8hHPsKmTZsYNWrUEVtubi5wuJ3817/+NVOnTgV8cn/yySd55plnWsoAcnNzaWrzD/vhD3+Yt99+m7fffrulbNOmTdTU1HD66aen7xeWcFi7FiorYV1mrgtJ1ymRH4tzsLsC8orhxEn+dld5Rr9ynnXWWVx99dXcddddLWU33XQTzz77LPPmzWPjxo288cYbrFy5suViJ8DYsWM5/vjjWb58eatE/uijj1JfX895553XUnfEiBFs27aNjRs3Ul1dTX19PdOnT2859p///Gc2bNjAF77wBaZMmcL48eMz9vtLBlVX+xXGt26FsjJobPS38bLq9F4Xkq5RIj+Wmko4VAely2Hmc1D6kN+vqcxoGLfddlur5oqxY8dSUVHB66+/zgUXXMA555zD/PnzGTp0aEsdM+OCCy7AzDj//PNbHldYWMj48eM57rjjWupedtllXHzxxVx44YUMHDiQhx9+GDNj5cqVHH/88UyePJnp06dzyimnsGLFisz94pJZCxfCmDFQWgpPx64LVVT4/TFj/P0SOlp8+Via6qG5HnISnr+hFrLyIUurL3eFFl8Oufvug1tugZ07D5cNHeqT+Jw5gYXVW3Rl8WWdkR9LVl7rJA6QW6QkLj3X3Lkwrc11oWnTlMRDLDvoAEQkZJzzzSnFxVBS4tvGy8t9eZrm+pHu0Rm5iLRWWQl1dbB8OTz3HDz0kN+vzOx1Iek4nZGLSGujR8OOHRC/7nTRRbB9O+h6RmgpkYtIa3l5fkvkL75JSKlpRUQk4gJP5Gb2d2b2SzN738wOmFmlmWm0iYhIBwXatGJmxwPPAH8EPg5UAacCWk1BRKSDgm4jvwl42zn3xYSybUEFIyISRUE3rXwK+JOZ/drMdpvZS2b2z8kqm1memRXGN6B/sroiIr1F0In8FOAa4A1gJnA3cJeZ/WOS+jcDtQnbkUvnpFOGpjOIL75sZuTm5jJq1Chuu+02Dh06FAvDsXTpUj760Y9SWFhIQUEBZ5xxBtdffz1vvvlmRmIUkfAIOpH3Af7snPu2c+4l59x/AEuBrySpvwgoStiGZSZMMj4388UXX8zOnTt54403uPHGG1mwYAE//OEPcc5x1VVX8bWvfY1PfOITrF69mk2bNnHvvfeSn5/P9773vYzEJyLhEXQb+U5gU5uy14DL2qvsnKsH6uP7lsnhwolzM6doQYajycvLY/DgwQBcc801/OY3v+G3v/0tI0eO5JFHHmHlypV86lOfaqk/fPhwzj33XKI8CZqIdE3QifwZYHSbstOAHQHEcqTqaqit9T8nzs08LPZFoKjIz0eRAX379uX999/n4YcfZvTo0a2SeKKMfriJSCgE3bRSBpxrZt82s1FmdhXwL8BPA47LC8HczM45nnzySR5//HGmTZvG66+/zujRrT/7brjhhpZ1O4cNy1xrk4iEQ6CJ3Dn3AnAp8FngL8C/ATc45x4KMq4WZWWwZAlkZUFNjS+rqYHsbFi61N+fJqtWraKgoID8/Hw+/vGPM3v2bBYsWNBu3e985zts3LiR+fPnU1dXl7aYRCScgm5awTm3ClgVdBxJzZ0La9b4GeDiMjA384UXXsjdd99Nbm4uQ4cOJTvb/6lOPfVUtmzZ0qruwIEDGThwICeddFJaYxKRcAq6aSX8EudmnjTJ38bnZk6j4447jlGjRjF8+PCWJA7w2c9+li1btrBy5cq0Hl9EokOJ/FhCNjfzlVdeyeWXX86VV17JbbfdxvPPP8/27dupqKhgxYoVZGVlBRKXiAQn8KaV0AvZ3MxmxooVK1i6dCn3338/P/jBD2hsbGTYsGF87GMf48477wwkLhEJjhZflowLxd9Gy5ZJSGnxZZGOaG6Cx8b7W5EeQIlcep+qtVBbCVXrgo5EJCXURi69w8FqaIyN0t1cBs2NsKUM+sUGUOUUQX5mRumKpJoSufQOry6E1xdD7gnQ3ODLdlXA6lJo2AOnzYNx6RvgJZJOPb5pJcoXc3uqQP4m48pg4hKwLGis8WWNNWDZMHGpkrhEWo9N5Dk5OQDs378/4EikrfjfJP43ypiSuTBoWuuywdOgZE5m4xBJsR7btJKVlcWAAQPYvXs3AP369dPMgAFzzrF//352797NgAEDMj94yTnYXQF5xVBQAnVbYVe5uiJK5PXYRA60zOcdT+YSDgMGDGj522RUTSUcqoPzfwVDZsDO1bButi8/fmzm4xFJkR47IChRU1MTjY2NmQtMksrJyQluGoGmemiuh5yE90pDLWTlQ1ZeMDGJtNGVAUE9+ow8LisrS3OQiE/WbRN2blEwsYikUI+92Cki0lsokYuIRJwSuYhIxCmRi4hEnBK5iEjEKZGLiEScErmISMQpkYuIRJwSuYhIxCmRi4hEnBK5iEjEKZGLiEScErmISMQpkYuIRFygidzMFpiZa7NtDjImEZGoCcN85K8C0xP2DwUViIhIFIUhkR9yzr0XdBAiIlEVhjbyU83sXTP7q5k9ZGbDk1U0szwzK4xvQP8MxikiEkpBJ/LngTnAxcA1wEhgrZklS9A3A7UJ2zsZiFFEJNRCtfiymQ0AdgDfcM7d2879eUDioov9gXeOtfiyiEhURH7xZedcjZm9DoxKcn89UB/fN7NMhSYiElpBN620YmYFQAmwM+hYRESiIuh+5P/XzKaY2QgzKwV+AzQBDwcZl4hIlATdtDIMn7RPBKqAdcC5zrmqQKMSEYmQQBO5c+7KII8vItIThKqNXEREOk+JXEQk4pTIRUQiTolcRCTilMhFRCJOiVxEJOKUyEVEIk6JXEQk4pTIRUQiTolcRCTilMgldUI0t71Ib6JELqnR3ASPjfe3PZU+qCSklMglNarWQm0lVK0LOpL0aGqC8eP9rUjIKJFL1x2shn1b/ba5DJobYUvZ4bKD1UFHmDpr10JlJazroR9UEmlBz0cuUfbqQnh9MeSeAM0NvmxXBawuhYY9cNo8GFcWbIzdUV0NtbX+57IyaGz0t8OG+bKiIiguDi4+kRidkUvXjSuDiUvAsqCxxpc11oBlw8Sl0U7iAAsXwpgxUFoKTz/tyyoq/P6YMf5+kRBQIpfuKZkLg6a1Lhs8DUrmBBJOSpWVwZIlkJUFNTW+rKYGsrNh6VJ/v0gIKJFL9zgHuysgrxhOnORvd5X3nB4ec+fCtDYfVNOmwZw5gYQj0h4lcumemko4VAely2Hmc1D6kN+vqQw6stRwzjenFBfDpEn+try853xQSY+gRC7dUzgaLtkBQ2b4/SEXwaztvrwnqKyEujpYvhyeew4eesjvV/aQDyrpEcxF+MzCzAqB2traWgoLC4MOR3qi+nq/Jb6/amshPx/y8oKLS3qsvXv3UlRUBFDknNvbkceo+6HI0eTlHZmw/T+ZSGioaUVEJOKUyEVEIk6JXEQk4pTIRUQiTolcRCTilMhFRCIuNInczL5lZs7MfhR0LCIiURKKRG5mE4AvA68EHYuISNQEnsjNrAB4CPhn4G8BhyMiEjmBJ3Lgp8DvnXNPHquimeWZWWF8A/qnPzwRkXALdIi+mV0JfASY0MGH3Azcmr6IRESiJ7AzcjM7GfgxcLVz7mAHH7YIKErYhqUpPBGRyAjyjHwccBLwZzOLl2UBk81sHpDnnGu1ZLlzrh6oj+8nPE5EpNcKMpE/BZzVpux+YDNwR9skLiIi7QsskTvn9gF/SSwzsw+A951zf2n/USIi0lYYeq2IiEg3hGphCefc1KBjEBGJGp2Ri4ikSaZW0lQiFxFJg6YmGD/e36abErmISBqsXQuVlbBuXfqPFao2chGRKKuuhtpa/3NZGTQ2+tthsaGLRUVQXJz64+qMXEQkRRYuhDFjoLQUnn7al1VU+P0xY/z96ZDSRG5mf29mGsgjIr1SWRksWQJZWVBT48tqaiA7G5Yu9fenQzrOyDVuXkR6rblzYdq01mXTpsGcOek7ZqfayM3sv45RpQjIUIcbOSbnQPPRiGSUc745pbgYSkpg61YoL0/vv2Nnz8j/F5AP1CbZ6lIanXRdcxM8Nt7fikjGVFZCXR0sXw7PPQcPPeT3KyvTd8zO9lp5DfhP59y97d1pZmcDn+xuUJICVWuhthKq1sGgKUFHI9JrjB4NO3ZAYaHfv+gi2L4d8vPTd8zOJvIX8QtBtJvI8VPMvtWtiKTrDlZDY6zv0+YyaG6ELWXQL9b3KacI8tPQ90lEWuTl+S1RUVF6j2muE2NIzSwPyHLO7U9fSB0XW+6ttra2lsL4x19v9uLX4fXFkHsCNDdAYw3kDIA+udCwB06bB+PSdNlcRFJi7969FPnMX+Sc29uRx3Sqjdw5V++c229ma8zsiCXXzOx4M1vTmeeUFBpXBhOXgGX5JA7+1rJh4lIlcZEeqqvdD6cC88zsUTM7LqE8F1CDbJBK5sKgNn2fBk+DkjmBhCMi6dedfuTTgcHAc2Y2IjXhSLc5B7srIK8YTpzkb3eVZ24aNhHJuO4k8p34s+9K4AUzm5qKgKSbairhUB2ULoeZz0HpQ36/Jo19n0QkUF2dNMtBy2LIV5nZLcBjwB2pCky6qHA0XLIDcmIXf4dcBLO2Q1Ya+z6JSKC6mshbjU9yzn3PzF4DHuh+SNItWXl+S5Sb5r5PIhKoribykUBVYoFz7j/NbDMwvttRiYhIh3UpkTvndiQpfxV4tVsRiYhIp2g+chGRiFMiFxGJOCVyEZGIUyKX4Gmwkki3KJFLsJqaYPx4fysiXaJELsFau9bPuL9uXdCRiERWV/uRi3RddTXUxuZNLyuDxkZ/Oyw2b3pRkV8nS0Q6JNAzcjO7xsxeMbO9sW29mX08yJgkAxYuhDFjoLQUnn7al1VU+P0xY/z9ItJhQTetvAN8CxiHHxG6BlhpZmcEGpWkV1kZLFkCWVlQU+PLamogOxuWLvX3i0iHBZrInXO/c879t3PuDefc68657+AXcD43yLgkA+bOhWlt5k2fNg3mzAkkHJEoC00buZllAZ8BjgPWJ6mTByTOCNU/A6FJOjjnm1OKi6GkBLZuhfJyX252zIeLyGFBN61gZmeZWR1+4eafA5c65zYlqX4zUJuwvZOZKCXlKiuhrg6WL4fnnoOHHvL7lZo3XaSzOrX4cloCMMsFhgNFwOXAPwFT2kvmSc7I39HiyxFUX++3xL9bbS3k5x+5BLlIL9KVxZcDb1pxzjUAb8Z2XzSzCcD1wJfbqVuPP3MHwPQVPLry8o5M2EWaN12kKwJvWmlHH1qfdYuIyFEEekZuZouAPwBv4ZtJrgKmAjMDDCtYutgnIp0U9Bn5ScCDwBbgKWACMNM590SgUQWluQkeG+9vRUQ6KNAzcufcl4I8fuhUrYXaSqhaB4OmBB2NiERE4Bc7e72D1dAYm3dkcxk0N8KWMugXm3ckpwjyNe+IiCSnRB60VxfC64sh9wRobvBluypgdSk07IHT5sE4DVkXCbOgL20F3UYu48pg4hKwLGis8WWNNWDZMHGpkrhIyIVhSn0l8jAomQuD2sw7MngalMwJJBwR6bgwTKmvppUwcA52V0BeMRSUQN1W2FUe/Pc1EWlX2KbU1xl5GNRUwqE6KF0OM5+D0of8fo3mHREJo7BNqR/4XCvdYWaFQG3k51ppqofmeshJ+B0aaiErH7I0yFUkjO67D265BXbuPFw2dKhP4t2Zjbkrc63ojDwMsvJaJ3GA3CIlcZEQC9OU+mojFxHpgjBNqa8zchGRLgjTlPpqIxcR6YJ0TakfyfnIRUSiKExT6qtpRUQk4pTIRUQiTolcRCTilMhFRCJOiVxEJOKUyEVEIk6JXEQk4pTI0ynCg61EJDqUyNOluQkeG+9vRUTSSIk8XarWQm0lVAW4bEhn6RuESCQpkafSwWrYt9Vvm8uguRG2lB0uO1gddITJhWHhQZEICOP5jhJ5Kr26EFaNgdWlsDu2bMiuCr+/aoy/P6zCsPCgSMiF9XxHiTyVxpXBxCVgWdBY48saa8CyYeJSf3+YVFf7SZS3bm298GC8rDrE3yBEAhDW8x0l8lQrmQuD2iwbMngalMwJJJyjCtvCgyIhFIXzHSXyVHMOdldAXjGcOMnf7ioPZ8NaWRksWQJZWVBT48tqaiA7G5Yu9feL9HJRON9RIk+1mko4VAely2Hmc1D6kN+vCWDZkI4I08KDIiEUhfOdQFcIMrObgU8DY4ADwLPATc65LR18fPhWCGqqh+b61ospN9RCVn44F1N2DoYPh4MHDy88mJ8Pb72V+YUHRULsc5/zy7kl7v/iF6k/TldWCAr6jHwK8FPgXGAGkAOsNrPjAo2qO7LyWidxgNyicCZxCNfCgyIhlbjQ8qRJ/ja+0HIYhGrNTjMbCOwGpjjnnu5A/fCdkUdNuhYeFOlBXnkFpkyBX/0KZsyA1ath9myf3MeOTe2xesKanfEV7/a0d6eZ5QGJ2aV/2iPq6cK08KBISI0eDTt2HD7fuegi2L7dn++EQdBNKy3MrA/wI+AZ59xfklS7GahN2N7JTHQi0pvl5bX+0gr+fCcsX1pDk8jxbeVnAlcepc4i/Fl7fBuWgbhEREItFE0rZrYY+CQw2TmX9CzbOVcP1Cc8LgPRiYiEW6CJ3Hwm/glwKTDVObctyHhEROKci04P3KCbVn4KfA64CthnZoNjW9+A4xKRXiysk2MlE3Qivwbf1l0O7EzYZgcYU8eFqOumiKROWCfHSibQphXnXES+uLSjuQkenwgzN0CfrKCjEZFuqq72Qyig9eRYw2JdKoqK/ECgMAr6jDy6orgCkIgkFYXJsZJRIu+MKK8AJCJHFYXJsZJRIu+MKK8AJCLHFNXJQJXIOyNqKwCJSKeEfXKsZJTIOytKKwCJSKdEdTLQUIzsjJTEFYAKSqBu6+EVgKIyekBE2hX2ybGS0Rl5Z0VtBSAROaZ400nYJ8dKJlTzkXdWIPORh2kFIH0LEOm2piaYOBE2bPA9VoIWxRWCoicsKwBFbQyxSEhFbRRne9RGHlWJ774pU4KORiRSojyKsz1K5FHS0959IgFZuBAWL4YTToCGBl8WH8W5Zw/MmxfuAUBtqWklSqI8hlgkRKI8irM9SuQdEZYLwj3t3ScSoKiO4myPEvmxNDfBY+P9bRj0pHefSADi52VRHcXZHiXyYwnbLIc96d0nkmGJnb2iOoqzPbrY2Z6D1dAYu6iYOMthv9hFxZwiyA/oomL83ferX8GMGbB6Ncye7cvHjg0mJpGISOzsde650RzF2R4NCGrPi1+H1xdD7gnQ3OAnxsoZAH1yoWEPnDYvuAmy6uv9lvj71tb6d1/Yh5+JBCCxs9c3vgG//S3MmgX//u++LGydvTQgKFXCPMthVMcQiwSkN3T2UiJPRrMcikSec72js5cSeTKJsxyeOMnfxmc5FJHQS7yw2dM7eymRJ6NZDkUiLfHCZk/v7KVeK8kUjoZLdhyeIGvIRTBru5/lUERCKdksFnV1vvy+++Dyy3teZy8l8mSy8o6c0TC3KJhYRKRDks2h8uyzcOAAPPOMT+RR7mrYHjWtJNNTvnOJ9BJHu7CZk3Pkhc2e1NlLibw9mRyWrw8MkW7rTRc226NE3p5MDcvX4hAiKdGbLmy2R4k87mA17Nvqt8Rh+fGyg9WpP2ZPWJpEJADO+QubW7f6LfHC5n//t7+weffd0Z9DpaMCvdhpZpOBfwXGAUOAS51zjwYSzKsLWw/LB9hVAatLUzssX4tDiHRLfI3N88+Hn/2s913YbE/QZ+THAS8D1wUcR+aG5feG8cIiaRT/IvvpT/fOC5vtCTSRO+f+4Jy7xTn3myDjaJGJYfm9YbywSIola0aZMgUmTGhdt6df2GxPpPqRm1kekPi52j+lB0gcll9QAnVbDw/LN0vdcebOhTVrfONdXG9894l00NHW2Ny92zeb/P3f+0Qfv7CZyn/ZsAu6aaWzbgZqE7Z3UvrsmRqW3xsvq4t0Q7Ivss5B375+atrecmGzPVFL5IuAooRtWEqfPT4sf8gMvx8fll84OqWH6VFLk4hkSHv9w6dPh/fe82uswOELm6NT/C8bdqFZWMLMHJ3stZK2hSXSTYtDiHSaczB8OBw8CCUlvhklPx/eeqtnNaNoYYmo0OIQIp2mL7LJBd2PvAAYlVA00szOBvY4594KJioRCaPRo3vOGpupFnSvlfHAHxP274zdPgDMyXg0qdTbLpuLpFle3pFfWos0ISkQcCJ3zpUDPS/bxYeebdjgL7OLiKSR2sjTQXOoiEgGBd200nNoDhURCYjOyFNFc6iISECUyFNFc6iISECUyFOpNy5NIiKBUxt5KiXOoRIfetYbZ/ARkYzSGXkqaeiZiAQgNHOtdEXgc620PdPWHCoi0k2aayWT2ls4WXOoiEgAlMi7SoN+RCQkdLGzMzToR0RCSGfknaFBPyISQkrknaFBPyISQkrkHRXv3aNBPyISMkrkHZHYQ0ULJ4tIyCiRd0RiDxUN+hGRkFEiT6a62g+x37q1dQ+V7Gz44x/hnHN8vd66bLeIhIYSeTLf+177PVQuvBAmTGjdQ0WDfkQkQErk7Wlq8s0pd9+tHioiEnpK5O2Jt4mfeqp6qIhI6GlkZ1yyUZvPPw/HHw8jR8Jbb2laWhEJHZ2Rx7U3anPNGti1C/buhcmT1UNFREJJZ+RxZWVw1llwyy2H28T37YPBg2HRosPNKdu3+2lpRURCQmfkidobtTl9eus2cfVQEZGQ0Rl5Ii3VJiIRpDPyRBq1KSIRpKXeEmmpNhEJWFeWelPTSqK8vCMTtn9BRURCKxRNK2Z2nZltN7ODZva8mU1M9zHnz5+f7kOIiGRE4InczGYDdwLfBT4CvAw8bmYnpeuYVVVV3HvvvVRXV6frECIiGRN4Ige+ASx1zt3vnNsEfAXYD8xN1wGXLl3Ku+++yz333JOuQ4iIZEygidzMcoFxwJPxMudcc2z/o+3UzzOzwvgG9O/osZYvX05JSQklJSXcddddAPzoRz9qKVu+fHl3fx0RkUAEfUZeDGQBu9qU7wIGt1P/ZqA2YXunowe66qqreOSRRyguLmbXLn+4Xbt2MXDgQFasWMFVV13VlfhFRAIXdCLvrEVAUcI2rDMPnjBhAldccUWrss985jOMHz8+ZQGKiGRa0Im8GmgCBrUpHwS817ayc67eObc3vgH7OnvAtWvXUlJSwle/+lVKSkpYu3ZtlwIXEQmLQBO5c64BeBH4WLzMzPrE9ten+nj79++nurqaJ554grvuuosnnniC6upqDhw4kOpDiYhkTOAjO2PdDx8AvgxsAG4ArgDGOOfatp23fWynRnbGf1dLmDelvTIRkaBEcmSnc26FmQ0EbsNf4NwIXHysJN4V7SVrJXARibrAEzmAc24xsDjoOEREoijoi50iItJNSuQiIhGnRC4iEnFK5CIiEadELiIScUrkIiIRF4ruh921d2+H+syLiIReV/JZ4CM7u8PM/o5OzIAoIhIhw5xz/9ORilFP5AYMpfOTZ/XHfwAM68Jjw0DxB0vxB6s3xN8feNd1MEFHumkl9kt26BMrUcKw/H0dncsgTBR/sBR/sHpJ/J36vXSxU0Qk4pTIRUQirrcm8nrgu7HbKFL8wVL8wVL8bUT6YqeIiPTeM3IRkR5DiVxEJOKUyEVEIk6JXEQk4npsIjez68xsu5kdNLPnzWziMep/xsw2x+pXmtknMhVrkng6HL+ZzTEz12Y7mMl428Qz2cx+Z2bvxmK5pAOPmWpmfzazejN708zmpD/SpLF0Kv5Y7G1ff2dmgzMUcmIsN5vZC2a2z8x2m9mjZja6A48Lxfu/K/GH6f1vZteY2Stmtje2rTezjx/jMd1+7XtkIjez2cCd+C4+HwFeBh43s5OS1C8FHgbuBc4BHgUeNbMzMxLwkfF0Kv6YvcCQhO1D6Y7zKI7Dx3xdRyqb2Ujg98AfgbOBHwH3mNnMNMV3LJ2KP8FoWv8Ndqc4ro6YAvwUOBeYAeQAq83suGQPCNn7v9Pxx4Tl/f8O8C1gHDAeWAOsNLMz2qucstfeOdfjNuB5YHHCfh/8UP5vJam/AljVpuw54OcRiX8OUBP0654kNgdccow6dwB/aVP2CPBYROKfGqs3IOh424ltYCy2yUepE6r3fxfiD+37PxbfHuBL6Xzte9wZuZnl4j8Nn4yXOeeaY/sfTfKwjybWj3n8KPXTpovxAxSY2Q4ze9vMkp4BhFRoXv9u2mhmO83sCTM7L+hgYopit3uOUifMr39H4ocQvv/NLMvMrsR/w1ufpFpKXvsel8iBYiAL2NWmfBeQrM1ycCfrp1NX4t8CzAVmAZ/D/12fNbNh6QoyxZK9/oVm1jeAeDprJ/AV4LLY9jZQbmYfCTIoM+uDb6Z6xjn3l6NUDdP7v0Un4g/V+9/MzjKzOvzIzZ8DlzrnNiWpnpLXPtKzH4rnnFtPwie+mT0LvAZ8Gfi3oOLqLZxzW/DJJO5ZMysBvg58PpioAN/WfCZwfoAxdEeH4g/h+38L/lpPEXA58ICZTTlKMu+2nnhGXg00AYPalA8C3kvymPc6WT+duhJ/K865RuAlYFRqQ0ubZK//XufcgQDiSYUNBPj6m9li4JPAhc65Yy2+Eqb3P9Dp+FsJ+v3vnGtwzr3pnHvROXcz/sL59Umqp+S173GJ3DnXALwIfCxeFvuK9jGSt1OtT6wfM+Mo9dOmi/G3YmZZwFn4r/xREJrXP4XOJoDX37zFwKXANOfctg48LDSvfxfjb/scYXv/9wHyktyXmtc+6Cu6abpKPBs4CPwj8GFgCfA3YFDs/geBRQn1S4FG4EZgDLAAaADOjEj884GLgFPw3RUfBg4ApwcUfwE+kZ2N73Hw9djPw2P3LwIeTKg/EvgA+EHs9b8WOATMjEj8N+DbZ0fhmwJ+hP9W9bEAYv8ZUIPvxjc4YeubUCe07/8uxh+a93/svTEZGIH/MFkENAMz0vnaZ/yfJIMv6DxgB/6Cw/PApIT7yoFlbep/Bt+2VQ/8BfhEVOIHyhLqvofvk31OgLFPjSXAttuy2P3LgPJ2HvNS7HfYCsyJSvzAN4E3Y8njfXx/+AsDir29uF3i6xnm939X4g/T+x/fH3x7LJbd+B4pM9L92msaWxGRiOtxbeQiIr2NErmISMQpkYuIRJwSuYhIxCmRi4hEnBK5iEjEKZGLiEScErmISMQpkYuIRJwSuUgnmNlYM1sbW1/xbTP7ZtAxiSiRi3SQmRUCq/HzeowD/hVYYGb/Emhg0utprhWRBGY2Amhv6tQK/PqKC4HBzk83jJl9H7+m55iMBSnShs7IRVp7m9arsZ+Dn9Hwafw6ik/Hk3jM48BoMzs+04GKxCmRiyRwzjU5595zzr2Hnxf75/hJ/heQfH1FCHh9S+ndtGanSHL3Af3x80k3m1nQ8Yi0S4lcpB1mdgswE5jonNsXK062vmL8PpFAqGlFpA0zuwy/fNgVzrmtCXetByabWU5C2Qxgi3Pub5mMUSSReq2IJDCzM/FL690J/DThrgb8Opxb8F0Q78Cvz3kf8HXn3H9kOFSRFkrkIgnMbA5wfzt3VTjnpprZWHyCnwBUAz9xzt2RwRBFjqBELiIScWojFxGJOCVyEZGIUyIXEYk4JXIRkYhTIhcRiTglchGRiFMiFxGJOCVyEZGIUyIXEYk4JXIRkYhTIhcRibj/D0AlztulUrzCAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -748,12 +742,11 @@ "source": [ "axes = plt.figure(figsize=(4, 4), dpi=100).gca()\n", "axes.set_title('y space')\n", - "axes.scatter(historyGDy[:,0], historyGDy[:,1], lw=0.5, marker='*', color='blue')\n", - "axes.scatter(historyNty[:,0], historyNty[:,1], lw=0.5, marker='*', color='orange')\n", - "axes.scatter(historyPGy[:,0], historyPGy[:,1], lw=0.5, marker='*', color='red')\n", + "axes.scatter(historyGDy[:,0], historyGDy[:,1], lw=0.5, marker='*', color='blue', label='GD')\n", + "axes.scatter(historyNty[:,0], historyNty[:,1], lw=0.5, marker='*', color='orange', label='Newton')\n", + "axes.scatter(historyPGy[:,0], historyPGy[:,1], lw=0.5, marker='*', color='red', label='PG')\n", "axes.scatter([0], [0], lw=0.25, color='black', marker='*') \n", - "axes.set_xlabel('z0')\n", - "axes.set_ylabel('z1')" + "axes.set_xlabel('z0'); axes.set_ylabel('z1'); axes.legend()" ] }, { @@ -771,13 +764,13 @@ "source": [ "## Conclusions \n", "\n", - "Despite its simplicity, this simple example already shows surprisingly large differences between gradient descent, Newton's method, and using the _inverse simulator_.\n", + "Despite its simplicity, this example already shows surprisingly large differences between gradient descent, Newton's method, and using the _inverse simulator_.\n", "\n", "The main takeaways of this section are the following.\n", "* GD easily yields \"unbalanced\" updates, and gets stuck.\n", "* Newtons method does better, but is far from optimal.\n", "* the higher-order information of the invese simulator outperform both, even if it is applied only partially (we still used Newton's method for $L$ above).\n", - "* Also, the choice of optimizer strongly affects progress in latent spaces like $\\mathbf{y}$.\n", + "* Also, the methods (and in general the choice of optimizer) strongly affects progress in latent spaces, as shown for $\\mathbf{y}$ above.\n", " \n", "In the next sections we can build on these observations to use PGs for training NNs via invertible physical models." ] @@ -791,7 +784,7 @@ "\n", "## Approximate inversions\n", "\n", - "If an analytic inverse like the `fun_y_inv_analytic` above is not readily available, we can actually resort to optimization schemes like Newton's method or BFGS to obtain a local inverse numerically. This is a topic that is orthogonal to the comparison of different optimization methods, but it can be easily illustrated based on the PG example above.\n", + "If an analytic inverse like the `fun_y_inv_analytic` above is not readily available, we can actually resort to optimization schemes like Newton's method or BFGS to obtain a local inverse numerically. This is a topic that is orthogonal to the comparison of different optimization methods, but it can be easily illustrated based on the inverse simulator variant from above.\n", "\n", "Below, we'll use the BFGS variant `fmin_l_bfgs_b` from `scipy` to compute the inverse. It's not very complicated, but we'll use numpy and scipy directly here, which makes the code a bit messier than it should be." ] @@ -844,7 +837,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nonetheless, we can now use this numerically inverted $\\mathbf{y}$ function to perform the PG optimization. Apart from calling `fun_y_inv_opt`, the rest of the code is unchanged." + "Nonetheless, we can now use this numerically inverted $\\mathbf{y}$ function to perform the inverse simulator optimization. Apart from calling `fun_y_inv_opt`, the rest of the code is unchanged." ] }, { @@ -891,7 +884,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nice! It works, just like PG. Not much point plotting this, it's basically the PG version, but let's measure the difference. Below, we compute the MAE, which for this simple example turns out to be on the order of our floating point accuracy." + "Nice! It works, just like the PG version above. Not much point plotting this, it's basically the same, but let's measure the difference. Below, we compute the MAE, which for this simple example turns out to be on the order of our floating point accuracy." ] }, { @@ -930,13 +923,6 @@ "\n", "- Replace the simple \"regular\" gradient descent with another optimizer, e.g., commonly used DL optimizers such as AdaGrad, RmsProp or Adam. Compare the versions above with the new trajectories." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -960,4 +946,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file