Skip to content

Instantly share code, notes, and snippets.

@balzer82
Last active March 9, 2016 12:42
Show Gist options
  • Save balzer82/3d4e2dcce16a84aac4f8 to your computer and use it in GitHub Desktop.
Save balzer82/3d4e2dcce16a84aac4f8 to your computer and use it in GitHub Desktop.
A Simple Neural Network with Lasagne/Theano and Keras
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/paul/anaconda/lib/python2.7/site-packages/theano/tensor/signal/downsample.py:5: UserWarning: downsample module has been moved to the pool module.\n",
" warnings.warn(\"downsample module has been moved to the pool module.\")\n"
]
}
],
"source": [
"import numpy as np\n",
"\n",
"import theano\n",
"import lasagne\n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"'1.10.4'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.__version__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Train a Neural Network to predict a function\n",
"\n",
"Which should be possible for every function: http://neuralnetworksanddeeplearning.com/chap4.html"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHD9JREFUeJzt3Xt4lOWZx/Hv3YitbhdK1WVdsKIVLNZ6AEUtKlGoxCNU\nRUSrRdzKqli71fVUrNlVL8UDUkA5KZWqNR4ABS4qnhgQCQdRQSoIiFROiyJYwUUN5t4/nlFiGjKT\nZGbemXd+n+vK1Uzm7Zu7b5NfHp6juTsiIhIv34q6ABERyTyFu4hIDCncRURiSOEuIhJDCncRkRhS\nuIuIxFDKcDezcWa20czequeaYWa2wswWmdmRmS1RREQaKp2W+x+Bsl29aWanAQe5ezvgMmBkhmoT\nEZFGShnu7v4KsKWeS84CxievnQd8z8xaZaY8ERFpjEz0ubcG1tR4vRZok4H7iohII2VqQNVqvdae\nBiIiEdotA/dYB+xX43Wb5Ne+wcwU+CIijeDutRvQKWUi3CcDA4EKMzsW+NjdN9Z1oTYpC8rLyykv\nL4+6jLygZ7FTvjwLd3j3XVi4EN54A15/HRYtgs8+gx//GA45BNq3h4MOCh9t20Lz5pmtIZ1n4Q6b\nNsF778GqVbBiBSxbFj7eeQf+5V/gsMPg8MPh6KPDR6sCHA00a3CuA2mEu5k9DnQF9jazNcAtQDMA\ndx/t7tPM7DQzWwl8ClzSqEpEJBKffw7z58OsWVBZCXPnwh57wFFHQceOcPXVISBbt4ZG5kxWmME+\n+4SPzp2/+d6XX4Y/UIsXhz9Qw4fDggXw3e/CT38KXbrA8ceH8C8piab+bEsZ7u7eN41rBmamHBHJ\nti+/DK3y55+Hl18Owd6hA5xwAvTrB6NHhyAvZCUl4V8X7dvDueeGr7nDypUwZw7Mng0PPAAbNkDX\nrtCtW/g45JD8+gPWFJnolpEGKi0tjbqEvKFnsVM2n8WmTTBtGkydCi+9BP/2b9CjB1x7bWjFtmiR\ntW/dKNl4FmbQrl34+OUvw9c2bgx/4F56CYYMgepqOPXU8NG9e2jpFyrLVT+4mbn63EVy5733YMIE\neOYZeOut0DI94wwoKwvhLt/kHvrq//KX8Idw3rzQqu/VC848M/ThR8HMGjWgqnAXiZG//Q0efxye\negrWrAnBdPbZUFoK3/lO1NUVlo8/DkE/aVLowjrqKOjTJzzPvfbKXR0Kd5EitXkzPPEEPPZYmCly\n7rkhhE44AXZTx2tG/N//hdb8E0+EoD/xRLj44tCiz/YfTYW7SBH58ssQMn/8Y/jPsjK48MLQj777\n7lFXF29bt8LEifDII2EmTu/e8O//Dp06ZWcwVuEuUgTWrYOHHoKxY2HffeGSS+D886Fly6grK05r\n1sCf/hT+P2nRIoT8RRdldt6/wl0kptwhkYBhw2DmzBDmAwaEueeSH6qrYcaMMI30xRdDt9iVV8Kh\nhzb93gp3kZjZvh0efTSEenU1XHUV/OIXhT09rxisXx/+ZTVmTJhn/9vfwumnw7cauZOXwl0kJjZt\ngvvvD4tsOncOK0S7dYvP4ppiUVUVZi3ddx/8/e/wm9+EbrQ99mjYfRob7jpmTyRP/O1vMHBgWGSz\ndm3ogpkyJSymUbAXnmbN4IILwgrgcePguefggAPg9tthS30nZGSIwl0kYsuXhxZdx46hy2Xp0vDP\n+h/9KOrKJBPMwj42kyeHlbDLl4cN1268ET78MHvfV+EuEpHly0MfepcuoUW3ciXceSf8679GXZlk\ny49/DOPHh502P/44/AG/7jr44IPMfy+Fu0iOvftu2NukS5fwy/3uu/D732s6YzHZf38YORLefDMs\nkOrQAW66KbPdNQp3kRzZsAGuuAKOOQYOPDC01AcNyvxe6FI49tsPRowIi6E+/DCMt9x6K2zb1vR7\nK9xFsuyTT+B3vwtznvfcM2wRcMst+bcTo0TnBz8I4yyVlfD222EK5ahRYcZNYyncRbKkqipMZ2zf\nPqwsffNNuOce2HvvqCuTfNWuXdj4bfLkMI2yKYugNM9dJAumTYNrrgmHXtxzDxxxRNQVSaFx/2rf\nIC1iEoncO+/Af/5nGCQdMgROO01z1KVptIhJJEJbt8J//VeYz9y9ezgc4/TTFewSHYW7SBO4hz2+\nO3QIsx2WLAl7iWjbXYmatvIXaaQVK+Dyy0OoV1SEVrtIvlDLXaSBvvgCbrsNjjsuHKS8cKGCXfKP\nWu4iDTBnTjiQ4cADQ6jvv3/UFYnUTeEukoZt28Ly8Kefhj/8IZxTqsFSyWfqlhFJ4cUX4Sc/CStN\nlywJZ2Yq2CXfqeUusgtfTW+cNi2cqlNWFnVFIulTy12kDolEOKP0iy/CnHUFuxQatdxFavjss7DJ\nV0VFOOz4jDOirkikcRTuIklvvhkOz+jQARYvhr32iroikcZTt4wUverqsLnXz34WTsV58kkFuxQ+\ntdylqG3YABdfHE7DWbAA2raNuiKRzFDLXYrW1KnhUOouXWDmTAW7xIta7lJ0vvgCbrgBJkwIByJo\n6wCJI4W7FJVVq+D882HffcO5ld//ftQViWSHumWkaEyaBMceCxdeCM88o2CXeFPLXWKvqmpnN8zU\nqdC5c9QViWRfypa7mZWZ2TIzW2Fm19fxfgszm2Jmb5rZEjPrl5VKRRph3To46SRYtizs4qhgl2JR\nb7ibWQkwAigDDgH6mlmHWpddCSxx9yOAUuBeM9O/CCRyM2fC0UeHPdenTNHcdSkuqUK4M7DS3VcD\nmFkF0BNYWuOaaqB58vPmwEfuviPDdYqkzR2GDoXBg+GRR8LiJJFikyrcWwNrarxeCxxT65oRwBQz\nWw/8M3Be5soTaZhPPw2HaSxfDvPm6TANKV6pwt3TuEcZ8Lq7n2RmPwReMLPD3X1r7QvLy8u//ry0\ntJTS0tIGlCpSv9WroVcvOOIImD0b9tgj6opEGi6RSJBIJJp8H3PfdX6b2bFAubuXJV/fCFS7++Aa\n10wF7nD3V5OvXwKud/fXat3L6/teIk0xYwb07Qs33gi//rUO05D4MDPcvcE/0almy7wGtDOztma2\nO9AHmFzrmveB7skiWgEHA6saWohIY7jD/feHYH/sMbj6agW7CKTolnH3HWY2EJgOlAAPuftSMxuQ\nfH80cCvwsJktBgy4zt03Z7luEaqqQiv9lVfCwdUHHhh1RSL5o95umYx+I3XLSAZ99FE4y3TPPeHP\nf4bmzVP/d0QKUba6ZUTyzjvvhG0EOnWCZ59VsIvUReEuBWXGDDjxxDBwevfdUFISdUUi+UnhLgVj\n3Liwo2NFBfTvH3U1IvlN2wRI3nOHQYPgiSdg1iw4+OCoKxLJfwp3yWuffx5a6atWQWUl7LNP1BWJ\nFAZ1y0je2rIFevQIAf/yywp2kYZQuEteev/9cLZpp07w5JPaSkCkoRTukncWLw7BftllcO+98C39\nlIo0mPrcJa+8/HKYETNiBJyn/UVFGk3hLnnjqafgyitDN4w2DBVpGoW75IUHHoDbb4cXXoDDD4+6\nGpHCp3CXSLnDf/932NHxlVe0+ZdIpijcJTLV1WFXxzlzwuEarVpFXZFIfCjcJRJVVdCvH6xdG/aL\nadEi6opE4kXhLjm3fXuYCeMOzz2nOewi2aAZxJJTW7fCqaeGbXonTVKwi2SLwl1yZvNm6N4dOnSA\nRx6BZs2irkgkvhTukhMbN4a56yeeGKY9atWpSHbpV0yybu3aEOrnngt33aUDrEVyQQOqklWrV8PJ\nJ8MVV8C110ZdjUjxUMtdsmbFCujaFX77WwW7SK6p5S5ZsWxZGDy95Rb41a+irkak+CjcJeP++lc4\n5RS44w64+OKoqxEpTgp3yai33grBfu+9cMEFUVcjUrwU7pIxixZBWRkMHQp9+kRdjUhxU7hLRnwV\n7MOGQe/eUVcjIgp3abLFi0OwDx8e5rKLSPQ0FVKa5K23oEeP0GJXsIvkD4W7NNqSJWHwdOhQdcWI\n5BuFuzTK0qUh2IcM0eCpSD5SuEuDLV8OP/sZ3Hkn9O0bdTUiUheFuzTIqlVh5en//I8WKInkM4W7\npO3996FbN7jpJujfP+pqRKQ+CndJy/r1Idivvhr+4z+irkZEUlG4S0offBC6Yvr3h9/8JupqRCQd\nKcPdzMrMbJmZrTCz63dxTamZvWFmS8wskfEqJTJbtoRZMeecAzfeGHU1IpIuc/ddv2lWArwDdAfW\nAQuAvu6+tMY13wNeBXq4+1oz29vdN9VxL6/ve0n+2bo1zIo57rgw5VEnKInknpnh7g3+7UvVcu8M\nrHT31e5eBVQAPWtdcwEwwd3XAtQV7FJ4PvsMevaEn/xEwS5SiFKFe2tgTY3Xa5Nfq6kd8H0zm2Fm\nr5nZRZksUHKvqiqsOG3VCkaNUrCLFKJUG4el04/SDOgIdAP2BCrNbK67r2hqcZJ7X365c/76n/4E\nJSXR1iMijZMq3NcB+9V4vR+h9V7TGmCTu28HtpvZLOBw4B/Cvby8/OvPS0tLKS0tbXjFkjXuMHAg\nbNgAf/kLNGsWdUUixSeRSJBIJJp8n1QDqrsRBlS7AeuB+fzjgOqPgBFAD+DbwDygj7u/XeteGlDN\nczfdBC+8AC+9BM2bR12NiEDjB1Trbbm7+w4zGwhMB0qAh9x9qZkNSL4/2t2XmdlzwGKgGhhbO9gl\n/919NzzzDMyapWAXiYN6W+4Z/UZqueetcePCXjGzZ0ObNlFXIyI1ZaXlLvH3zDPwu9/BzJkKdpE4\nUbgXsUQCLrssDJ62bx91NSKSSdpbpki98Qacdx5UVECnTlFXIyKZpnAvQqtWwRlnwAMPwMknR12N\niGSDwr3IbNwYDrS++WYdaC0SZwr3IrJ1K5x2Glx4ofZkF4k7TYUsEl98EbpiDjhA+8WIFJLGToVU\nuBeB6uqwX8y2bTBhgvaLESkkmucuu3TDDfDee/Diiwp2kWKhcI+5P/wBpkwJq0/32CPqakQkVxTu\nMfbUU2HPmNmzYa+9oq5GRHJJ4R5Tr7wCV14Jzz8PbdtGXY2I5JqmQsbQ0qVhDvujj8IRR0RdjYhE\nQeEeMxs2hLnsgwfDKadEXY2IREXhHiPbtoW57JdcAv36RV2NiERJ89xjYscO6NUrHGr94INapCQS\nF42d566Wewy4w69/HVahavWpiIBmy8TCvffCq6+GGTI61FpEQOFe8J5+OixUqqzU2acispPCvYDN\nnQtXXAHTp+uIPBH5JvW5F6hVq+Dss+Hhh+HII6OuRkTyjcK9AG3ZAqefDoMGhTntIiK1aSpkgamq\ngrIyOOwwuO++qKsRkWzTfu5FwB1+9Sv44AOYNEnb94oUA+3nXgTuvhsWLgxTHhXsIlIfhXuBmDgR\nhg8PUx6/+92oqxGRfKdwLwALF8KAAfDcc5ryKCLp0WyZPLduHfTsCWPGQKdOUVcjIoVC4Z7HPv0U\nzjwTrroKfv7zqKsRkUKi2TJ5qro6HLjRogWMG6fNwESKlWbLxMygQbBpEzz+uIJdRBpO4Z6HHn0U\nKipg3jz49rejrkZECpG6ZfJMZWUYQH35ZTj00KirEZGo6bCOGHj/fTjnnLAZmIJdRJpC4Z4ntm2D\ns86Ca67RZmAi0nTqlskD1dXQu3c4bEMzY0Skpqx1y5hZmZktM7MVZnZ9PdcdbWY7zOzshhZR7MrL\n4X//V+efikjm1DtbxsxKgBFAd2AdsMDMJrv70jquGww8ByieGuDJJ2H8eJg/XzNjRCRzUrXcOwMr\n3X21u1cBFUDPOq67Cnga+DDD9cXa66/DlVfCs89Cq1ZRVyMicZIq3FsDa2q8Xpv82tfMrDUh8Ecm\nv6SO9TRs3Bi2FBg1Co44IupqRCRuUoV7OkE9FLghOVpqqFsmpc8/D+ef9usXpj6KiGRaqhWq64D9\narzej9B6r6kTUGFhJHBv4FQzq3L3ybVvVl5e/vXnpaWllJaWNrziAuceumJatYJbbom6GhHJN4lE\ngkQi0eT71DsV0sx2A94BugHrgflA39oDqjWu/yMwxd0n1vGepkISDtwYOxbmzNGhGyKSWlY2DnP3\nHWY2EJgOlAAPuftSMxuQfH90o6otUjNmwO236zQlEck+LWLKkffeg+OOgz//GU4+OepqRKRQaG+Z\nPLZtG/TqBTfdpGAXkdxQyz3L3OG880I3jLYWEJGG0mEdeerOO8NujzNnKthFJHcU7lk0bRqMGBG2\nFvjOd6KuRkSKicI9S5Yvh0sugUmToHXr1NeLiGSSBlSz4JNPwgDqbbfBT38adTUiUow0oJph1dVh\nS4FWrcK+MSIiTaEB1Txx++3wwQfwxBNRVyIixUzhnkFTp8Lo0bBgAey+e9TViEgxU7hnyPLl0L9/\n2Jt9332jrkZEip0GVDNg69awN/ttt4UtBkREoqYB1SZyD4dbt2wZdnsUEckkDahGZPBgWLMGHnss\n6kpERHZSuDfB88/DsGE63FpE8o/CvZFWr4aLLw5THtu0iboaEZFv0oBqI2zfHs5AveEG6No16mpE\nRP6RBlQbyD0cbF1VFfrZtdOjiGSTBlRzZORIeOONcFSegl1E8pVa7g1QWQk9e4bDrQ86KOpqRKQY\n6Ji9LNu4MZyoNG6cgl1E8p/CPQ07dkCfPmF/9jPOiLoaEZHU1C2ThmuugbffDhuDlZREXY2IFBMN\nqGbJU0/BxImwcKGCXUQKh1ru9Vi6FE48EaZPh44do65GRIqRBlQzbOvWsFBp8GAFu4gUHrXc6+Ae\nZsa0bAljxkRdjYgUM/W5Z9B994W9Yx55JOpKREQaRy33WmbNCq32efNg//2jrkZEip363DNgwwbo\n2xfGj1ewi0hhU7gnVVWFhUoDBkCPHlFXIyLSNOqWSbr22p0Llb6lP3kikic0oNoEEyfChAlhoZKC\nXUTioOhb7suXw/HHw7RpcNRRUVcjIvJNGlBthE8/hXPOgVtvVbCLSLwUbcvdHX75y/D5+PE6eENE\n8pP63BtozJhwotLcuQp2EYmftLplzKzMzJaZ2Qozu76O9y80s0VmttjMXjWzwzJfauYsXAiDBoVB\n1H/6p6irERHJvJThbmYlwAigDDgE6GtmHWpdtgo40d0PA24F8nZHls2boXfvcBZq+/ZRVyMikh3p\ntNw7AyvdfbW7VwEVQM+aF7h7pbv/PflyHtAms2VmRnV16Gfv2RPOPTfqakREsiedPvfWwJoar9cC\nx9Rz/aXAtKYUlS133QUffRS6Y0RE4iydcE97iouZnQT0B7rU9X55efnXn5eWllJaWprurZsskYCh\nQ+G112D33XP2bUVEGiSRSJBIJJp8n5RTIc3sWKDc3cuSr28Eqt19cK3rDgMmAmXuvrKO+0Q2FXLD\nBujUCR5+GE45JZISREQaJZuLmF4D2plZWzPbHegDTK71zX9ACPZf1BXsUdqxI+z0eNllCnYRKR4p\nu2XcfYeZDQSmAyXAQ+6+1MwGJN8fDfweaAmMtDBpvMrdO2ev7PTdfHPohrn55qgrERHJnVivUJ06\nFS6/HF5/HfbZJ6ffWkQkI7RCtZbVq+HSS8OOjwp2ESk2sdw47PPPw1F5110HXeqctyMiEm+x7Ja5\n6ipYuza02rVvjIgUMnXLJD35ZNibfeFCBbuIFK9YtdyXLw/dMNOnQ8eOWf1WIiI5UfSHdWzfHvaL\nufVWBbuISGxa7pdeCp99Bo8+qu4YEYmPou5zf/hhmDMHFixQsIuIQAxa7kuWwEknwYwZcOihGb+9\niEikirLPfdu2cPDGPfco2EVEairYlrs7XHRR2Ddm3LiM3VZEJK8UXZ/7gw/CokUwb17UlYiI5J+C\nbLkvWgTdu8Ps2XDwwRm5pYhIXiqaPvdPPgnz2YcNU7CLiOxKQbXc3eH886FlSxg1KkOFiYjksaLo\ncx85MmwxUFkZdSUiIvmtYFruCxfCqaeGxUoHHZTBwkRE8lis+9w//jjsz37//Qp2EZF05H3L3R3O\nOQdat4bhw7NQmIhIHottn/vw4bBmDTz+eNSViIgUjrxuuc+fD2eeCXPnwgEHZKkwEZE8Frs+9y1b\noE+fMOVRwS4i0jB52XJ3h5//HNq2haFDs1uXiEg+i1Wf+9ChsH59OA9VREQaLu9a7nPnwllnhQ3B\n1B0jIsUuFn3umzeH7QXGjFGwi4g0Rd603N2hZ0/44Q/hvvtyUpKISN4r+D73IUNg40Z4+umoKxER\nKXx50XKvrAyt9vnzwwwZEREJCrbP/at+9rFjFewiIpkSacvdPcyMad8e7r03J2WIiBSUguxzHzIE\nPvwQJkyIsgoRkfiJrOVeWQm9eoV+9v33z0kJIiIFp6D63L/qZ3/wQQW7iEg25Lzl/tV89vbt4Z57\ncvKtRUQKVtZa7mZWZmbLzGyFmV2/i2uGJd9fZGZH1ne/r/rZ77ijoaWKiEi66g13MysBRgBlwCFA\nXzPrUOua04CD3L0dcBkwclf3q6yEu+6Cigpo1qzJtResRCIRdQl5Q89iJz2LnfQsmi5Vy70zsNLd\nV7t7FVAB9Kx1zVnAeAB3nwd8z8xa1XUz9bMH+sHdSc9iJz2LnfQsmi5VuLcG1tR4vTb5tVTXtKnr\nZr17h5OVREQku1KFe7qjrbU7++v876mfXUQkN+qdLWNmxwLl7l6WfH0jUO3ug2tcMwpIuHtF8vUy\noKu7b6x1r9xMyxERiZlsrFB9DWhnZm2B9UAfoG+tayYDA4GK5B+Dj2sHe2OLExGRxqk33N19h5kN\nBKYDJcBD7r7UzAYk3x/t7tPM7DQzWwl8ClyS9apFRKReOVvEJCIiuZPx7QcyveipkKV6FmZ2YfIZ\nLDazV83ssCjqzIV0fi6S1x1tZjvM7Oxc1pcraf5+lJrZG2a2xMwSOS4xZ9L4/WhhZlPM7M3ks+gX\nQZk5YWbjzGyjmb1VzzUNy82wJUBmPghdNyuBtkAz4E2gQ61rTgOmJT8/BpibyRry5SPNZ3Ec0CL5\neVkxP4sa170MTAXOibruiH4mvgf8FWiTfL131HVH+CxuAu746jkAHwG7RV17lp7HCcCRwFu7eL/B\nuZnplntGFz0VuJTPwt0r3f3vyZfz2MX6gBhI5+cC4CrgaeDDXBaXQ+k8hwuACe6+FsDdN+W4xlxJ\n51lUA82TnzcHPnL3HTmsMWfc/RVgSz2XNDg3Mx3uGV30VODSeRY1XQpMy2pF0Un5LMysNeGX+6vt\nK+I4GJTOz0Q74PtmNsPMXjOzi3JWXW6l8yxGAIeY2XpgEXB1jmrLRw3OzUwf1pHRRU8FLu3/TWZ2\nEtAf6JK9ciKVzrMYCtzg7m5mxj/+jMRBOs+hGdAR6AbsCVSa2Vx3X5HVynIvnWdRBrzu7ieZ2Q+B\nF8zscHffmuXa8lWDcjPT4b4O2K/G6/0If2Hqu6ZN8mtxk86zIDmIOhYoc/f6/llWyNJ5Fp0IayUg\n9K+eamZV7j45NyXmRDrPYQ2wyd23A9vNbBZwOBC3cE/nWfQD7gBw93fN7D3gYML6m2LT4NzMdLfM\n14uezGx3wqKn2r+ck4GL4esVsHUueoqBlM/CzH4ATAR+4e4rI6gxV1I+C3c/0N0PcPcDCP3ul8cs\n2CG9349ngePNrMTM9iQMnr2d4zpzIZ1n8T7QHSDZv3wwsCqnVeaPBudmRlvurkVPX0vnWQC/B1oC\nI5Mt1ip37xxVzdmS5rOIvTR/P5aZ2XPAYsKA4lh3j124p/kzcSvwsJktJnRJXOfumyMrOovM7HGg\nK7C3ma0BbiF00TU6N7WISUQkhiI5Q1VERLJL4S4iEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjGkcBcR\niSGFu4hIDP0/S3I64oBgBEoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x107ad4d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f = lambda x: np.sin(2*x)\n",
"x = np.linspace(0, 1, 100)\n",
"y = f(x)\n",
"plt.plot(x, y);"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X = x.reshape((1, -1))\n",
"#y = y.reshape((-1, 1))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1, 100)\n",
"(100,)\n"
]
}
],
"source": [
"print(np.shape(X))\n",
"print(np.shape(y))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"input_var = theano.tensor.vector(name='X', dtype=theano.config.floatX)\n",
"target_var = theano.tensor.scalar(name='y', dtype=theano.config.floatX)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"### Set up the Layers\n",
"\n",
"1. Input Layer, size 1\n",
"2. Hidden Layer, fully connected, size 100\n",
"3. Output Layer, fully connected, size 1\n",
"\n",
"$y=g(x)$"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def build_NeuralNetwork(input_var=None):\n",
" layer_in = lasagne.layers.InputLayer(\n",
" shape=(1, ),\n",
" input_var=input_var)\n",
" layer_hid1 = lasagne.layers.DenseLayer(\n",
" layer_in, num_units=200,\n",
" nonlinearity=lasagne.nonlinearities.rectify,\n",
" W=lasagne.init.Uniform())\n",
" layer_out = lasagne.layers.DenseLayer(\n",
" layer_hid1, num_units=1)\n",
" return layer_out"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"network = build_NeuralNetwork(input_var)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"initial_W = network.W.get_value()\n",
"initial_b = network.b.get_value()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"prediction = lasagne.layers.get_output(network)\n",
"loss = lasagne.objectives.squared_error(prediction, target_var)\n",
"loss = loss.mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"params = lasagne.layers.get_all_params(network, trainable=True)\n",
"updates = lasagne.updates.adagrad(loss, params, learning_rate=1.0, epsilon=1e-06)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"### Training Function"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"train_fn = theano.function([input_var, target_var], loss, updates=updates)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Train"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1: Loss 0.592776\n",
"Epoch 1000: Loss 0.592776\n",
"Epoch 2000: Loss 0.592776\n",
"Epoch 3000: Loss 0.592776\n",
"Epoch 4000: Loss 0.592776\n",
"Epoch 5000: Loss 0.592776\n"
]
}
],
"source": [
"for epoch in range(5000):\n",
" loss = 0\n",
" for i in range(X.size):\n",
" \n",
" # Train the Network\n",
" loss += train_fn(X[:,i], y[i])\n",
" \n",
" # Outputs\n",
" if epoch==0 or epoch%1000==999:\n",
" print(\"Epoch %d: Loss %g\" % (epoch + 1, loss/X.size))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"f(0.51)=0.00\n"
]
}
],
"source": [
"test_prediction = lasagne.layers.get_output(network, deterministic=True)\n",
"predict_fn = theano.function([input_var], theano.tensor.argmax(test_prediction, axis=1))\n",
"print(\"f(%.2f)=%.2f\" % (X[:,50], predict_fn(X[:,50])))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"### Check"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"trained_W = network.W.get_value()\n",
"trained_b = network.b.get_value()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x109352790>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/paul/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self._edgecolors == str('face'):\n"
]
},
{
"data": {
"image/png": "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\nEYm6/w89TYcMhGY4HgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x109158310>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(initial_W, trained_W, c='b', alpha=0.5)\n",
"plt.scatter(initial_b, trained_b, c='g', alpha=0.5)\n",
"plt.xlabel('initial')\n",
"plt.ylabel('trained')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"### Plot the function"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"y_pred = []\n",
"for i in range(X.size):\n",
" y_pred.append(predict_fn(X[:,i]))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10964cb10>]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x109158850>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# :-(\n",
"\n",
"Is not learning at all"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment