Skip to content

Instantly share code, notes, and snippets.

@botev
Last active June 25, 2016 15:58
Show Gist options
  • Save botev/61995db541f915c30f61563fd114ac9c to your computer and use it in GitHub Desktop.
Save botev/61995db541f915c30f61563fd114ac9c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Imports\n",
"import theano.tensor as T\n",
"import theano\n",
"import numpy as np\n",
"from theano import pp\n",
"%matplotlib inline\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total number of parameters: 33\n"
]
}
],
"source": [
"# Size of layers\n",
"sizes = [2, 5, 3]\n",
"# Currently linear activation\n",
"nonl = lambda x : x\n",
"# Input\n",
"x = theano.shared(np.random.randn(4, sizes[0]).astype(theano.config.floatX), name=\"x1\")\n",
"# Targets\n",
"t = theano.shared(np.random.randn(4, sizes[-1]).astype(theano.config.floatX), name=\"t\")\n",
"# Total number of parametrs\n",
"d = 0\n",
"for i in range(len(sizes) - 1):\n",
" d += (sizes[i] + 1) * sizes[i+1]\n",
"print(\"Total number of parameters:\", d)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Layer 0 parameter's range: [ 0 , 15 ]\n",
"Layer 1 parameter's range: [ 15 , 33 ]\n"
]
}
],
"source": [
"# Flattened parameters\n",
"flat_p = theano.shared(np.random.randn(d).astype(theano.config.floatX),name=\"w1\")\n",
"# List of W matricies\n",
"params = list()\n",
"d = 0\n",
"for i in range(len(sizes) - 1):\n",
" d_new = d + (sizes[i] + 1) * sizes[i+1]\n",
" print(\"Layer\", i, \"parameter's range: [\", d, \", \", d_new, \"]\")\n",
" params.append(flat_p[d:d_new].reshape((sizes[i] + 1, sizes[i+1])))\n",
" d += d_new"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Forward pass\n",
"h = x\n",
"# Bias terms \n",
"on = T.zeros((x.shape[0], 1))\n",
"for i in range(len(sizes) - 1):\n",
" # Append biases\n",
" h = T.concatenate((h, on), axis=1)\n",
" # Multiply with W[i]\n",
" y = T.dot(h, params[i])\n",
" # Apply nonlinearity\n",
" h = nonl(y)\n",
"# We ignore the nonlinearity of the last layer, so we take y\n",
"loss = T.sum((y-t)**2, axis=1).mean() / 2.0\n",
"# Hessain calculation as https://groups.google.com/forum/#!topic/theano-users/2c15kq68lp8\n",
"func = theano.function([], theano.gradient.hessian(loss, flat_p))\n",
"# Evaluate and stack it to a square matrix\n",
"hess = np.vstack(func());"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4e0a3dcd30>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEACAYAAACnJV25AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFb5JREFUeJzt3X2UXHV9x/H3NwmBxAQ1QIAkEghIKQgiSBUoYQxFqRZQ\nxIL0WB7U0hbF1j5gbT3Enj5aq8RDHxSBSgqiRGhAEcJDJ0CAAAYEISBKiQl5MEhsYqiQzf76x51N\nlmV3sztzd+/cO+/XOXN2ZhjufHNn97O//d3v/d1IKSFJqo4xRRcgScqXwS5JFWOwS1LFGOySVDEG\nuyRVjMEuSRWTS7BHxF9ExOMR8WhEXB0R4/PYriRp+FoO9oiYCXwUeEtK6TBgHHBmq9uVJDVnXA7b\n2Ai8DLwmIrqBicDqHLYrSWpCyyP2lNIG4J+BnwDPAT9PKd3e6nYlSc3JYypmFvDHwExgGjApIs5q\ndbuSpObkMRXzVmBJSukFgIi4HjgGuKb3iyLCRWkkqQkppRjO6/PoinkKeHtE7BIRAZwALB+guNLe\nLr744sJr6NT6y1y79Rd/K3v9zchjjv37wFXA94DvAwF8pdXtSpKak8dUDCmlfwL+KY9tSZJa45mn\nQ1Sr1YouoSVlrr/MtYP1F63s9Tcjmp3DGfYbRaTRei9JqoqIIBVw8FSS1EYMdkmqGINdkirGYJek\nijHYJaliDHZJqhiDXZIqxmCXpIox2CWpYgx2SaoYg12SKsZgl6SKMdglqWIMdkkaggcegDvuKLqK\noTHYJWkIbroJ7rmn6CqGxmCXpCF49lnYd9+iqxgag12ShsBgl6SKKVOwe2k8SdqBl1+GyZNh82YY\nN25039tL40nSCFi5EqZNG/1Qb5bBLkk78OyzMHNm0VUMncEuSTtQpvl1MNglaYdWrDDYJalSHLFL\nUsUY7JJUMWULdvvYJWkQRfawg33skpS7Vatg773L08MOBrskDaps0zBgsEvSoMp2chIY7JI0qLL1\nsIPBLkmDcipGkirGYJekiunYYI+I10bEdRGxPCIej4i35bFdSSrSli2wdi3MmFF0JcOTV2fmPODm\nlNIHImIcMDGn7UpSYVatgr32gp12KrqS4Wk52CNiV+C4lNI5ACmlLmBjq9uVpKKVcRoG8pmK2Q94\nPiKujIhlEfGViJiQw3YlqVBl7GGHfKZixgFHABeklB6KiEuATwEX933h3Llzt92v1WrUarUc3l6S\nRkYRI/Z6vU69Xm9pGy0vAhYRewL3pZRmNR7/OnBRSunkPq9zETBJpXLOOTB7Npx3XnE1FLIIWEpp\nHbAyIg5sPHUC8ESr25WkopV1jj2vrpgLgasjYifgGeDcnLYrSYUpa7C7Hrsk9aOrC17zGti0CcaP\nL64O12OXpJysWgV77llsqDfLYJekfpR1GgYMdknqV1l72MFgl6R+OWKXpIox2CWpYsp45aQeBrsk\n9aPMI3b72CWpj3bpYQf72CUpF889B1OnFh/qzTLYJamPMk/DgMEuSa9S5h52MNgl6VUcsUtSxRjs\nklQxZe5hB4Ndkl6l7CN2+9glqZeeHvaNG2HnnYuuxj52SWrZ6tWwxx7tEerNMtglqZeyT8OAwS5J\nr2CwS1LFlP3kJDDYJekVHLFLUsUY7JJUMWU/OQnsY5ekbbZuhYkT26eHHexjl6SWrF4Nu+/ePqHe\nLINdkhqqML8OBrskbWOwS1LFVKGHHQx2SdrGEbskVYzBLkkVU5Vgt49dktjew/6//wu77FJ0NdvZ\nxy5JTVqzBnbbrb1CvVkGuyRRnWkYMNglCTDY+xURYyJiWUTcmNc2JWm0VKWHHfIdsX8CeCLH7UnS\nqHHE3kdEzADeDXw1j+1J0mgz2F/ti8CfAfYzSiolg72XiHgPsC6l9AgQjZsklUZ3N6xcCfvsU3Ql\n+RiXwzaOBU6JiHcDE4DJEXFVSul3+75w7ty52+7XajVqtVoOby9JrVmzBqZMgQkTiq4E6vU69Xq9\npW3keuZpRBwP/ElK6ZR+/ptnnkpqS0uWwJ/+Kdx3X9GVvJpnnkpSE6o0vw75TMVsk1JaDCzOc5uS\nNNKq1MMOjtglqXIjdoNdUscz2CWpYqoW7K7HLqmjdXXBpEnwwgvZeuztxq4YSRqmxYvhsMPaM9Sb\nZbBL6mjXXQenn150FflyKkZSx9q6FaZNg3vvhf33L7qa/jkVI0nDcPfdMH16+4Z6swx2SR1rwQL4\nwAeKriJ/TsVI6kjd3TBjBtTrcOCBRVczMKdiJGmI7r0X9tijvUO9WQa7pI5UxW6YHk7FSOo43d3Z\nRTVuuw1+9VeLrmZwTsVI0hAsXQqve137h3qzDHZJHWfBgupOw0DO67FLUrtLKQv273yn6EpGjiN2\nSR3lwQeza5seckjRlYwcg11SR+mZholhHY4sF6diJHWMnmmY668vupKR5YhdUsd4+GEYOxbe/Oai\nKxlZBrukjtEJ0zBgsEvqEClV+2zT3gx2SR3h0Uezy+AdcUTRlYw8g11SR+iUaRgw2CV1gJ5pmCqu\nvd4fg11S5T3xBLz4Ihx1VNGVjA6DXVLlddI0DBjskjpAp3TD9DDYJVXa8uXw85/D299edCWjx2CX\nVGnf+ha8//0wpoPSroP+qZI6UdXXXu+PwS6psp5+Gtatg2OOKbqS0WWwS6qsK6+E007LFv7qJC7b\nK6lyUoLPfhauvRZuv73oakafwS6pUrZsgfPPz9aGue8+2HPPoisafQa7pMrYtClbNmDsWKjXYdKk\noisqRstz7BExIyLujIjHI+KxiLgwj8IkaTjWrIHjj4d99oGFCzs31CGfg6ddwCdTSocARwMXRMRB\nOWxXkoZk+XI4+ujsQOmXvwzjOnwuouV/fkppLbC2cf8XEbEcmA482eq2JWlH7r4761P/3Ofg7LOL\nrqY95Pp7LSL2BQ4Hlua5XUnqz3XXwQUXwNVXw4knFl1N+8gt2CNiErAA+ERK6Rd5bVeS+tq6FebN\ngy98ARYtgsMPL7qi9pJLsEfEOLJQn59SWjjQ6+bOnbvtfq1Wo1ar5fH2kiquqwuWLYPFi7NulyVL\n4KCD4N57s4OlVVKv16nX6y1tI1JKLRcSEVcBz6eUPjnIa1Ie7yWp+rZsgYceyoJ88eLtAV6rZZ0v\ns2fD1KlFVzk6IoKU0rBWkm852CPiWOAu4DEgNW6fTind0ud1BrukQXV1we//PnzzmzBrVhbitRoc\ndxzsvnvR1RWjmWDPoytmCdBhKzFIylt3N5x7Ljz/PDz7LEyZUnRF5dXh3Z6S2kFKWXfLT34C3/0u\nTJxYdEXlZrBLKlRKcNFF2Zz6HXcY6nkw2CUV6m//Nhul1+uw665FV1MNBrukwlxyCXzta3DXXbDb\nbkVXUx0Gu6RCXH45fPGLWajvvXfR1VSLwS5p1H3jG/CZz2TTLzNnFl1N9RjskkbVt78NF14It90G\nBx5YdDXVZLBLGjV33pn1qn/723DYYUVXU11ezFrSqHjoITjjjGxFxre9rehqqs1glzTi1qyB970P\n/v3fsyUCNLIMdkkj6qWX4P3vhw9/OPuqkZfL6o5DeiMXAZM6TkrwkY/Ahg2wYAGMcSg5bIUsAiZJ\nA7n0UnjgAbjvPkN9NDlilzQi7rgDfud3srXUZ80quprycsQuqS088wycdRZ8/euGehH840hSrjZt\nglNOgb/6K5gzp+hqOpNTMZJy092ddb7sthtcdhnEsCYQ1B+nYiQV6q//Gn76U7j2WkO9SAa7pFx8\n61twxRVZF8zOOxddTWdzKkZSyx59FE44AW65BY48suhqqqWZqRgPnkpqyZNPwsknw7x5hnq7MNgl\nNW3p0mztl7lzs/ZGtQfn2CU15ZZb4EMfgiuvhN/6raKrUW+O2CUN2/z5cPbZsHChod6OHLFLGpbP\nfx6+9CX47/+Ggw8uuhr1x2CXNCTd3fDnfw433wxLlsAb3lB0RRqIwS5ph7ZsgfPOgx//GO65B6ZM\nKboiDcZglzSozZvh9NNh7Fi4/XaYOLHoirQjHjyV1K+U4KmnsoW89toLbrjBUC8LR+yStlm1Cu68\nc/tt61Y4/3z4zGdc+6VMXFJA6mDr12fdLT1BvmEDvOMd2Sh9zhx44xsN9KI1s6SAwS51kF/+Eu6+\nGxYtym4rVsBxx2XrvMyZA296k5ewazcGu6RXSAmeeCIL8VtvzdoUDzsM3vUuOPFEOOooGOeEbFsz\n2CWxYcP2IF+0CHbaKQvyd74zG5W/7nVFV6jhMNilDrV5M9x4Y3aN0cWLYfbsLMzf9S444ADnycvM\nYJc6yMsvZ6Pyr389Oxv0mGPggx+EU0+FXXctujrlpbBgj4iTgEvI+uIvTyn9Yz+vMdilFm3dCnfd\nBddck/WVH3xwFuannw577FF0dRoJhVzzNCLGAJcCJwCrgQcjYmFK6clWty2VVUqwcSOsXp1dA3Tj\nxuy2adPA9196KVuPZevWgb+uXw8zZmRhvmwZ7LNP0f9StaM8jof/GvB0SmkFQERcC5wKGOyqnJSy\nEF6zBtauzYJ7oFsETJ8OU6fCa18LkydnUyQ9t913335/8uTsOqFjx2bthr2/9r6/664uvqUdyyPY\npwMrez1eRRb2asJLL2WncT/9NHR1FV1N53rxxSy8ewK89/0I2Hvv7DT7adO234444pWPJ08u+l+h\nTjWqHaxz587ddr9Wq1Gr1Ubz7dtKdzc88wz84AfZ7bHHsq/PPAP77Qe/8iswfnzRVXauCROy8D7g\ngOwEnr32yh7vvTdMmlR0daqyer1OvV5vaRstHzyNiLcDc1NKJzUefwpIfQ+gdsrB064u+NnP4Pnn\ns/nQvl/Xr4cf/QiWL8/+FH/Tm7LboYdmXw86KPuTXJKgoK6YiBgLPEV28HQN8ADwwZTS8j6vK22w\nX3hh1lbW3b39ltIrH3d3Z+1nGzfC61+fdSjssUcW3n3v77cfHHKILWmSdqyQrpiU0taI+BiwiO3t\njst38L+Vxg9/CNdemy2UNH58dhBrzJhsnrXnfs9tp52ys/rGji26akmdzBOUduBjH8vC+m/+puhK\nJHUizzzN2YYNsP/+2UHNadOKrkZSJ2om2F2gcxBf/Sq85z2GuqRyccQ+gK4umDUrO237yCOLrkZS\np3LEnqPrr4d99zXUJZWPwT6ASy6BP/qjoquQpOEz2PuxdGl2+vippxZdiSQNn8Hej0suyU5Ksh9d\nUhl58LSPVauya0L+z/9kK/JJUpE8eJqDf/kX+NCHDHVJ5eWIvZfNm7NOmPvvz05MkqSiOWJv0fz5\ncOyxhrqkchvV9djbWXc3zJsH//ZvRVciSa1xxN5w662wyy5w/PFFVyJJrTHYG3pOSIphzWRJUvvx\n4Cnw+ONwwgmwYoVXL5LUXjx42qR58+AP/sBQl1QNHT9if/55eOMb4amnYOrUoquRpFdyxN6EL38Z\n3vc+Q11SdXT0iP3ll7MLS998M7z5zUVXI0mv5oh9GNavhzPPzALdUJdUJR0Z7Ndfny30tf/+2X1J\nqpKOOvN0wwb4+Mez9dYXLMiWD5CkqumYEfvNN8Ohh8KUKfDII4a6pOqq/Ih940b45Cfh9tvhqqtg\nzpyiK5KkkVXpEfsdd2Rz6WPGwKOPGuqSOkMlR+wvvggXXQQ33ACXXQa/+ZtFVyRJo6dyI/YHH4Qj\njoAXXoDHHjPUJXWeyozYu7rg7/8eLr0UvvQlOOOMoiuSpGJUIth/9KPsOqWTJsGyZTB9etEVSVJx\nSj0VkxJ85Stw9NFw1lnZxTIMdUmdrrQj9nXr4CMfgeeeg8WL4eCDi65IktpDKUfsCxfC4YdnrYz3\n32+oS1JvpRmx//KXWaBfcUU2p+6SAJLUv7YO9pTge9+DK6+Eb3wD3vIWOPfcbP30CROKrk6S2lNb\nBvu6dfCf/wn/8R/ZyUbnnJMF/MyZRVcmSe2vpQttRMTngJOBl4AfA+emlDYO8NqUUqK7G/7v/7LA\n7ntbswauuQbqdXjve7PR+XHHZUsCSFInKuJCG4uAQ1JKhwNPA38x2IsnTIBx47LL0B18MMyeDaed\nBr/3e/DpT8P8+XDyybByZTZaP/749gn1er1edAktKXP9Za4drL9oZa+/GS3FZkrp9pRSd+Ph/cCM\nwV7/wguwdSts3pxdwWjFCli+PJtmuftuuOkm+PCHYfLkVqoaGWX/5ihz/WWuHay/aGWvvxl5jofP\nA7472AsmTIAY1h8UkqTh2uHB04i4Ddiz91NAAv4ypXRT4zV/CWxJKV0zIlVKkoaspYOnABFxDvBR\nYE5K6aVBXtfaG0lShxruwdOW2h0j4iTgz4DZg4V6M4VJkprTarvj08B44GeNp+5PKf1hHoVJkprT\n8lSMJKm9jHiXeEScFBFPRsQPI+KikX6/vEXEsxHx/Yh4OCIeKLqeHYmIyyNiXUQ82uu510fEooh4\nKiJujYjXFlnjYAao/+KIWBURyxq3k4qscTARMSMi7oyIxyPisYi4sPF8238G/dT+8cbzpdj/EbFz\nRCxt/Kw+HhF/13i+7fc9DFr/sPf/iI7YI2IM8EPgBGA18CBwZkrpyRF705xFxDPAkSmlDUXXMhQR\n8evAL4CrUkqHNZ77R+BnKaXPNX65vj6l9Kki6xzIAPVfDGxKKX2h0OKGICL2AvZKKT0SEZOA7wGn\nAufS5p/BILWfQXn2/8SU0osRMRZYAvwJcAptvu97DFD/bzDM/T/SI/ZfA55OKa1IKW0BriX7RimT\noETLG6eU7gH6/hI6Ffha4/7XgPeOalHDMED9kH0ObS+ltDal9Ejj/i+A5WQn7rX9ZzBA7T2XrinL\n/n+xcXdnsp/bDZRg3/cYoH4Y5v4f6cCaDqzs9XgV279RyiIBt0XEgxHx0aKLadLUlNI6yH54gakF\n19OMj0XEIxHx1Xb9U7qviNgXOJzsrOw9y/QZ9Kp9aeOpUuz/iBgTEQ8Da4F6SukJSrTvB6gfhrn/\nSzMSLdCxKaUjgHcDFzSmCsqubEfM/xWY1ViTaC1QhimBScAC4BON0W/ffd62n0E/tZdm/6eUulNK\nbyH7K+m4iKhRon3fp/7ZEXE8Tez/kQ7254B9ej2e0XiuNFJKaxpf1wM3kE0vlc26iNgTts2j/rTg\neoYlpbQ+bT8YdBlwVJH17EhEjCMLxvkppYWNp0vxGfRXe9n2P0BjldmbgbdSkn3fW6P+7wBvbWb/\nj3SwPwgcEBEzI2I8cCZw4wi/Z24iYmJj9EJEvAZ4J/CDYqsakuCVc3I3Auc07p8NLOz7P7SZV9Tf\n+GHscRrt/xlcATyRUprX67myfAavqr0s+z8idu+ZpoiICcCJwMOUZN8PUP8jzez/Ee9jb7TmzCP7\nJXJ5SukfRvQNcxQR+5GN0hPZWbpXt3v9EXENUAN2A9YBFwP/BVwHvAFYAfx2SunnRdU4mAHqfwfZ\nfG838Cxwfs+cabuJiGOBu4DHyL5vEvBp4AHgm7TxZzBI7WdRgv0fEYeSHRztaXiYn1L6fERMoc33\nPQxa/1UMc/97gpIkVYwHTyWpYgx2SaoYg12SKsZgl6SKMdglqWIMdkmqGINdkirGYJekivl/FoTn\nDSG0hxwAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4dff08db00>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Make an image of the Hessian\n",
"plt.imshow(hess, interpolation='none')\n",
"plt.colorbar()\n",
"plt.show()\n",
"# Calculate the eigen values and plot them\n",
"w, v = np.linalg.eigh(hess)\n",
"plt.plot(w)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment