{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# LISSOM's weights and activations\n", "This notebook plots the weights and activations of different LISSOM layers:\n", "\n", "- *Cortex:* a torch.Linear layer with special initilization and connective radius, to represent an afferent, excitatory or inhibitory map\n", "- *LGN:* a layer representing the Lateral Geniculate Nucleus of the brain. \n", "- *ReducedLissom:* combines the activation of three cortex layers as lateral interactions of the same map, representing the V1 of the brain\n", "- *Lissom:* combines the activation one ReducedLissom and two LGN's, a model of the full visual processing till the V1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**REMARK**: All ipynb's except *OrientationMaps* instantiate each layer explicitly with the neccesary arguments, to show all the params. For complex layers, they are a lot, but **pylissom** provides a tool for simplifying this, reading from a config file, akin to *pytorch* model zoo. For this and other helpful tools, please check the *Orientation Maps* ipynb and the documentation page." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pylissom.nn.modules.lissom import *\n", "from pylissom.nn.modules import register_recursive_input_output_hook\n", "from pylissom.utils.plotting import *\n", "from pylissom.utils.stimuli import gaussian_generator\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspecting a Cortex layer’s weights" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we build a cortex layer of dimension 5x5. This layer receive its input from an input layer of dimension 25x25. Each cortex neuron will have a receptive field of radius 5. The connection weights are initialized with a Gaussian function of $\\sigma = 5$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = 25**2\n", "out_features = 5**2\n", "cortex = Cortex(in_features, out_features, radius=5, sigma=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we plot in grayscale the layer's initial weights using the `plot_layer_weights` helper function.\n", "\n", "As the dimension of V1 is 5x5, there are 25 neurons in V1. The plot shows the initial weights for each of these neurons, in a 5x5 array. Each neuron has 25x25 square plot, representing the retina. The weights are seen as clouds of white dots. As each neuron has a receptive field of radius 5, circular white plots of radius 5 are observed in the figure. However, most of the 25x25 weights of each neuron are equal to zero because they are outside the receptive field of the neuron, which explains the plot’s darkness" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n/dS1gax9H1555ZXFmBNOOKHoPfvss0XvmGOOadSPP/54Meahhx4qel33JqNP1+vO2LHlr/T+bALa\nZpttijHr1q0rehMnTix67RPPZsyYUYxZvnx50WN0ap8oe8sttxRj2pu6IyIuu+yyonfUUUcN3sQ6\neIILAEBVBFwAAKoi4AIAUJVRtQb37//+7xv1a1/72mJM1xv477fffkVvwoQJjdoa3Ho899xzRW/Z\nsmWNumud2M4771z0VqxYUfTab9b/4x//uBhzxBFHFL2HH364nCxV6Fr7eO+99xa97bffvlF3rbft\nWtP2yCOPFL32ASNdb8LfdeCIdd916Foj23XPdb3pfvt34mOPPVaM6fpd+vzzzxe99j6FrvXi1KP9\nWvfmN7+5GNN1+NFf/MVfFL32/qivfOUrA5xdkye4AABURcAFAKAqAi4AAFURcAEAqMqo2mTWXry+\n7777FmO22267onfppZcWvWOPPXbwJsaI8sILLxS9qVOnNuquDWVdb5R/xx13FL0ddtihUZ944onF\nmK6NboccckjRu+mmm4oeo0/78I+I7gNHFi1a1Ki7NjHus88+Ra+9sbFrXNfGjuuuu66cLFV45pln\nil7X77+uce1NZccdd1wxpus17Lbbbit67UMiuv5boB7tQ226/n1/4QtfKHpdr09/+Zd/OWjz6uIJ\nLgAAVRFwAQCoioALAEBVBFwAAKoyqjaZfeITn/iFdUTESSedVPTai6IjIv7zP/+zUe+6667FmPbp\nV4w8Xf/eujZarF27tlGvXr26GLN48eKi99a3vrXotTfuXHnllcWYWbNmFb1tt9226B166KGN2qaz\nke+ggw4qevfcc0/R23HHHYvekiVLGvWTTz5ZjNlqq62K3m677Vb02idUdZ1i1fXa19Xrmj8jy/jx\n4xt11ybGBx98sOjtscceRe/RRx9t1MuXLy/GtDePRUS89NJLRa+9ia3rVL+uU0fnz59f9BhZ2ie+\nRpSvFV2bp7s2bH/wgx8seu0TZL/0pS+90in+Qp7gAgBQFQEXAICqCLgAAFRFwAUAoCqjapPZ5Zdf\n3qjf+c53FmO6NhjdfvvtRW+XXXZp1O3FzowOXRsB16xZU/QOO+ywRv2Tn/ykGNN1utnKlSuL3syZ\nMxt116adrg0UXZs2ujaFMLLdcsstRW/OnDlF70c/+lHRa9+H7ROlIrrvp/amoIiIn/3sZ436hBNO\n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\neBcFAAD6NuTvogAAACOOgAsAQFUEXAAAqiLgAgBQFQEXAICqCLgAAFRloO+Du0lNmDChUT/33HPD\nNBM2FwceeGDR++lPfzoMM2FzMWfOnKJ36623DsNM2FwcdthhRe/GG2/sGAmD55RTTmnUl1xyyaB+\nf09wAQCoioALAEBVBFwAAKoi4AIAUJVRtcls/PjxjXqvvfYqxixcuLDoTZo0qeg9/vjjgzcxRrzd\nd9+9Ue+8887FmLVr1xa9+fPnF71DDjmkUd9///3FmHXr1hW9xx57rK9pUpGujTtPPfVUox4zZkwx\n5q677ip6xxxzTNFbvXp1o160aFExJufc1zSpSPt1LiLiiSeeKHrtDdovvvhiMWbHHXcsenvssUfR\nu/nmmxv1Cy+80Nc0qci4ceOK3pZbbln09t9//6I3c+bMIZnTz3mCCwBAVQRcAACqIuACAFAVARcA\ngKqMqk1mxx9/fKM+4ogjijF/8zd/U/S6Fsa3NwE5naoeXYvZ2xt32ht0IiK23377ojd37tyit3z5\n8kb98MMPF2P23nvvotc+iS8iYuXKlUWP0WfixIlF75577il6s2fPbtTXX399MaZ9uk9ExBVXXFH0\nXnrppUa93XbbFWMeffTRcrJUYZdddil6a9asKXrTp08veosXL27UXfdq1wbIsWPLyLDNNts06q7/\nFro24jI6ve51r2vUXZsRuza3dt2vXRvUBpMnuAAAVEXABQCgKgIuAABVEXABAKjKqNpk1j4F6KKL\nLirGdG0y++EPf1j0uhbVU6/2xodZs2YVY9r3V0TErrvuWvTuvvvuRj158uRiTNfJQFOmTCl6NpnV\noWuD15577ln02qdKdd2HXSdB7bPPPkXv9ttvb9TtzR8REatWrSp6t9xyS9Fj9OnaPNa1qbBrI097\ns2PXvbps2bKi13UC6IEHHtiob7311nKyVKP97/fDH/5wMabrpNDPfvazRa9rs/dg8gQXAICqCLgA\nAFRFwAUAoCqjag1u+82pu9Ybdb3p/rx584reIYcc0qhvuummAc6OkeL5558veu01Zl1jdtttt6LX\ntR6yvabtmGOOKcZ885vfLHpvfOMbi96iRYuKHqPPzJkzi96TTz5Z9G677bZGPWfOnGJM11rwqVOn\nFr32mu6ur3vuuefKyVKFZ599tuh13QP77rtv0WsfbLRkyZJizMEHH1z0un7nXn755Y36qKOOKsZ0\n7YNhdPqVX/mVRr3lllsWY/70T/+0X9/rN3/zNxv1P//zP2/8xDp4ggsAQFUEXAAAqiLgAgBQFQEX\nAICqpJzzcM8hUkr9msSnP/3pRn3zzTcXYx588MGiN23atKJ33XXXNeqTTjqpGPOFL3yhP9NiGO23\n335Fb926dUWvfaBC1xvnb7FF+f/3ujae/fjHP27U48ePL8Z03XNr1qzp82e2NyEx8kyYMKHoTZo0\nqegdfvjhRe+BBx5o1DvssEMx5r777it6XRt+VqxY0ajHji33DHdtMnvppZeKXvueZuRpv9Z1vUl+\n1+bZ7bffvui1X9fuuuuuYsyrXvWqotd1gE170+22225bjFm7dm3Ra290Y+T54Ac/WPTar39d/77/\n4R/+oei9613vKnqf+9znGnXXffIy5uec5/Y1yBNcAACqIuACAFAVARcAgKoIuAAAVGVUbTLbfffd\nG/UnP/nJYsw555xT9LpOX2lv2vi3f/u3/kyBUeDEE08seldddVWj3mWXXYoxXZt7TjnllKLX3tzY\ntamta1NQew4R3SelMfqklIpe1+lmzzzzTKPu2ozYtbmnvTktotygttVWWxVjbrnllqL3xBNPFD1G\nn9e+9rVFb/78+UWvawPkNtts06i7NjuOGTOmX9//5JNPbtRdm7/bm3wZvdq/22bPnl2MaZ9uF9F9\nyl57k3X79fEXsMkMAIDNj4ALAEBVBFwAAKoi4AIAUJXy6JsR7Omnn27U//iP/1iMefe73130vv3t\nbxe9rpNbqMOCBQuK3nbbbdeou04oa99fEd2nPh155JGNetmyZcWYrhPJ9tprr6K3aNGiosfoc/TR\nRxe9H/3oR0Wvfe+0TyOLiFi1alXRmz59etG74447fuH3jojYeeedi55NZnXo2tjYtdGwayNje3N5\n1+aers1pXRt4b7311kbdda/aZFaPrbfeulF3bYD90Ic+VPRuuOGGovfss8826iuvvHKAs2vyBBcA\ngKoIuAAAVEXABQCgKqNqDW57PeSv/uqvFmM+/vGPF72TTjqp6H33u98dvIkxojzyyCNFb7/99mvU\nCxcuLMasXr266HWtV1yyZEmj3nLLLYsxkydPLnrWodWrax32+PHj+/y6rjfTX7t2bdHrWlc+YcKE\nRn3NNdcUY/bee+8+58Do9Pjjjxe9rvW2Y8eWv+anTJnSqLte57rW4HatD1++fHmjfuihh8rJUo2l\nS5c26va9FBExbty4otf+vRkRMWPGjMGbWAdPcAEAqIqACwBAVQRcAACqIuACAFCV1H7D52GZREr9\nmsSnPvXib/O9AAAbPklEQVSpRn3ZZZcVY7oWuHdt2rj77rv7Oz0q0N701bX5Zs2aNUWv6/CH9v30\n6KOPFmP22GOPoudwkc1L1wayww47rFHfdNNNxZiuzT1d99hBBx3UqO+9995izGOPPdbnPKnHFluU\nz6z233//ovfiiy826u23374Y095MFNG9eba9YXfdunV9zpN6/Nqv/VrR6zqwoWtDWfs+bB8a8gvM\nzznP7WuQJ7gAAFRFwAUAoCoCLgAAVRFwAQCoyqjaZHb66ac36gsvvHBI5gM/13Uy0IoVK4ZhJmwu\ntt5666L31FNPDcNM2FzMnVvu15k3b94wzITNyXvf+95Gfe655/b3S20yAwBg8yPgAgBQFQEXAICq\nCLgAAFRlVG0yAwBgs2aTGQAAmx8BFwCAqgi4AABURcAFAKAqAi4AAFURcAEAqIqACwBAVQRcAACq\nIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsAQFUEXAAAqiLgAgBQFQEXAICqCLgA\nAFRFwAUAoCoCLgAAVRFwAQCoioALAEBVBFwAAKoi4AIAUBUBFwCAqgwo4KaU/iiltDCldHtK6YKU\n0oSU0pSU0g9SSkt6f04erMkCAEBfNjrgppSmR8QHI2JuzvmAiBgTEadHxEci4oqc86yIuKJXAwDA\nJjHQJQpjI+JVKaWxEbFVRDwYEadGxHm9z58XEW8b4M8AAIB+2+iAm3N+ICL+LiLuj4gVEfF4zvn7\nEbFTznlFb9jKiNhpwLMEAIB+GsgShcmx/mntzIjYJSImppTeteGYnHOOiPwyX39WSmleSmnexs4B\nAADaBrJE4Y0RcV/OeXXOeW1EfCMijoiIVSmlaRERvT8f6vrinPPZOee5Oee5A5gDAAA0DCTg3h8R\nh6eUtkoppYg4PiLuiIiLI+KM3pgzIuLbA5siAAD039iN/cKc840ppa9FxM0RsS4iFkTE2RGxdURc\nlFL6rYhYGhGnDcZEAQCgP9L6ZbLDPImUhn8SAACMdPP7s7zVSWYAAFRFwAUAoCoCLgAAVRFwAQCo\nioALAEBVBFwAAKoi4AIAUBUBFwCAqgi4AABURcAFAKAqAi4AAFURcAEAqIqACwBAVQRcAACqIuAC\nAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsAQFUEXAAAqiLgAgBQFQEXAICqCLgAAFRF\nwAUAoCoCLgAAVRFwAQCoioALAEBVBFwAAKoi4AIAUBUBFwCAqgi4AABURcAFAKAqAi4AAFURcAEA\nqIqACwBAVQRcAACqIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsAQFUEXAAAqiLg\nAgBQFQEXAICqCLgAAFRFwAUAoCoCLgAAVRFwAQCoioALAEBVBFwAAKoi4AIAUBUBFwCAqgi4AABU\nRcAFAKAqAi4AAFURcAEAqIqACwBAVQRcAACqIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXAB\nAKiKgAsAQFXGDvcEXomjjz66UV9zzTXDNBM2FxMmTCh6zz333DDMhM3FFluUzx1eeumlYZgJm4vD\nDjus6N14443DMBM2J2eddVajPvvsswf1+3uCCwBAVQRcAACqIuACAFCVUbUGd9KkSY26vSY3ImLK\nlClF77LLLit6zz///OBNjBFvhx12aNRPPPFEMWbrrbcuemPHlv+JHHTQQY169erVxZgXXnih6C1b\ntqzPeVK3ww8/vFGvXLmyGNP1GtZ1vz755JONetWqVQOcHaPd9ttvX/S67qdtttmmUT/00EPFmK22\n2qrove51ryt6Tz31VKOeN29en/OkHl33xAEHHFD0rr/++qI31PuoPMEFAKAqAi4AAFURcAEAqIqA\nCwBAVUbVJrP2xp3Xv/71xZhLL7206B133HFFb9GiRY166dKlA5wdI0V7Q1lEuRFi3bp1xZjHHnus\n6B177LFF75lnnmnUu+yySzGma5NZ18bGrs0djD7tzWMREQsXLix62267baPuuufuvffeote+fyPK\njUJHHHFEMaZrYwd1OPjgg4veo48+WvQmTpxY9FasWNGo99xzz2JMV6/rwJH2vbnlllsWY2zqrsec\nOXMaddcm6/vuu6/odW08+8EPfjB4E+vgCS4AAFURcAEAqIqACwBAVQRcAACqMqo2mbUXuHdtKEsp\nFb0HH3yw6B1yyCGN2iazeuy+++5Fr72p8NWvfnUxZtasWUXvxRdfLHrjx49v1AsWLCjGdJ0o1LVp\nwyazOtxxxx1Fr/0aExFx3XXXNer2qXgR3RsUu04LWrt2baNun2wW0X2f33///UWP0ac/v9ciIp5+\n+umit8UWzWdbXRtzv/e97xW95557rui1X28nT55cjOk6sY/Rqf3778gjjyzG7LvvvkXv/PPPL3rv\nfve7G/XnPve5Ac6uyRNcAACqIuACAFAVARcAgKr0GXBTSuemlB5KKd2+QW9KSukHKaUlvT8nb/C5\nj6aU7k4p3ZlSetNQTRwAALr0Z5PZv0fE5yLiPzbofSQirsg5fyql9JFe/Scppf0i4vSI2D8idomI\ny1NKe+ecy506G+HMM89s1L/3e79XjGmfFBQR8Z73vKfo3XXXXYMxJUagCRMmFL2pU6c26tmzZxdj\nxowZU/S6TpXaaqutGnXXiXrXXHNN0Rs3blw5Warw+OOPF72uE6Re+9rXNupbb721GNO1Waxrg+ID\nDzzQqLs2LHZt9rDJrA5dG8OuvPLKonf88ccXvfbm2Z/85CfFmKOPPrro3XLLLUVv+fLljXrrrbcu\nJ0s17rnnnkbddX/9+Mc/Lnpdm9GuuOKKwZtYhz6f4Oacr4mINa32qRFxXu/j8yLibRv0L8w5P59z\nvi8i7o6IcvsvAAAMkY1dg7tTzvnnh1mvjIideh9Pj4hlG4xb3usVUkpnpZTmpZTmbeQcAACgMOD3\nwc0555RS3oivOzsizo6I2JivBwCALhsbcFellKblnFeklKZFxM8Xfz0QEbtuMG5GrzcoPvOZzzTq\nXXfdtRhz+OGHF72vf/3rRa99aETXOt0vfvGLr3SKbGJz5swpel3rIVevXt2ou+6dG2+8sei110xG\nREyf3vxLiXXr1hVjjjrqqKLXtT5um222adRd6y8ZWXbccceiN2XKlKLXXiMbEfHoo4826r322qsY\n03U/Pfzww0WvfU93rbftOqik6xCSRx55pOgxsuy8886Nuuvf2ZZbbln0utZmt/cpdL1mfv/73y96\nb3/724veqlWrGvV9991XjOm6N7sOR2FkOf3004te+zCt9u/DiIjLLrus6HXtS2lnurPOOuuVTvEX\n2tglChdHxBm9j8+IiG9v0D89pbRlSmlmRMyKiHL1OgAADJE+n+CmlC6IiGMiYmpKaXlEfCwiPhUR\nF6WUfisilkbEaREROeeFKaWLImJRRKyLiA8M1jsoAABAf/QZcHPOv/4ynyrfG2L9+E9ExCcGMikA\nANhYTjIDAKAqKefhfwOD/r6LwgknnNCouzZenHjiiUVv0aJFRa/9RsRdC/EZndqL4CMiDjjggEbd\n9Wbk7QMcIiKuv/76otc+EOK4444rxqxcubLoPf/880Xvpz/9adFj9Hn1q19d9LrugQMPPLBR33bb\nbcWYN72pPAByiy3KZxHt17X2xtmI7nvaPVeH9qaziHLDV0TEzJkzi177sI/JkycXYyZNmlT0ujYo\nLlmypFHvvvvuxZgFCxYUPUan9gbFd7zjHcWY9sFKEREzZswoeueff36jvvnmm/s7jfk557l9DfIE\nFwCAqgi4AABURcAFAKAqAi4AAFUZ8FG9m1J7gfvRRx9djLn88suL3ty55VpkGy3qNXv27KL3qle9\nqlEvXLiwGNN1QlXXiWft3ne+851iTNfmzYMPPricLFXoOkFq7Njy5XXatGmN+p577inGXHfddUWv\nfQJaRMSb3/zmRt21wahroxt16Noo23Ufdp2o194E1HUqWtdmsa7NaHvssUej7jo9j3q0N1l3nYJ3\n1VVXFb1DDz206C1dunTwJtbBE1wAAKoi4AIAUBUBFwCAqgi4AABUZVRtMmtv5uk6padrEfwXvvCF\notd1MhB1WLduXdF78sknG3XXgveujYdd99M111zTqLs2ezz11FNFbyScGsjQ6LpPunrtzWLPPPNM\nMWbOnDlF7+mnny567dMXu+7frtOuqEPXyYhdp3u2T3Hs0rVR6Nlnny16XRsZx48f36i7TuejHttt\nt12j3mabbYoxxxxzTNG78sori17XfTeYpDwAAKoi4AIAUBUBFwCAqqSRsC4wpdSvSZx88smN+jWv\neU0x5p/+6Z+KXtdBD9dee21/p0cFZsyY0ai33XbbYsykSZOKXkqp6LXXpi1btqwYM27cuKK3YsWK\nPudJPbrWebfX/nftBei6566//vqi115f2/Va3rVmknoddNBBRW/16tVFr31YTXs9d0TE9OnTi96a\nNWuKXnsvzE033dTnPKnHe9/73qLXddhH15ru9sFcXffXy5ifcy6DXYsnuAAAVEXABQCgKgIuAABV\nEXABAKjKqNpkdsYZZzTq8847b0jmAz83ZsyYote1gB4Gy4EHHlj0ug5xgMHStSHSZjGGWntD7SvI\nozaZAQCw+RFwAQCoioALAEBVBFwAAKoyqjaZAQCwWbPJDACAzY+ACwBAVQRcAACqIuACAFAVARcA\ngKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsAQFUEXAAAqiLgAgBQFQEXAICqCLgAAFRFwAUAoCoC\nLgAAVRFwAQCoioALAEBVBFwAAKoi4AIAUBUBFwCAqgi4AABURcAFAKAqAi4AAFURcAEAqIqACwBA\nVQRcAACqIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsAQFUEXAAAqiLgAgBQFQEX\nAICqCLgAAFRFwAUAoCoCLgAAVRFwAQCoioALAEBVBFwAAKoi4AIAUBUBFwCAqgi4AABURcAFAKAq\nAi4AAFURcAEAqIqACwBAVQRcAACqIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsA\nQFUEXAAAqiLgAgBQlT4Dbkrp3JTSQyml2zfofSaltDildGtK6Zsppe02+NxHU0p3p5TuTCm9aagm\nDgAAXfrzBPffI+LEVu8HEXFAznlORNwVER+NiEgp7RcRp0fE/r2v+ZeU0phBmy0AAPShz4Cbc74m\nIta0et/POa/rlTdExIzex6dGxIU55+dzzvdFxN0R8bpBnC8AAPxCg7EG970RcVnv4+kRsWyDzy3v\n9QoppbNSSvNSSvMGYQ4AABAREWMH8sUppT+LiHURcf4r/dqc89kRcXbv++SBzAMAAH5uowNuSunM\niDglIo7POf88oD4QEbtuMGxGrwcAAJvERi1RSCmdGBEfjoi35pyf2eBTF0fE6SmlLVNKMyNiVkT8\nZODTBACA/unzCW5K6YKIOCYipqaUlkfEx2L9uyZsGRE/SClFRNyQc35/znlhSumiiFgU65cufCDn\n/OJQTR4AANrS/6wuGMZJWIMLAEDf5uec5/Y1yElmAABURcAFAKAqAi4AAFURcAEAqIqACwBAVQRc\nAACqIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVEXABAKiKgAsAQFUEXAAAqiLgAgBQFQEXAICq\nCLgAAFRFwAUAoCoCLgAAVRFwAQCoioALAEBVBFwAAKoi4AIAUBUBFwCAqgi4AABURcAFAKAqAi4A\nAFURcAEAqIqACwBAVQRcAACqIuACAFAVARcAgKoIuAAAVEXABQCgKgIuAABVGTvcE3glzj333Eb9\n3ve+d5hmwuZi3LhxRW/t2rXDMBM2FyeffHLRu/TSS4dhJmwu3v/+9xe9f/3Xfx2GmbA5mTVrVqNe\nsmTJoH5/T3ABAKiKgAsAQFUEXAAAqiLgAgBQlVG1yeyqq65q1BdddFExZtmyZUXv2muvLXrf+ta3\nBm9ijHhjxoxp1BMnTizGnHXWWUXviSeeKHpr1qxp1DnnYszjjz9e9C6//PI+50k9Jk2aVPTOPPPM\nRv35z3++GPOTn/yk6B144IFFb/ny5Y16t912K8bcfPPNfU2TinzgAx8oej/96U+L3o9//ONG3X5N\ni4iYM2dO0et6PTz22GMb9Re/+MU+50k9jjjiiKK3evXqojdt2rSi97u/+7uN+td//dcHb2LhCS4A\nAJURcAEAqIqACwBAVUbVGtz3ve99jfrTn/50MWbbbbftV++Xf/mXG/X3v//9Ac6OkWLq1KlF77HH\nHmvUv/qrv1qMufjii4veUUcdVfSmTJnSqFesWFGMOeCAA4revvvuW/T++Z//uegx+rzlLW8pervv\nvnvRe/HFF/v8Xl1rd0877bSi98wzzzTqZ599thhz//33F72HH364zzkw8nX9Xlu0aFHR22effYpe\n+w31r7vuun79zK61lY888kij7nrN7NoHw+j0Z3/2Z416wYIFxZiue+DCCy8seq9+9asHb2IdPMEF\nAKAqAi4AAFURcAEAqIqACwBAVUbVJrPPfvazjfpd73pXMWbPPfcseqeeemrRO/jggwdvYowob3jD\nG4rehAkTGvWNN95YjDnyyCOL3mWXXVb0UkqNeu+99y7GXHPNNUXvySefLCdLFWbPnl30ug6iab8p\n+oc+9KFizM4771z02hsbIyJuu+22Rt11z+23335Fr2scddhrr72K3vz584veO97xjkbd9dp37733\nFr0bbrih6O2///6N+vrrr+9znoxe7cO0xo8fX4z5jd/4jaLXddBD12vdYPIEFwCAqgi4AABURcAF\nAKAqAi4AAFUZVZvMuk74aes6keyUU04pehMnTmzUl1566cZPjBHlu9/9btGbPHlyo95jjz2KMU8/\n/XTRe/TRR4vescce26i/973vFWPe+c53Fr2FCxeWk6UKXa8fy5cvL3rtDTjz5s0rxnRtWhwzZkzR\nO/rooxt112aiP/qjPyp6NpnV4W1ve1vR63rt69pAtnjx4kbdtTH36quvLnpjx5aR4ZJLLmnUXa+j\n1OPWW29t1H/+539ejNlii/LZ6S677FL0un4PDyZPcAEAqIqACwBAVQRcAACqIuACAFCVlHMe7jlE\nSqlfk2ifrPIHf/AHxZj77ruv6J1xxhlF77nnnmvUO+20UzHm/e9/f3+mxTA688wzi157EXxExNKl\nSxv11KlTizG/8iu/UvTuv//+onf66ac36oceeqgY07VBY/vtty96V1xxRaNun07FyDNz5syit3r1\n6qL3yU9+suidc845jfr4448vxnRtWHvhhReK3hNPPNGon3322WJM1wlrXb0LLrig6DGyvPWtb23U\nK1asKMZ0bcTu2vTVPlHvwgsvLMb87d/+bdE766yzil47Q3SdWPXII48Uvfb9y8jzvve9r+g9//zz\njfo73/lOMeaEE04oeh//+MeLXvv3d9cJoy9jfs55bl+DPMEFAKAqAi4AAFURcAEAqMqoWoMLAMBm\nzRpcAAA2PwIuAABVEXABAKiKgAsAQFUEXAAAqiLgAgBQFQEXAICqCLgAAFRFwAUAoCpjh3sCPQ9H\nxNLex1N7NZueaz98XPvh49oPL9d/+Lj2w8e133i79WfQiDiqd0MppXn9OYKNwefaDx/Xfvi49sPL\n9R8+rv3wce2HniUKAABURcAFAKAqIzHgnj3cE9iMufbDx7UfPq798HL9h49rP3xc+yE24tbgAgDA\nQIzEJ7gAALDRBFwAAKoyYgJuSunElNKdKaW7U0ofGe751CyltGtK6aqU0qKU0sKU0od6/SkppR+k\nlJb0/pw83HOtVUppTEppQUrpkl7t2m8iKaXtUkpfSyktTindkVL6Jdd/00gp/VHvNef2lNIFKaUJ\nrv3QSCmdm1J6KKV0+wa9l73WKaWP9n7/3plSetPwzLoeL3P9P9N73bk1pfTNlNJ2G3zO9R9kIyLg\nppTGRMT/iYiTImK/iPj1lNJ+wzurqq2LiD/OOe8XEYdHxAd61/sjEXFFznlWRFzRqxkaH4qIOzao\nXftN5x8j4r9yzvtExIGx/t+D6z/EUkrTI+KDETE353xARIyJiNPDtR8q/x4RJ7Z6nde69/p/ekTs\n3/uaf+n9Xmbj/XuU1/8HEXFAznlORNwVER+NcP2HyogIuBHxuoi4O+d8b875hYi4MCJOHeY5VSvn\nvCLnfHPv4ydj/S/46bH+mp/XG3ZeRLxteGZYt5TSjIh4c0Scs0Hbtd8EUkrbRsTREfFvERE55xdy\nzo+F67+pjI2IV6WUxkbEVhHxYLj2QyLnfE1ErGm1X+5anxoRF+acn8853xcRd8f638tspK7rn3P+\nfs55Xa+8ISJm9D52/YfASAm40yNi2Qb18l6PIZZS2j0iDo6IGyNip5zzit6nVkbETsM0rdr9Q0R8\nOCJe2qDn2m8aMyNidUR8sbdE5JyU0sRw/YdczvmBiPi7iLg/IlZExOM55++Ha78pvdy19jt403tv\nRFzW+9j1HwIjJeAyDFJKW0fE1yPiD3POT2z4ubz+/eO8h9wgSymdEhEP5Zznv9wY135IjY2IQyLi\n/+acD46Ip6P1V+Ku/9Dorfc8Ndb/n4xdImJiSuldG45x7Tcd13r4pJT+LNYvFTx/uOdSs5EScB+I\niF03qGf0egyRlNK4WB9uz885f6PXXpVSmtb7/LSIeGi45lex10fEW1NKP4v1S3GOSyl9OVz7TWV5\nRCzPOd/Yq78W6wOv6z/03hgR9+WcV+ec10bENyLiiHDtN6WXu9Z+B28iKaUzI+KUiHhn/p+DCFz/\nITBSAu5NETErpTQzpTQ+1i+2vniY51StlFKK9WsQ78g5f3aDT10cEWf0Pj4jIr69qedWu5zzR3PO\nM3LOu8f6+/zKnPO7wrXfJHLOKyNiWUppdq91fEQsCtd/U7g/Ig5PKW3Vew06Ptav/3ftN52Xu9YX\nR8TpKaUtU0ozI2JWRPxkGOZXtZTSibF+edpbc87PbPAp138IjJiTzFJKJ8f6tYljIuLcnPMnhnlK\n1UopHRkR10bEbfE/60D/NNavw70oIl4dEUsj4rScc3uTAoMkpXRMRPx/OedTUkrbh2u/SaSUDor1\nG/zGR8S9EfGeWP9/9l3/IZZS+t8R8Wux/q9nF0TE+yJi63DtB11K6YKIOCYipkbEqoj4WER8K17m\nWvf+2vy9sf7fzR/mnC/r+Lb008tc/49GxJYR8Uhv2A055/f3xrv+g2zEBFwAABgMI2WJAgAADAoB\nFwCAqgi4AABURcAFAKAqAi4AAFURcAEAqIqACwBAVf5/08nABtU9ZusAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 12))\n", "plot_layer_weights(cortex, use_range=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make this more clear, now we plot a *pylissom.nn.linear.GaussianCloud* layer that has the same initial weights as the cortex but without the receptive field limitation. As we can see, the white dots clouds are larger and brighter than the ones in the previous figure. The clouds are larger, because there is not the receptive field limitation. The clouds are brighter because there is not the normalization process that is done in the Cortex layer. Each weight in the GaussianCloud layer can have values between 0 and 1 but for a Cortex neuron, the sum of all weights must equal 1, so most weights have very small values, decaying proportionally to the size of the receptive field, hence the darkness." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n2gPCYsjRnneQAtoD/oILAACASmGCCwAAgEphggsAAIBKYYILAACASmGCCwAAgEphggsAAIBKYYIL\nAACASmGCCwAAgEphggsAAIBKYYILAACASmGCCwAAgEphggsAAIBKYYILAACASmGCCwAAgEphggsA\nAIBKYYILAACASmGCCwAAgEphggsAAIBKWb2tD6AeKaVQW2uttULtgw8+CLX33nuv1P7Up+Jc//33\n3w+11VZbbaX9iqKIB4tWsfbaa4eav7bKGmusEWpqDOSMHdVHjQE1XtV48tQ4VNRx5BxX1ajznHs9\nVD8/VtQ4efvtt0Nt9dXj7dWPnW7duoU+K1asCDXFH9e7774b+qjfUfXzv5M6D6qmzkXuazui3HuM\n4q+luoe98847oabuMf5n5ozV5n6mfy/1+6hjUOMQzavnvuap66HeS40L30+Nua5du4baG2+8EWr+\n85D7WcjFX3ABAABQKUxwAQAAUClMcAEAAFApTHABAABQKQ0VMuvSpUuprRbs54TAzMw6depUar/1\n1luhT+6ibv8z1eL8nIXfCuGM/5N7bdUCd3/+ly9fHvrkBjQ6d+5cai9btizrGN58881QU4v4vVpD\nbPUEqxpJzmdL3Sty+/kwjLpm6hj8/Uq9VgVtunfvvtJjMMsLrKmxo8arPy71OvU7tuTYbK9qDffk\nhvKUnBBsblBI/Uwfzs0N96if+frrr3/sezcnN6yJD+VeW3UtfT81R/Fzoub6+e/c3KDsuuuuu9L3\nUvemevAXXAAAAFQKE1wAAABUChNcAAAAVEpDrcH1az3UOkq1zlGthfPrhNQaXL/Wsrn39+vXan24\nulljrU37pKnzpa6tWv/j18Sqa6tqalz49XE5Dz83M+vbt2+oLV68eKWvy10P6dXzYP5G4o9f/Y45\nDyw302u6/b1Cra9WY06tJ1tvvfVK7aVLl4Y+PXr0CDV1r/Ob2qg+aj2kWgvn72u5605zN8Pxr230\nMVcrNQ7V51uth/TnTL2Xep1a1+rXVqr8gbpGauz78aSuv7/PmelNmViD2zx1X6s1W7DmmmuGPup6\nqzzAkiVLSm01dtZZZ51QU/cU9dqWxF9wAQAAUClMcAEAAFApTHABAABQKUxwAQAAUCkNFTLzC+hf\ne+210Gfw4MGhpgJengoYqQXQahG/Clrk9KniQ/dbkwrfqBCYCtb06tWr1FYBjcmTJ4eaCpD5azR0\n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\nvXv3yrHa8O7HmOk5MHv27MqxChOpoIWaO3369Kkcq3MvCQ2YxWBQaUevjh6A9J+Z0vBY6c/tgxwq\nMKNCZnPnzg01H8jo2rVrGPP666+Hmpqb8+bNqxxvv/32YYy6r6nrs3Dhwsqx6jpUGigr7RDXUZR2\ng/Pj1JxTXS/V66vuY+r1PHWd1fu99dZbN3kOCxYsCDV1Dy75udU85LtuzdQ1LO1aVhKWVvcrFTzr\n2bNnqPmgrLqPqvuauqfMmDEj1FoSv8EFAABArbDABQAAQK2wwAUAAECtdKg9uAcccEDlWD0Af+nS\npaGm9pv4vXBqf6Sqqf28fr+U2mellOxB6kh7IVub2lu0ZMmSUBs8eHCT43r37h3GqD1Can+RH1f6\noGu/39bMrFOnTn/xPM30nk+1V9fvhyzds1Wyt8+sfcw7da7+vNTnqvTn7ty5c5PjSueh2r+94447\nVo5ffPHFMGbnnXcONbUns+S+o5o/qPfRz8O12Zdd8kD6jnRfK93L7n9GNZdUcwN1rRXfsMHPJTN9\n7WfOnBlqfr+l2uPtv2/N9H1n5cqVlWPfCMdMfybVnk/1nb4+Kr1fqZraK+/fN3VvUk0XStZTffv2\nDWPU67/88suhtvfee1eOn3766TBmbfAbXAAAANQKC1wAAADUCgtcAAAA1AoLXAAAANRKhwqZTZo0\nqXKsHjq9zTbbhNr06dNDzW/E7tWrVxjjN/WX2njjjUNNPRC99EHgXkcKaLSkN998M9TU+6auxbJl\nyyrHKlShmoSoUIgPRwwbNiyMUQ82VxvofWBJBVPUPCwJW6mgm5qHSnt9CLs6L38tVMhC/TkVhPCB\nGbP4nqjAl2oc0qVLl1Dr0aNH5fjII48MY3wTGjOzJ598MtT8w/pVIGT48OGhpu4xPhik5pwKBan5\nVBIUai/3sJImDmqMmk/+s6zuHeozqWrq+vsw69SpU8OYUaNGhZq6rj50pMKIqlFJv379Qs3fgx9/\n/PEwRv2M6h68vvINi9ScU59b1ehIzU1/z1KfZfX96u9XZjFo/8Ybb4QxgwYNCjX13VbaRKW5+A0u\nAAAAaoUFLgAAAGqFBS4AAABqhQUuAAAAaqVDhcx8B6l99903jFFdnwYOHBhqv/3tbyvHqtuZ2qyt\nQmw+TKA6uajQkeoKUxK0aO2N2e3VDjvsEGoqyKE6/PhN9mqePPjgg6HWtWvXUPMb733Yx8xs3Lhx\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gaussian_linear = GaussianCloudLinear(in_features, out_features, sigma=5)\n", "plt.figure(figsize=(12, 12))\n", "plot_layer_weights(gaussian_linear)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# DiffOfGaussians" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we plot the weights of the *DifferenceOfGaussiansLinear* layer, the basis on which the LGN layer is built. \n", "The initialization is different than the previous cortex layer. As explained in the *Test_simple_modules* ipynb, the weights are the difference of two gaussian weights matrix with different $\\sigma$. \n", "\n", "We plot first the weights of the DifferenceOfGaussiansLinear. The plot is in grey because the LGN weights are between -1 and 1, as oppose to cortex which are 0 and 1. \n", "\n", "The DoGLinear is the same layer as UnnormalizedDifferenceOfGaussiansLinear (the next plot) but with the connective radius and normalization applied. The same characteristic that happened with Cortex appears, with a brighter plot than the original. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true, "scrolled": false }, "outputs": [], "source": [ "in_features = 25**2\n", "out_features = 5**2\n", "dofg = DifferenceOfGaussiansLinear(in_features, out_features, radius=5, on=False, sigma_surround=5, sigma_center=1)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 12))\n", "plot_layer_weights(dofg, use_range=True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true, "scrolled": false }, "outputs": [], "source": [ "in_features = 24**2\n", "out_features = 5**2\n", "unnorm_dofg = UnnormalizedDifferenceOfGaussiansLinear(in_features, out_features, on=False, sigma_surround=5, sigma_center=1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArgAAAK7CAYAAAAZVPyBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XusreddH/jf42Ofc3yP7QTHl0wJCSkyrSdUIUMhJFFC\nVdqihj8qBjSMQstMpiM6QysqcCiS6xGMPNMKtVUvagoUV6VhIkqHTDV0SJOSixA0TrESciFxoCGO\ncyuJL7HPxcd+54+zgZP1/k78O+t597o8+/ORonP2c9611rvX89vv+uX1891Pm6YpAABgFJdt+wQA\nAGBJGlwAAIaiwQUAYCgaXAAAhqLBBQBgKBpcAACGosEF2EGttQ+21l5dPPY/t9a+7ZBPCWBvaHAB\ndtA0TV8/TdOv9j5Pa+3VrbWHFjglgL2hwQUAYCgaXIAFtdbua6390MHfb2utTa21Hzj4+kWttS+0\n1i47+Po7WmsPtNYeaa39Wmvtzgue5w+XHbTWrjx43i+21j7cWvvh5K7sS1tr72+tPdpa+79aaydb\na1dHxC9HxK2ttS8d/O/WjbwRAFukwQVY1jsj4tUHf39VRPxORLzygq/fPU3TM621b4iIn4mI/yki\nboqIfxoRb22tnUie8+6I+OqI+JqI+DMR8b3JMd8VEd8eES+MiDsj4vumaXoiIv5cRDw8TdM1B/97\nuPs7BNhxGlyAZb0zIl5xcJf2lRHxf0bEtxz826sO/j0i4g0R8U+nafqNaZqenqbpvog4ExHflDzn\nd0XE/z5N0xenaXooIv5Bcsw/mKbp4WmavhAR/09EvHS5bwlgv2hwARY0TdPHI+KJON9gfmtE/NuI\neLi19sfjyxvcPxYRP3SwPOGR1tojEfGCiMiWENwaEZ+84OtPJsd85oK/PxkR13R9IwB7TIMLsLx3\nRsRfiojj0zR96uDr10fEDRHxwMExn4yIn5im6TkX/O+qaZrenDzfpyPi9gu+fsElnMt06acPsN80\nuADLe2dE/LWIeNfB17968PV7pml6+mDsn0XEX22t/TftvKtba3+htXZt8nxviYg3ttZuaK3ddvBc\nVZ+NiJtaa9ev9Z0A7CENLsACWmu/3Fr70YMv3xkR18YfNbjviYirLvg6pmm6PyL+x4j4hxHxxYh4\nMCK+7yJP/79FxEMR8bsR8e8j4hfi/HrdZzVN00ci4s0R8TsHSyH8FgVgeG2a/NcrgH3SWvufI+K7\np2l61bbPBWAXuYMLsONaa7e01r6ltXbZQVjthyLi32z7vAB21eXbPgEAntXxOP97cl8YEY9ExM9H\nxD/e6hkB7DBLFAAAGIolCgAADOXQlii01r49Iv5+RByLiJ+apuner3Cs28gAADyb/zJN0/Oe7aBD\nuYPbWjsWEf8ozu+BfkdEfE9r7Y7DeC0AAI6MT1QOOqwlCi+PiAenafqdaZrOxvlAxOsO6bUAAOAP\nHVaDe1t8+V7pDx2M/aHW2htaa/e31u4/pHMAAOAI2tqvCZum6U0R8aYIa3ABAFjOYd3B/VREvOCC\nr28/GAMAgEN1WA3ueyPia1trL2ytHY+I746Itx7SawEAwB86lCUK0zSda639tYj4/+L8rwn7mWma\nPngYrwUAABfaiZ3MrMEFAKDgfdM0vezZDrKTGQAAQ9nab1FYx9133z0be+lLXzobe9nL5o39FVdc\nMRv70pe+NBt75JFHZmOPPvrobOyxxx77sq8ff/zx2TFPPvnkbOz06dOzsbNnz87Gzp07Nxt7+umn\nZ2PZHfhnnnlmNpbZhbv3f+Cee+551mPe+c53zsauv/760tjVV189G8vm9V3vetds7OGHH56Nfeu3\nfuts7Ou+7utmY9lcrNZORL3usjrL6jirvTNnzszGKrWXfQ/ZWLWesuMq8x8Rce+98w0Rs5/tEydO\nzMauvPLK2VhWF9ddd91srFpn2Vh2Lp/61Dxz+453vGM2tuo1r3nNbOy2226bjWVzndVTdSyr2See\neGI2durUqdK5PPXUU7Oxu+66azaWyT4HWmulx2bHXXbZZV/x64iIyy+ff1QeP358NpbN9VVXXTUb\nu+aaa2Zj11577Wwsq6fnPOc5s7GsZrPv4yMf+chs7N3vfvds7NZbb52NvfKVryydX1YXlTp71ate\nNTsmk83/tlTrLpuL7LHHjh2bjVVr7+TJk7OxrPZW66x6vcvqLqvj7Gf7/vvnvw32gQcemI1VPweq\n3MEFAGAoGlwAAIaiwQUAYCgaXAAAhrJXIbMsUHb77bfPxrLQSTWMlR1XHduGXTmPTajOQ3Ves9DR\ni170otnYc5/73NnY8573vNlYFiTIwoJL111PuOso6XmfqkG7asAzC3bccccdaz0u03O+6qmm533q\nGavOYxZOyq5bd95552wsCxll18ulP1dHlX2v1YDa0lbPZenP1az/yvq0TXAHFwCAoWhwAQAYigYX\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 12))\n", "plot_layer_weights(unnorm_dofg, use_range=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# LGN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An LGN layer applies a PiecewiseSigmoid (see *Tests_simple_modules* ipynb) to a DifferenceOfGaussiansLinear activation.\n", "It models an edge-detection mechanism that happens in the brain." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is an ilustrative example of some edge detection filters, with DoG in (d). The image was not done with pytorch" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](imgs/dog.png)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "retinal_density = 36\n", "lgn_density = 36\n", "radius_afferent = (lgn_density / 4 + 0.5)\n", "scale_afferent = radius_afferent / 6.5 # radius_afferent_reference\n", "radius_center_gaussian = 0.5*scale_afferent*retinal_density/lgn_density\n", "radius_surround_gaussian = 4*radius_center_gaussian\n", "radius_afferent_lgn = 4.7*radius_surround_gaussian" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = retinal_density **2\n", "out_features = lgn_density**2\n", "off_test = LGN(in_features, out_features, \n", " on=False, \n", " radius=radius_afferent_lgn, \n", " sigma_surround=5, sigma_center=2)\n", "on_test = LGN(in_features, out_features, \n", " on=True, \n", " radius=radius_afferent_lgn, \n", " sigma_surround=radius_surround_gaussian, sigma_center=radius_center_gaussian)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Input to the LGN, a gaussian stimulus:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\nkBThB5L6H9n+slMpmWuUAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gauss_size = int(in_features**0.5)\n", "sigma_x = 3\n", "sigma_y = sigma_x\n", "gauss = gaussian_generator(gauss_size, gauss_size//2, gauss_size//2, sigma_x, sigma_y, 0)\n", "plot_matrix(gauss)\n", "inp = torch.autograd.Variable(torch.from_numpy(gauss).view(in_features)).unsqueeze(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we see here, the LGN enhances the edges of the gaussian input" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEUpJREFUeJzt3V+oXNd1x/HfsnTrSo5lWU16Mf5TR2A/iNLIYAtD8+DW\npKh5kd0HExeKHkzlh9Q0kIcIv8QNFPRgxw00GORGRC1pUoGTWhS3RRWBNBBcK8Z1lDiVjbAcC92r\npKqRZEmWrrT6MOfCrXrW3Nnn7HPmz/5+QMzcPWfm7DNX656ZtffZy9xdAMpzw7g7AGA8CH6gUAQ/\nUCiCHygUwQ8UiuAHCkXwA4Ui+IFCEfxAoda2ebKZbZf0NUlrJP2Nu+8Ztv369et948aNbXYJYIgP\nPvhAFy5csFG2bRz8ZrZG0tclfUbS+5JeM7OD7v6z6DkbN27Url27mu4SCaZl2rbZSP9PMaK9e/eO\nvG2bj/3bJL3j7sfd/bKk70ja0eL1APSoTfDfLukXK35+v2r7P8xsl5kdMbMjFy5caLE7ADl1nvBz\n973ufr+7379+/fqudwdgRG2C/6SkO1f8fEfVBmAKtMn2vybpHjP7pAZB/zlJf5ylVwXrOlE3rkRg\nlNjL1R8Sh+kaB7+7L5nZn0n6Vw2G+va5+0+z9QxAp1qN87v7K5JeydQXAD1ihh9QKIIfKBTBDxSq\n1Xd+rC41m50r+z1p03uj/owrS8/oAGd+oFgEP1Aogh8oFMEPFIrgBwpFtj9Bzgx69Fqp7ZFr164l\n92kcbrgh7fwzziz9rI0QcOYHCkXwA4Ui+IFCEfxAoQh+oFBk+2vknI+fmr1PzdLnGh0Y14o6ueb8\nR6MGTTL0qasOTesoAGd+oFAEP1Aogh8oFMEPFIrgBwrVtkrvu5LOSboqacnd78/Rqb7kyog3yfZH\nWf2ut4/kuhYgda5+apY+2j7qf2p/hpm1UYAcQ32/5+6/yvA6AHrEx36gUG2D3yX9m5n92Mx25egQ\ngH60/dj/aXc/aWa/KemQmf3c3X+wcoPqj8IuSbrlllta7g5ALq3O/O5+sro9Lel7krbVbEOJbmAC\nNT7zm9lNkm5w93PV/T+Q9JVsPcuo66z+1atXk18ryk5H7dE+cq0I1PXc/lzta9asqW2PsvpNMvHR\na6WOTEz6KECbj/3zkr5XHchaSX/v7v+SpVcAOtemRPdxSZ/K2BcAPWKoDygUwQ8UiuAHCjVTK/nk\nyuqnZuKH7TfK0qdm9XNtP2nZ/iiDHmX1o37m2l5Kv85hWkcBOPMDhSL4gUIR/EChCH6gUAQ/UKip\nzPZ3PVc/Nds/LDu8tLSU9Jwoe5/a3vXKP5FxrcwTHVeTlXxyrf4z6aMAnPmBQhH8QKEIfqBQBD9Q\nKIIfKNRUZvsjuVbgSc2IRxn9Yfu4cuVK0j5Ss/2RXHP4I1F/oox16mhFNCc/2n5ubq62fZi1a/OE\nRWqWnrn9AHpB8AOFIviBQhH8QKEIfqBQqwa/me0zs9NmdnRF2yYzO2Rmb1e3t3bbTQC5jTKm8U1J\nfy3pb1e07ZZ02N33mNnu6ucv5e5c1xfwpA4BRkN6w4bboiG9ri/UybWcVqrUC4RyDcMOW5Yrl2gI\nMHUYM1df2w4Nrvobr2rvnbmueYek/dX9/ZIeadULAL1r+ud+3t1PVfcXNKjeA2CKtP6s54PPYeHn\nczPbZWZHzOzIhQsX2u4OQCZNg3/RzG6TpOr2dLQhVXqBydQ0+A9K2lnd3ynp5TzdAdCXVbP9ZvZt\nSQ9J+riZvS/py5L2SDpgZk9IOiHpsS47eb1xLcsVtUcZfSlfVj8SZY6jzHTUHr1O6pJTqSMlqcuc\nNVlKrWup5cRzLdfV9iKtVYPf3R8PHnq41Z4BjBUz/IBCEfxAoQh+oFAEP1CoiVjGK9ec/FyFKnJm\n6HNl9aMs/Y033ljbvm7duqT2ruf2X7x4Man9o48+qm2PRgdSRx+Gid6L1AIjXS/j1fncfgCzieAH\nCkXwA4Ui+IFCEfxAoSYi258qdU5zalY/Z+GMXFn9KEu/YcOGpNdJlTq3P8qI33TTTbXt0WjF2bNn\na9uj0YHUawSGZcqj32eu8uMRSnQD6AXBDxSK4AcKRfADhSL4gUJNZbY/0vW6/U2y/anrzEfZ79Ss\nfpQhnp+vX2h506ZNSf2J5t6fOXP9Ku8Di4uLte1R/6PjTV3Jp8nvLHUOf+q1I11fIzAqzvxAoQh+\noFAEP1Aogh8oVNMqvc+Y2Ukze6P699luuwkgt6ZVeiXpeXd/NnWHKfPyu16xJ9c6/8NEmdrUOfyp\nWf3NmzfXtt9777217XfddVdtezQn/8MPP6xtf++992rbjx07Vtt+/Pjx2vbU9+fy5cu17anVfqV8\nNQNSR5m6yupHmlbpBTDl2nznf8rM3qy+FtyarUcAetE0+F+QtFnSVkmnJD0XbUiVXmAyNQp+d190\n96vufk3Si5K2DdmWKr3ABGoU/MvluSuPSjoabQtgMjWt0vuQmW2V5JLelfRkm060rTaae7+52qV8\n2f5INFc/yuo/8MADte2pmeabb745qT+RaNRgYWGhtj16f86fP1/bHh1Xk1oLqVV3U0cBIl2NDjSt\n0vuNVnsFMHbM8AMKRfADhSL4gUIR/EChiljJJ9fc6yZz+6NVW6LMcepa79EKPNFc/a7nj0evH/Xn\nxIkTte1Rtj96f+bm5mrbL126VNveRJPRnhzbd4UzP1Aogh8oFMEPFIrgBwpF8AOFmqls/zRJzbpH\n20fr6kcr8IxLapXe1OrAfa+CMws48wOFIviBQhH8QKEIfqBQBD9QKLL9Y5JrPnhULTdaISdagadr\nUX+i/k/rfPlpwpkfKBTBDxSK4AcKRfADhSL4gUKNsm7/nRpU6J3XYJ3+ve7+NTPbJOkfJN2twdr9\nj7n7/3TX1dVF87uj1V+i7VNfJ1rnXYpX/4meE20f7fvMmfoaqlG13Ghd/Vxz46Ose9SfqP+R6P25\ncuVK0us0kfr/JfV1+jbKmX9J0hfdfYukByV93sy2SNot6bC73yPpcPUzgCkxSonuU+7+enX/nKS3\nJN0uaYek/dVm+yU90lUnAeSX9J3fzO6WdJ+kVyXNu/up6qEFDb4W1D2HKr3ABBo5+M3sY5JekvQF\ndz+78jEffNGr/bJHlV5gMo0U/GY2p0Hgf8vdv1s1Ly5X661uT3fTRQBdGCXbbxoU5nzL3b+64qGD\nknZK2lPdvty0E6mrtuSSmr3Nle2VpKWlpdr2ixcv1rZHK+EsLi7Wth87diypP9G6+tF+o7n6UVY/\n6k/U/0j0/kSjJ01W/kmtqZBrlCnS1ejAKBf2/K6kP5H0EzN7o2p7WoOgP2BmT0g6IemxTnoIoBOj\nlOj+oaToT8/DebsDoC/M8AMKRfADhSL4gUL1vpJPXeYyNSMbZVGj18mVpW0ytz/qU2q2P1rffu3a\n+l/h8ePHa9ujLH1ULTfab7QCTzRXP8rq53p/hv0O6gzLoKf+/nNdO9I3zvxAoQh+oFAEP1Aogh8o\nFMEPFGqm1u3PNSc/mtsdrSITtUvpK/ZEWfSzZ8/Wtm/YsKG2PRoFWFhYSGrv+rqLKKsfHW/0/qRm\n+6MM/bDHup7b3/eoAWd+oFAEP1Aogh8oFMEPFIrgBwo1ldn+1CxnlEWNsvqp1whErzPstaJsf+qc\n9uh11q1bl9Seer1EJOpP1P+oPcrqR+9PJHVEZ9hjqe2TsmJPhDM/UCiCHygUwQ8UiuAHCkXwA4Vq\nU6X3GUl/KumX1aZPu/srTTqRK8sZZaxTK9+mjgIMm9ufep1A6so20etcvny5tv38+fO17XNzc7Xt\nqXP7o2q50dz71PZI1M/ouJpk+3Ot/DQpK/+MMtS3XKX3dTO7WdKPzexQ9djz7v5sJz0D0KlR1u0/\nJelUdf+cmS1X6QUwxdpU6ZWkp8zsTTPbZ2a3Bs+hSi8wgdpU6X1B0mZJWzX4ZPBc3fOo0gtMpsZV\net190d2vuvs1SS9K2tZdNwHk1rhKr5ndVuUDJOlRSUe76eLocq3znzq3P8ooN5G68k9qtjx6jy5d\nujRC75rLtfJPrqx+tNJRk+cMWxWoTq7sfdvXaVOl93Ez26rB8N+7kp5s1RMAvWpTpbfRmD6AycAM\nP6BQBD9QKIIfKNREr+TT9comTVZ5GZeor1FWv8l1CF1Knbeeet1Faoa+SbY/dU5+6jUCfc/t58wP\nFIrgBwpF8AOFIviBQhH8QKEIfqBQEz3UlypXMY/UZb+GDRulivYRDemlHkPq8li5pA6f5RrqS20f\n9tikL8uVijM/UCiCHygUwQ8UiuAHCkXwA4Waymx/aiGJ1ItHckodCUjNKEdZ/ag9tSBJqq4LW6Re\nLNNk6a1xZfUp0Q2gFwQ/UCiCHygUwQ8UatXgN7NfN7P/MLP/NLOfmtlfVO2bzOyQmb1d3daW6wIw\nmUZJRX8k6ffd/XxVueeHZvbPkv5I0mF332NmuyXtlvSlDvu6qkkcBUjNBEdZ+tRjSy0B3nW2P/W9\nTl0aK1eGvslzJj2rH1n1f7kPLBd1n6v+uaQdkvZX7fslPdJJDwF0YtRafWuqaj2nJR1y91clza8o\n17Ugab6jPgLowEjBXxXk3CrpDknbzOy3r3vcNfg08P9QohuYTElfbt39A0nfl7Rd0qKZ3SYNinZq\n8Kmg7jmU6AYm0CjZ/k+Y2cbq/jpJn5H0c0kHJe2sNtsp6eWuOgkgv1Gy/bdJ2m9mazT4Y3HA3f/J\nzH4k6YCZPSHphKTHOuxnK12PAgzL3kYr56TOUU+d2z9pRTtS37tc20eGreQza1n9yChVet+UdF9N\n+39LeriLTgHoHjP8gEIR/EChCH6gUAQ/UKipXMknl1yjAMN0vXJOlOVOncM/rrn9uTLrOefjz1pW\nP8KZHygUwQ8UiuAHCkXwA4Ui+IFCFZ3tj/QxCpCahU6dqz+tGehlk7iazrS/p9fjzA8UiuAHCkXw\nA4Ui+IFCEfxAocj2JxhntjdXljvXHP5UXWfjS5mPnxNnfqBQBD9QKIIfKBTBDxSqTZXeZ8zspJm9\nUf37bPfdBZBLmyq9kvS8uz/bXfemXx/XCaSYlix3rn5Oy/GOwyjr9rukuiq9AKZYmyq9kvSUmb1p\nZvvM7NbOegkguzZVel+QtFnSVkmnJD1X91yq9AKTqXGVXndfrP4oXJP0oqRtwXOo0gtMoMZVepfL\nc1celXS0my4C6IKtNtfbzH5H0n5JK6v0fsXM/k6Dj/wu6V1JT7r7qVVe65caVPSVpI9L+lWr3k+X\n0o5XKu+YJ+F4f8vdPzHKhqsGf1fM7Ii73z+WnY9BaccrlXfM03a8zPADCkXwA4UaZ/DvHeO+x6G0\n45XKO+apOt6xfecHMF587AcK1Xvwm9l2M/svM3vHzHb3vf8+VNOdT5vZ0RVtm8zskJm9Xd3OzHRo\nM7vTzL5vZj+rrvz886p9lo85utp1ao651+A3szWSvi7pDyVtkfS4mW3psw89+aak7de17ZZ02N3v\nkXS4+nlWLEn6ortvkfSgpM9Xv9dZPublq10/pcF8l+1m9qCm6Jj7PvNvk/SOux9398uSviNpR899\n6Jy7/0DSmeuad2gwWUrV7SO9dqpD7n7K3V+v7p+T9Jak2zXbx+zuXne169Qcc9/Bf7ukX6z4+f2q\nrQTzK2ZALkiaH2dnumJmd0u6T9KrmvFjDq52nZpjJuE3BtUaCTM3zGJmH5P0kqQvuPvZlY/N4jEH\nV7uufHyij7nv4D8p6c4VP99RtZVgcfliqOr29Jj7k1W1ytNLkr7l7t+tmmf6mJetvNpVU3TMfQf/\na5LuMbNPmtmvSfqcpIM992FcDkraWd3fKenlMfYlKxuslfUNSW+5+1dXPDTLx1x7taum6Jh7n+RT\nLfT5VxpcJbjP3f+y1w70wMy+LekhDa7yWpT0ZUn/KOmApLs0uLLxMXe/Pik4lczs05L+XdJPJF2r\nmp/W4Hv/rB5zdLXrb2hKjpkZfkChSPgBhSL4gUIR/EChCH6gUAQ/UCiCHygUwQ8UiuAHCvW/ZA6X\nN/1GN4UAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "out_rows = int(out_features**0.5)\n", "out = (on_test(inp) - off_test(inp)).data*2.33/1\n", "mat = tensor_to_numpy_matrix(out, (out_rows,out_rows))\n", "plt.imshow(mat, cmap='gray', vmin=-0.5, vmax=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspecting a layer’s activation: ReducedLissom" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this example, we will use a *pylissom.nn.lissom.ReducedLissom* layer to inspect the activation of its neurons. A ReducedLissom represents the V1 of the brain. A composition approach was used for complex layers such as ReducedLissom, so the parameters, in this case, are the afferent, excitatory and inhibitory modules (which are Cortex layers) already initialized, and also the strength factors, the settling steps and the $\\theta$ threshold values for the Piecewise Sigmoid activation function.\n", "\n", "In essence this ReducedLissom layer implements the lateral interactions of the full LISSOM model, and abstracts itself from the creation of the inner cortex layers. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The V1 layer, has a 36x36 dimension. The retina layer has also 36x36 dimension. Other parameters needed to build the ReducedLissom are listed below:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "retinal_density = 36\n", "lgn_density = retinal_density\n", "cortical_density = 36\n", "# Receptive Fields\n", "radius_afferent = (lgn_density / 4 + 0.5)\n", "radius_excitatory = (cortical_density / 10)\n", "radius_inhibitory = cortical_density / 4 - 1\n", "radius_gaussian_afferent = radius_afferent / 1.3\n", "radius_gaussian_excitatory = 0.78 * radius_excitatory\n", "radius_gaussian_inhibitory = 2.08 * radius_inhibitory\n", "# Activation\n", "settling_steps = 9\n", "min_theta = 0.083\n", "max_theta = min_theta + 0.55\n", "# Scaling\n", "afferent_factor = 1.0\n", "excitatory_factor = 0.9\n", "inhibitory_factor = 0.9" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = lgn_density**2\n", "out_features = cortical_density**2\n", "excitatory_map = Cortex(in_features, out_features, radius=radius_excitatory, sigma=radius_gaussian_excitatory)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = cortical_density**2\n", "out_features = cortical_density**2\n", "afferent_map = Cortex(in_features, out_features, radius=radius_afferent, sigma=radius_gaussian_afferent)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = cortical_density**2\n", "out_features = cortical_density**2\n", "inhibitory_map = Cortex(in_features, out_features, radius=radius_inhibitory, sigma=radius_gaussian_inhibitory)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we build ReducedLissom:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "v1 = ReducedLissom(afferent_module=afferent_map, excitatory_module=excitatory_map, inhibitory_module=inhibitory_map, \n", " min_theta=min_theta, max_theta=max_theta, settling_steps=settling_steps,\n", " inhibitory_strength=inhibitory_factor, afferent_strength=afferent_factor, \n", " excitatory_strength=excitatory_factor)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The different internal parameters of ReducedLissom are displayed:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ReducedLissom (\n", " (inhibitory_module): Cortex (1296 -> 1296, sigma=16.64, radius=8.0)\n", " (excitatory_module): Cortex (1296 -> 1296, sigma=2.8080000000000003, radius=3.6)\n", " (afferent_module): Cortex (1296 -> 1296, sigma=7.3076923076923075, radius=9.5)\n", " (piecewise_sigmoid): PiecewiseSigmoid (min_theta=0.083, max_theta=0.633)\n", ", 1296 -> 1296, settling_steps=9, afferent_strength=1.0, excitatory_strength=0.9, inhibitory_strength=0.9)\n" ] } ], "source": [ "print(repr(v1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hooks to the module for plotting the input and activation of each submodule" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "register_recursive_input_output_hook(v1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we create a gaussian input stimuli using the gaussian_generator helper function, that must match the retina size:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nEbmyXohltgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gauss_size = int(in_features**0.5)\n", "gauss = gaussian_generator(gauss_size, gauss_size//2, gauss_size//2, 2, 2, 0)\n", "plot_matrix(gauss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we transform the numpy array to a pytorch Variable and resize it to match the 1-dimensional shape that pytorch layers expect as input. " ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": true }, "outputs": [], "source": [ "inp = torch.autograd.Variable(torch.from_numpy(gauss).view(in_features)).unsqueeze(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A plot of the ReducedLissom activation for the gaussian stimulus is displayed below. Note that the activations for all the neurons in the V1 layer are displayed, because the V1 has a 36x36 dimension. " ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "out_rows = int(out_features**0.5)\n", "plot_tensor(v1(inp*2.33).data, (out_rows,out_rows))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we plot the input and activation for the different modules that contribute to the activation of a V1 neuron:\n", "\n", "- v1.inhibitory_module.input: input at time (t-1) for the inhibitory connections. These are the activations of the V1 neurons at time (t-1).\n", "- v1.inhibitory_module.activation: these is the product of the input at time (t-1) and the inhibitory weights.\n", "- v1.excitatory_module.input: input at time (t-1) for the excitatory connections. These are the activations of the V1 neurons at time (t-1). Note that this is the same figure than the top figure, because the input is the activation of the V1 neurons at time (t-1).\n", "- v1.excitatory_module.activation: these is the product of the input at time (t-1) and the excitatory weights.\n", "- v1.afferent_module.input: input at the retina.\n", "- v1.afferent_module.activation: these is the product of the input at the retina and the afferent weights.\n", "- v1.input: input at the retina.\n", "- v1.activation: final activation of the V1 layer at time t." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAEICAYAAACQ6CLfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD79JREFUeJzt3X+MHOV9x/H3x45j04BkCPh6NVCSYqlFiBrJGKqSipIf\nddNIhii1oBVylDamUkoTKX/EslThJEKiEk2hahTJNG7cFpK4hQQLoaTEIiWkrWsHUeMEUtwUGtzz\nHdS5gjF2/OPbP3acLO7M3e7tzN7ufj8vybrdZ2dnn7H9uZl9Zub5KiIws3wWzHcHzGx+OPxmSTn8\nZkk5/GZJOfxmSTn8Zkk5/Iak35X0D/PdD+svh39ESVon6Z8kHZH0zZmWjYj7IuI9fejTJZJC0pua\n/iybnf8RRtch4G7gF4Hr57kvNoC85x9ikj4h6e/PaLtH0p9HxDciYjvw3x2s54OSnmh7HpL+QNJz\nkqYlfVaS2pb9tqS/kPS/kp6V9M629z4v6V1tzzdL+tvi6ePFz2lJhyX9Sg+bbz1y+Ifbl4D3SjoH\nQNJCYB1wfw3rfh9wFXBFsc7faHvtauA/gPOB24EHJZ3XwTp/rfi5NCLOjoh/rqGfNkcO/xCLiBeA\nJ4Ebi6brgSMR8S81rP7OiJiOiP8CHgNWtr02BdwdEccj4svA94HfquEzrY8c/uF3P3Bz8fh3qGev\nD3Cw7fER4Oy25wfijXeEvQD8XE2fa33i8A+/vwOuk3QhrSOAusI/k+WnxwAKF/PTsYXXgJ9pe+1n\n2x77FtIB4vAPuYh4Cfgm8FfAf0bEM9D6/i9pCa0zOgskLZG0qKaPXQb8kaRFkn4b+CXgkeK1p4Cb\nitdWAR9oe99LwCng7TX1w3rg8I+G+4F38ca9/i3A68DngHcUj+89/WIx2v6OOX7eLmAF8DJwB/CB\niPif4rU/Bn4B+BHwyfY+RcSRYvlvF2cRrpnj51sN5Mk8rBuSPgj8fkRcO999sd54z2+WlMNvlpQP\n+82S8p7fLKmebuyRtAa4B1gI/GVE3DnL8j7MMGtYRGj2pXo47C+uI/934N3Ai8Bu4OaI+N4M73H4\nzRrWafh7OexfDeyPiB9ExI9p3WSytof1mVkf9RL+5cAP256/WLS9gaQNkvZI2tPDZ5lZzRqfzCMi\ntgBbwIf9ZoOklz3/AeCitucXFm1mNgR6Cf9uYIWkt0l6M3ATsKOebplZ0+Z82B8RJyT9IfB1Wqf6\ntkbEd2vrmZk1qq9X+Pk7v1nz+nGqz8yGmMNvlpTDb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5aU\nw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5ZUr1V6nwdeBU4C\nJyJiVR2dMrPm1VGu69cj4uUa1mNmfeTDfrOkeg1/AN+Q9B1JG+rokJn1R6+H/ddGxAFJy4BHJT0b\nEY+3L1D8UvAvBrMBU1u5LkmbgcMRcdcMy7hcl1nDGi/XJektks45/Rh4D7Bvruszs/7q5bB/DPiK\npNPruT8ivlZLr8ysca7SazZiXKXXzGbk8Jsl5fCbJeXwmyXl8Jsl5fCbJeXwmyXl8Jsl5fCbJeXw\nmyXl8Jsl5fCbJeXwmyXl8Jsl5fCbJeXwmyXl8Jsl5fCbJeXwmyXl8Jsl5fCbJeXwmyU1a/glbZU0\nJWlfW9t5kh6V9Fzx89xmu2lmdetkz/8FYM0ZbRuBnRGxAthZPDezITJr+IvCm4fOaF4LbCsebwNu\nqLlfZtawuZbrGouIieLxQVqlu0q5Sq/ZYOq1RDcRETOV4YqILcAWcLkus0Ey19H+SUnjAMXPqfq6\nZGb9MNfw7wDWF4/XAw/V0x2bL5Jq+WPDY9YqvZK+CFwHnA9MArcDXwW2AxcDLwDrIuLMQcGydfmw\nf0DVFdx+Vn22cp1W6XWJbgMc/lHiEt1mNiOH3ywph98sqZ7P89tgWrCg/Pd6VXvVd/6q9qrv9lXt\np06d6qrdmuc9v1lSDr9ZUg6/WVIOv1lSDr9ZUh7tHxJVo+5Vo/eLFi0qbV+8eHFp+5IlS0rbFy5c\nWNp+8uTJ0vajR4+Wth87dqy0/fjx46XtVWcBfAVhfbznN0vK4TdLyuE3S8rhN0vK4TdLyqP9Q6Jq\nVL9q9H7p0qWl7cuWLSttHxsrn4P1rLPOKm1//fXXS9snJydL26emymd6m56eLm2vOjtQdZbBuuc9\nv1lSDr9ZUg6/WVIOv1lSDr9ZUrOO9kvaCrwPmIqIy4u2zcCHgZeKxTZFxCNNdTKTbq/VrxrVv/TS\nS0vbr7766tL2q666qrS96ixA1aj+7t27S9t37dpV2r5///7S9kOHymeC73amIKs21yq9AH8WESuL\nPw6+2ZCZa5VeMxtyvXznv03SXklbJZ1btZCkDZL2SNrTw2eZWc3mGv7PAW8HVgITwJ9WLRgRWyJi\nVUSsmuNnmVkD5hT+iJiMiJMRcQq4F1hdb7fMrGlzurZf0nhETBRPbwT21del3Lq9hr/qWv2qUf0N\nGzaUtledHejWlVde2dXyr7zySmn7a6+9Vtp+4sSJ0naP9nevk1N9P6nSK+lFWlV6r5O0EgjgeeDW\nBvtoZg2YNfwRcXNJ8+cb6IuZ9ZGv8DNLyuE3S8rhN0vKM/nMk26r4lbNq1917X3Vtfp1jepXqVp/\nVX/27t1b2j4xMVHafuTIkdL2bqsJm/f8Zmk5/GZJOfxmSTn8Zkk5/GZJebR/wFSNWldVy62aV7/q\nLMB86bYuQNX2Vv39WPe85zdLyuE3S8rhN0vK4TdLyuE3S8qj/QOm6lr0quq03VbLnS9V/anqf9X2\n+lr9+njPb5aUw2+WlMNvlpTDb5aUw2+WVCdTd18E/DUwRmuq7i0RcY+k84AvA5fQmr57XUT8qLmu\njpaqUeuq9qNHj5a2d1stt2pe/bpm+KmqulvVn6r+V21vt39vVq2TPf8J4OMRcRlwDfARSZcBG4Gd\nEbEC2Fk8N7Mh0UmV3omIeLJ4/CrwDLAcWAtsKxbbBtzQVCfNrH5dXeQj6RLgSmAXMNZWsusgra8F\nZe/ZAJTXiDKzedPxgJ+ks4EHgI9FxBsKrEXrC1fply5X6TUbTB2FX9IiWsG/LyIeLJonJY0Xr48D\nU8100cya0Mlov2jV5nsmIj7T9tIOYD1wZ/HzoUZ6mExVtdljx46Vtk9Nlf/O3bVrV1efWzWvftUM\nPN2eZajqT1X/q7bX1Xjr08l3/l8FbgGelvRU0baJVui3S/o94AVgXTNdNLMmdFKl9wmgauK0d9bb\nHTPrF1/hZ5aUw2+WlMNvlpT6eU20JF+APUdV89gvXry4tH3p0qWl7cuWLStt73Ze/W5nEKoa1Z+e\nni5trxrtr5rhx34qIjoqbuA9v1lSDr9ZUg6/WVIOv1lSDr9ZUh7tHxJV1WkXLCj//b1o0aLS9qqz\nA0uWLCltrzrLUDXqXjUDT9Xo/fHjx0vbq67h94w9s/Nov5nNyOE3S8rhN0vK4TdLyuE3S8qj/SOq\n6ixAVXvV2YSq9m7nz68avffMPPXzaL+ZzcjhN0vK4TdLyuE3S8rhN0tq1tH+Gar0bgY+DLxULLop\nIh6ZZV0e7R9QVaP63fK19/Ov09H+TsI/DoxHxJOSzgG+Q6so5zrgcETc1WmnHP7B5fCPjk7D38m8\n/RPARPH4VUmnq/Sa2RDr6jv/GVV6AW6TtFfSVknnVrxng6Q9kvb01FMzq1XHV/gVVXr/EbgjIh6U\nNAa8TGsc4NO0vhp8aJZ1+JhwQPmwf3TU9p0fflKl92Hg62cU6zz9+iXAwxFx+Szr8f+MAeXwj47a\nvvNXVemVNF6MBwDcCOybS0dtMDi0+XQy2n8t8C3gaeD0XRibgJuBlbQO+58Hbm37ZVC1Lv8PM2tY\nrYf9dXH4zZrnu/rMbEYOv1lSDr9ZUg6/WVIOv1lSDr9ZUg6/WVIOv1lSDr9ZUg6/WVIOv1lSDr9Z\nUg6/WVIOv1lSDr9ZUg6/WVIOv1lSDr9ZUg6/WVIOv1lSDr9ZUrOGX9ISSf8q6d8kfVfSJ4v28yQ9\nKum54mdpuS4zG0ydzNsv4C0Rcbio3PME8FHg/cChiLhT0kbg3Ij4xCzr8tTdZg2rberuaDlcPF1U\n/AlgLbCtaN9Gq2y3mQ2Jjr7zS1oo6SlgCng0InYBY20Veg4CYw310cwa0FH4I+JkRKwELgRWS7r8\njNeD1tHA/+MS3WaDqavR/oiYBh4D1gCTksahVbST1lFB2Xu2RMSqiFjVa2fNrD6djPZfIGlp8fgs\n4N3As8AOYH2x2HrgoaY6aWb162S0/wpaA3oLaf2y2B4Rn5L0VmA7cDHwArAuIg7Nsi6P9ps1zFV6\nzZJylV4zm5HDb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTD\nb5aUw2+WlMNvlpTDb5aUw2+WlMNvlpTDb5aUw2+WlMNvllQvJbo3Szog6aniz3ub766Z1aWXEt1r\ngMMRcVfHH+Z5+80a1+m8/W/qYEUBlJXoNrMh1kuJboDbJO2VtFXSuRXvdZVeswHUVbmuomDnV4Db\ngJeAl2kdBXwaGI+ID83yfh8xmDWskXJd7SW6I2IyIk5GxCngXmB19900s/ky63d+SRcAxyNiuq1E\n959IGo+IiWKxG4F9HXzey7Qq+gKcXzzPItv2Qr5tHoTt/flOF5w1/MA4sE1Se4nuhyX9jaSVtA77\nnwdunW1FEXHB6ceS9kTEqk47OuyybS/k2+Zh295ORvv3AleWtN/SSI/MrC98hZ9ZUvMZ/i3z+Nnz\nIdv2Qr5tHqrt7epUn5mNDh/2myXl8Jsl1ffwS1oj6fuS9kva2O/P74ficucpSfva2s6T9Kik54qf\npZdDDyNJF0l6TNL3ijs/P1q0j/I2V93tOjTb3NfwF9cKfBb4TeAy4GZJl/WzD33yBVp3PbbbCOyM\niBXAzuL5qDgBfDwiLgOuAT5S/LuO8jYfA66PiF8GVgJrJF3DEG1zv/f8q4H9EfGDiPgx8CVgbZ/7\n0LiIeBw4dEbzWmBb8XgbcENfO9WgiJiIiCeLx68CzwDLGe1tjogou9t1aLa53+FfDvyw7fmLRVsG\nY22XQx8ExuazM02RdAmti8J2MeLbXHG369Bsswf85kExR8LInWOVdDbwAPCxiHil/bVR3ObixraV\nwIXAakmXn/H6QG9zv8N/ALio7fmFRVsGk5LGAYqfU/Pcn1oVszw9ANwXEQ8WzSO9zae13+3KEG1z\nv8O/G1gh6W2S3gzcBOzocx/myw5gffF4PfDQPPalVsVUb58HnomIz7S9NMrbfEExvwVtd7s+yxBt\nc9+v8Csm+rwbWAhsjYg7+tqBPpD0ReA6Wrd4TgK3A18FtgMX07qteV1EnDkoOJQkXQt8C3gaOFU0\nb6L1vX9Ut/kKWgN67Xe7fkrSWxmSbfblvWZJecDPLCmH3ywph98sKYffLCmH3ywph98sKYffLKn/\nAxr2LaZsFhLOAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n/wCvWa7uhR1CugAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_layer_activation(v1, 'v1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lissom" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As explained before, LISSOM models the visual processing of the brain till the V1. \n", "\n", "For this, it has the two previous LGN layers, called on and off, and a ReducedLissom layer, the v1. The activation is just $v1(on(retina\\_input) + off(retina\\_input))$, meaing: first we calculate the sum of the channels activations to the input, and then passed it trough the v1." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true }, "outputs": [], "source": [ "retinal_density = 36\n", "lgn_density = 36\n", "cortical_density = 36\n", "# Receptive Fields\n", "radius_afferent = (lgn_density / 4 + 0.5)\n", "radius_excitatory = (cortical_density / 10)\n", "radius_inhibitory = cortical_density / 4 - 1\n", "radius_gaussian_afferent = radius_afferent / 1.3\n", "radius_gaussian_excitatory = 0.78 * radius_excitatory\n", "radius_gaussian_inhibitory = 2.08 * radius_inhibitory\n", "# LGN\n", "scale_afferent = radius_afferent / 6.5 # radius_afferent_reference\n", "radius_center_gaussian = 0.5*scale_afferent*retinal_density/lgn_density\n", "radius_surround_gaussian = 4*radius_center_gaussian\n", "radius_afferent_lgn = 4.7*radius_surround_gaussian\n", "# Activation\n", "settling_steps = 9\n", "min_theta = 0.083\n", "max_theta = min_theta + 0.55\n", "# Scaling\n", "afferent_factor = 1.0\n", "excitatory_factor = 0.9\n", "inhibitory_factor = 0.9\n", "lgn_factor = 2.33 / 1 # (brightness scale of the retina, contrast of fully bright stimulus)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = lgn_density**2\n", "out_features = cortical_density**2\n", "excitatory_map = Cortex(in_features, out_features, radius=radius_excitatory, sigma=radius_gaussian_excitatory)" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = cortical_density**2\n", "out_features = cortical_density**2\n", "afferent_map = Cortex(in_features, out_features, radius=radius_afferent, sigma=radius_gaussian_afferent)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = cortical_density**2\n", "out_features = cortical_density**2\n", "inhibitory_map = Cortex(in_features, out_features, radius=radius_inhibitory, sigma=radius_gaussian_inhibitory)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": true }, "outputs": [], "source": [ "v1 = ReducedLissom(afferent_module=afferent_map, excitatory_module=excitatory_map, inhibitory_module=inhibitory_map, \n", " min_theta=min_theta, max_theta=max_theta, settling_steps=settling_steps,\n", " inhibitory_strength=inhibitory_factor, afferent_strength=afferent_factor, \n", " excitatory_strength=excitatory_factor)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": true }, "outputs": [], "source": [ "in_features = retinal_density **2\n", "out_features = lgn_density**2\n", "off = LGN(in_features, out_features, \n", " on=False, \n", " radius=radius_afferent_lgn, \n", " sigma_surround=radius_surround_gaussian, sigma_center=radius_center_gaussian,\n", " strength=lgn_factor)\n", "on = LGN(in_features, out_features, \n", " on=True, \n", " radius=radius_afferent_lgn, \n", " sigma_surround=radius_surround_gaussian, sigma_center=radius_center_gaussian,\n", " strength=lgn_factor)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lissom = Lissom(on=on, off=off, v1=v1)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lissom (\n", " (v1): ReducedLissom (\n", " (inhibitory_module): Cortex (1296 -> 1296, sigma=16.64, radius=8.0)\n", " (excitatory_module): Cortex (1296 -> 1296, sigma=2.8080000000000003, radius=3.6)\n", " (afferent_module): Cortex (1296 -> 1296, sigma=7.3076923076923075, radius=9.5)\n", " (piecewise_sigmoid): PiecewiseSigmoid (min_theta=0.083, max_theta=0.633)\n", " , 1296 -> 1296, settling_steps=9, afferent_strength=1.0, excitatory_strength=0.9, inhibitory_strength=0.9)\n", " (off): LGN (\n", " (diff_of_gaussians): DifferenceOfGaussiansLinear (1296 -> 1296, sigma_surround=2.923076923076923, sigma_center=0.7307692307692307, radius=13.738461538461538, on=False)\n", " (strength): *2.33\n", " (piecewise_sigmoid): PiecewiseSigmoid (min_theta=0.0, max_theta=1.0)\n", " )\n", " (on): LGN (\n", " (diff_of_gaussians): DifferenceOfGaussiansLinear (1296 -> 1296, sigma_surround=2.923076923076923, sigma_center=0.7307692307692307, radius=13.738461538461538, on=True)\n", " (strength): *2.33\n", " (piecewise_sigmoid): PiecewiseSigmoid (min_theta=0.0, max_theta=1.0)\n", " )\n", ", 1296 -> 1296)\n" ] } ], "source": [ "print(repr(lissom))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "scrolled": true }, "outputs": [], "source": [ "register_recursive_forward_hook(lissom, input_output_hook)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADUpJREFUeJzt3V+MXOV5x/Hvg0kMJBG1k3b565JIvjFW6kgWQipCtFUq\nlxtDL6xwUVlqJHORIiLlohYXjZsqEhckai6qSG6D4lRpUiRosLhoRC3UJDcEB1EwkBQUgYLxrrHc\nECyMg+2nF3NWXdxzdmd35szu7PP9SKOZeWfmzPuCfztz3nPmfSIzkVTPZavdAUmrw/BLRRl+qSjD\nLxVl+KWiDL9UlOGXijL8UlGGXyrq8lFeHBG7gG8AG4B/yswHl3i+pxNKPcvMGOZ5sdLTeyNiA/Df\nwGeBN4BngHsy86VFXmP4pZ4NG/5RvvbfAryamb/MzN8C3wd2j7A9SRM0SvivB3614P4bTdsHRMS+\niDgaEUdHeC9JYzbSPv8wMvMgcBD82i+tJaN88h8Hblxw/4amTdIUGCX8zwBbI+KTEfFh4HPA4fF0\nS1LfVvy1PzPPR8RfAT9kcKjv4cx8cWw9k9SrFR/qW9Gbuc8v9W4Sh/okTTHDLxVl+KWiDL9UlOGX\nijL8UlGGXyrK8EtFGX6pKMMvFWX4paIMv1SU4ZeKMvxSUYZfKsrwS0UZfqkowy8VZfilogy/VJTh\nl4oatUrva8A7wAXgfGbuHEenJPVvHOW6/igzT41hO5ImyK/9UlGjhj+B/4iIn0XEvnF0SNJkjPq1\n/7bMPB4Rvwc8GRE/z8wfLXxC80fBPwzSGjO2cl0RcQA4k5kPLfIcy3VJPeu9XFdEfCQiPjZ/G/hT\n4NhKtydpskb52j8D/FtEzG/nXzLz38fSK0m9s0qvtM5YpVfSogy/VJThl4oy/FJRhl8qyvBLRRl+\nqSjDLxVl+KWiDL9UlOGXijL8UlGGXyrK8EtFGX6pKMMvFWX4paIMv1SU4ZeKMvxSUYZfKmrJ8EfE\nwxFxMiKOLWjbHBFPRsQrzfWmfrspadyG+eT/NrDrkrb9wJHM3Aocae5LmiJLhr+pvXf6kubdwKHm\n9iHgrjH3S1LPVrrPP5OZJ5rbswyq90iaIqNW6SUzc7FKPFbpldamlX7yz0XEtQDN9cmuJ2bmwczc\nmZk7V/heknqw0vAfBvY2t/cCj4+nO5ImZclCnRHxPeAO4BPAHPBl4AfAI8AW4HVgT2ZeOinYti0L\ndUo9G7ZQp1V6pXXGKr2SFmX4paIMv1SU4ZeKGvkkH02XiPa5oK725eqaQJ7kxLKG4ye/VJThl4oy\n/FJRhl8qyvBLRTnbP+W6Zukvu6z97/qGDRuW1d61nYsXL7a2X7hwYVntXdvx6ED//OSXijL8UlGG\nXyrK8EtFGX6pKGf7p0TXrH7XLP3GjRtb26+66qrW9iuvvLK1/fLL2/+JnD9/vrX97Nmzre3vvvtu\na/u5c+da27uODngUYHz85JeKMvxSUYZfKsrwS0WttErvgYg4HhHPNZc7++2mpHEbZt3+24EzwHcy\nc3vTdgA4k5kPLevNXLp7xbpm9a+44orW9quvvrq1/Zprrmltn5lpL7fYdXSga/Z+bm6utX12dra1\n/e23325tf++991rbu44C6P+Mbenujiq9kqbcKPv890XE881uwaax9UjSRKw0/N8EPgXsAE4AX+t6\nYkTsi4ijEXF0he8lqQcrCn9mzmXmhcy8CPwjcMsiz7VKr7QGrSj88+W5G3cDx7qeK2ltWvLc/oVV\neiPiDQZVeu+IiB1AAq8B9/bYx1KWew5/12x816z+9u3bW9tvvvnm1vbNmze3tp8+3T4H/OKLL7a2\nd3n//feX1e7KP+OzZPgz856W5m/10BdJE+QZflJRhl8qyvBLRRl+qShX8lljljvb37UCT9e5+l2z\n+rfffntr+3XXXdfa/uabb7a2d3nrrbda20+dOtXafubMmdb2rhWEnO1fPj/5paIMv1SU4ZeKMvxS\nUYZfKsrZ/inRVS23a139rnP+u87V75rV37JlyxC9W3r7Xf3p6n/XeDU+/heWijL8UlGGXyrK8EtF\nGX6pKGf7p0TXCjZd57p3ravftQLPcs/V73p+1/a7+tPV/67xanz85JeKMvxSUYZfKsrwS0UZfqmo\nYdbtvxH4DjDDYJ3+g5n5jYjYDPwrcBODtfv3ZOb/9NfVGrpWpOmqTnv27NnW9q5quctdV39c6/Z3\n9aer/13jdcWe8Rnmk/888KXM3AbcCnwhIrYB+4EjmbkVONLclzQlhinRfSIzn21uvwO8DFwP7AYO\nNU87BNzVVycljd+yTvKJiJuAzwBPAzOZeaJ5aJbBbkHba/YB+1beRUl9GHrCLyI+CjwKfDEzf7Pw\nsRzsiLXujFmlV1qbhgp/RHyIQfC/m5mPNc1z89V6m+uT/XRRUh+Gme0PBoU5X87Mry946DCwF3iw\nuX68lx4Ws9zZ/q5z5mdnZ5f1vl3r6netwNP1vl2z+l396dqOs/39G2af/w+BvwBeiIjnmrYHGIT+\nkYj4PPA6sKefLkrqwzAlun8CtJeRgT8Zb3ckTYpn+ElFGX6pKMMvFRWTnD2NCKdqV2i51Xs3btzY\n2t41e99V7bdrXf2uFXi6ztXvmtU/d+5ca7uz/SuXmV1zdB/gJ79UlOGXijL8UlGGXyrK8EtFOds/\n5bqOAnRVue06OtDV3rWdrnX1u2bpu9q7tuOs/so52y9pUYZfKsrwS0UZfqkowy8V5Wx/MV1HB7ra\nl6vr35Oz95PjbL+kRRl+qSjDLxVl+KWiDL9U1JLhj4gbI+KpiHgpIl6MiPub9gMRcTwinmsud/bf\nXY0qM1svFy9eHMula/tae5Y81NdU47k2M5+NiI8BP2NQlHMPcCYzHxr6zTzUJ/Vu2EN9w6zbfwI4\n0dx+JyLmq/RKmmLL2ue/pEovwH0R8XxEPBwRmzpesy8ijkbE0ZF6Kmmshj7Dr6nS+5/AVzPzsYiY\nAU4xqM77dwx2Df5yiW34tV/q2bBf+4cKf1Ol9wngh5cU65x//CbgiczcvsR2DL/Us7Gd3ttVpXe+\nPHfjbuDYcjspafUMM9t/G/Bj4AVgfs2lB4B7gB0Mvva/BtzbTA4uti0/+aWejfVr/7gYfql//qpP\n0qIMv1SU4ZeKMvxSUYZfKsrwS0UZfqkowy8VZfilogy/VJThl4oy/FJRhl8qyvBLRRl+qSjDLxVl\n+KWiDL9UlOGXijL8UlGGXypqmHX7r4iIn0bEfzVVev+2ad8cEU9GxCvNdWu5Lklr0zDr9gfwkcw8\n01Tu+QlwP/DnwOnMfDAi9gObMvOvl9iWS3dLPRvb0t05cKa5+6HmksBu4FDTfohB2W5JU2Koff6I\n2BARzwEngScz82lgZkGFnllgpqc+SurBUOHPzAuZuQO4AbglIrZf8ngy+Dbw/1iiW1qbljXbn5m/\nBp4CdgFz88U6m+uTHa85mJk7M3PnqJ2VND7DzPb/bkT8TnP7SuCzwM+Bw8De5ml7gcf76qSk8Rtm\ntv/TDCb0NjD4Y/FIZn4lIj4OPAJsAV4H9mTm6SW25Wy/1DOr9EpFWaVX0qIMv1SU4ZeKMvxSUYZf\nKsrwS0UZfqkowy8VZfilogy/VJThl4oy/FJRhl8qyvBLRRl+qSjDLxVl+KWiDL9UlOGXijL8UlGG\nXypqlCq9ByLieEQ811zu7L+7ksZllCq9u4AzmfnQ0G/m0t1S74ZduvvyITaUQFuVXklTbJQqvQD3\nRcTzEfFwRGzqrZeSxm6UKr3fBD4F7ABOAF9re61VeqW1adnluiLib4B3F+7rR8RNwBOZub3rdc3z\n3F2Qeja2cl1dVXrny3M37gaOraSjklbHkhN+wLXAoYhYWKX3iYj454jYwWDy7zXg3iG2dYpBRV+A\nTzT3q6g2Xqg35rUw3t8f9okTrdL7gTeOOJqZO1flzVdBtfFCvTFP23g9w08qyvBLRa1m+A+u4nuv\nhmrjhXpjnqrxrto+v6TV5dd+qaiJhz8idkXELyLi1YjYP+n3n4TmdOeTEXFsQdvmiHgyIl5prtfN\n6dARcWNEPBURLzW//Ly/aV/PY+76tevUjHmi4W/OFfgH4M+AbcA9EbFtkn2YkG8z+NXjQvuBI5m5\nFTjS3F8vzgNfysxtwK3AF5r/r+t5zOeAP87MP2BwivuuiLiVKRrzpD/5bwFezcxfZuZvge8Duyfc\nh95l5o+A05c07wYONbcPAXdNtFM9yswTmflsc/sd4GXgetb3mDMz237tOjVjnnT4rwd+teD+G01b\nBTOZeaK5PQvMrGZn+tL8zuMzwNOs8zF3/Np1asbshN8qaNZIWHeHWSLio8CjwBcz8zcLH1uPY+74\ntevCx9f0mCcd/uPAjQvu39C0VTA3/2Oo5vrkKvdnrJpVnh4FvpuZjzXN63rM8zLz18BTDOZ5pmbM\nkw7/M8DWiPhkRHwY+BxweMJ9WC2Hgb3N7b3A46vYl7Fqlnr7FvByZn59wUPrecytv3ZlisY88ZN8\nmoU+/x7YADycmV+daAcmICK+B9zB4Fdec8CXgR8AjwBbGPyycU9mXjopOJUi4jbgx8ALwMWm+QEG\n+/3rdcyfZjCht/DXrl+JiI8zJWP2DD+pKCf8pKIMv1SU4ZeKMvxSUYZfKsrwS0UZfqkowy8V9b/p\nEbmyXohltgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gauss_size = int(in_features**0.5)\n", "gauss = gaussian_generator(gauss_size, gauss_size//2, gauss_size//2, 2, 2, 0)\n", "plot_matrix(gauss)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": true }, "outputs": [], "source": [ "inp = torch.autograd.Variable(torch.from_numpy(gauss).view(in_features)).unsqueeze(0)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "out_rows = int(out_features**0.5)\n", "plot_tensor(lissom(inp).data, (out_rows,out_rows))" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": true, "scrolled": false }, "outputs": [], "source": [ "plot_layer_activation(lissom, 'lissom')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Playground" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.6.2" } }, "nbformat": 4, "nbformat_minor": 1 }