{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "\"\"\"\n", "Play the RF mapping for one unit.\n", "\n", "Tony Fu, July 8, 2022\n", "\"\"\"\n", "import sys\n", "\n", "import numpy as np\n", "from torchvision import models\n", "from torchvision.models import AlexNet_Weights, VGG16_Weights\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation\n", "%matplotlib ipympl\n", "\n", "sys.path.append('..')\n", "from image import make_box\n", "from mapping import BarRfMapperPz\n", "import constants as c" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "conv_i = 1\n", "unit_i = 11\n", "\n", "import numpy as np\n", "model = models.alexnet(weights=AlexNet_Weights.IMAGENET1K_V1)\n", "bm = BarRfMapperPz(model, conv_i, (227, 227))\n", "a = bm.animate(unit_i)\n", "\n", "fig, ax = plt.subplots()\n", "im = ax.imshow(np.zeros((227, 227)), cmap='gray')\n", " \n", "def animate_func(frame):\n", " vmin = im.get_array().min()\n", " vmax = im.get_array().max() * 0.8\n", " im.set_data(frame[0])\n", " im.set_clim(vmin=vmin, vmax=vmax)\n", " ax.set_title(f\"conv{conv_i+1} unit no.{unit_i} frame {frame[2]}, response = {frame[1]:.2f}\")\n", "\n", "ani = animation.FuncAnimation(\n", " fig, animate_func, frames=a, interval=10, save_count=0, cache_frame_data=False, repeat=False)\n", "\n", "ax.add_patch(make_box(bm.box))\n", "boundary = 10\n", "plt.xlim([bm.box[1] - boundary, bm.box[3] + boundary])\n", "plt.ylim([bm.box[0] - boundary, bm.box[2] + boundary])\n", "ax.invert_yaxis()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The RF mapper is for Conv2 (not Conv1) with input shape (yn = 227, xn = 227).\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9271b18bdc3c485d84de976da360a979", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+gAAAH0CAYAAACuKActAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0xUlEQVR4nO3deZRV5Zkv/m9hQTFogThQVgQlHSPEeNWrNk3aX4MtNzjhgHaiTQxJDLa3NWmH4JAb1HTiwmklxinG7o7GRHOXdisdTUclTmgkqAixNbRDQhxCkEQvsyBa+/cHi9NWqGIwUPVa9fmsddaqOvvdez/75VBPfWvvs09dVVVVAAAAgE7Vo7MLAAAAAAR0AAAAKIKADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAoF0XXXRR6urqUldX19mlAECXJ6ADwCb65S9/mcsvvzxHHnlkdt999/Tu3Tt9+/bN0KFDc8IJJ+Q//uM/OrtEOsHKlStz2WWX5cADD8zAgQPTr1+/DBs2LGeffXZeeumlzi4PgPeRuqqqqs4uAgBKN3HixNx8880bHTd27Nj83//7fzNgwICtX1QHuOiii/LVr341SdLWrwyjR4/Oww8/nFGjRuWhhx7q4Oo634svvpjDDz88L7zwQpvLGxsbc8stt+TII4/s4MoAeD9yBh0ANsFvf/vbJMnAgQNzyimn5NZbb81jjz2Wxx9/PN/5zney5557JknuvffejBs3Li0tLZ1Z7hZz0UUXpaqqNsN5d7ds2bIcccQRtXA+adKk3H///Xnsscdy8cUXZ9ttt83SpUvzyU9+MnPnzu3cYgF4X6jv7AIA4P1g8ODB+c53vpOJEyemoaGh1bIDDzwwn/rUpzJ27Ng8+uijefTRR/ODH/wgn/70pzupWjrC5Zdfnueffz5Jctlll2Xy5Mm1ZSNHjszo0aMzatSorFy5MmeccUa3vMIAgM3jEncA2EKeeeaZ7L333kmScePG5Uc/+lEnV7T1dddL3NesWZOddtopS5YsyfDhw/PMM8+kR4/1L0w89dRT853vfCdJ8vjjj+fAAw/s6FIBeB9xiTsAm+xnP/tZPv/5z2fPPfdMY2NjevXqlV133TVHHnlkrr322ixevLjdde+6664cf/zx2XXXXdPQ0JAddtghI0eOzCWXXJLly5e3u95NN91Uu4v4b37zm7S0tOSGG27Ixz72sWy//fbp169f/sf/+B+5+OKLs3LlyvXWnzFjRm39f/qnf9roMU6dOrU2/pe//OUmzcs6H/3oR7PjjjsmSX71q19t1rrvtm7/F1100QbHjR49OnV1dRk9evR6yx566KHadtYF59tuuy2HHHJIdtppp/Tp0yd77rlnzjnnnLzxxhvt7qO9u7h/5jOfSV1dXR5++OEkycMPP1wbt+6x++67b85h5ze/+U1t3ZtuuilJMn369IwbNy5NTU1paGjI0KFD87//9//Oq6++utHtvfXWW7nuuuty8MEHZ6eddkqvXr3S1NSUww8/PD/4wQ/+pLchPPjgg1myZEmStfcnaCucJ2vnaZ0777zzPe8PgG6iAoCNWLlyZXXiiSdWSTb4uPDCC9db980336yOPfbYDa7X3NxczZkzp81933jjjbVxzz77bHXIIYe0u50///M/r5YvX95q/ZaWlmrIkCFVkmr06NEbPdaPfvSjVZJq3333fS9TVTU2NlZJqr333vs9rV9V1Qbn891GjRpVJalGjRq13rIHH3ywtp3777+/+tSnPtXuvH3oQx+qfve737W5jwsvvLA27t0mTpy40dfDbrvttlnHPX/+/Nq6N954Y3Xeeee1u+2ddtqp+uUvf7nBbQ0bNmyD9R100EHV66+/vlk1rjNlypTadmbOnNnuuDVr1lR9+/atklR/9Vd/9Z72BUD34Qw6ABvU0tKSo48+Oj/84Q+TJHvssUe++c1v5pFHHsns2bNz991358tf/nI+9KEPtbn+xIkTa2cO99lnn9x888154okncu+99+azn/1s6urqsmDBghxyyCG1G7G1Z9KkSXnwwQczceLE/PjHP87s2bNz5513ZuTIkUnWXkL89a9/vdU6dXV1OfHEE5OsPZu+oX08/fTTeeaZZ5IkEyZM2ITZaW3OnDlZunRpkmT48OGbvf7WMmXKlPzgBz/IMccckzvuuCOzZ8/Of/zHf+SII45IsvZO5GeeeeZmbfPiiy/Of/7nf+aAAw5IkhxwwAH5z//8z1aP++677z3X/E//9E+55JJLMmrUqNx666158skn89Of/rT2vv7f//73+dznPtfmusuXL88hhxyS//qv/0qSHHPMMfnRj36UJ598MrfffntGjRqVJHn00Uczbty4vPPOO5td37uvrhg2bFi74+rr62v/N+bNm7fZ+wGgm+nsvxAAULZvfetbtTOFxx57bLVq1ao2x73zzjvVq6++2uq5u+++u7buIYccUq1evXq99W644YbamE984hPrLX/3GfQk1fe///31xqxatap25nuHHXao1qxZ02r5008/XVv/8ssvb/dYzz333CpJ1aNHj/WOZVMcf/zxtf3867/+62avv866bWypM+hJqq9//evrjWlpaak+/vGPV0mq+vr6atGiReuNae8M+qbUsLnefQY9STVp0qSqpaVlvXGf//zna2Oeeuqp9ZZ/6Utfqi3/yle+st7ylpaWasKECbUx11133WbXOmLEiCpJ1a9fv42OPeKII2r7au//DwBUlTPoAGxAS0tLLr/88iTJrrvumptvvnm9O5iv06NHj3zgAx9o9dy1116bJOnZs2duvPHG9OrVa731Jk2alDFjxiRJ7rjjjvzud79rt57x48fnU5/61HrPNzQ05PTTT0+SvP766+u9d3zvvfeu3bztlltuaXPbVVXVrhIYNWrUeseyMf/2b/+Wf/3Xf02S7L///hk/fvxmrb817b///vnyl7+83vN1dXU566yzkiRvv/12Zs6c2dGltWuXXXbJ1Vdfvd5735PkS1/6Uu3rRx55pNWy1atX55//+Z+TJHvttVeb7+Ovq6vLddddlx122CFJcs0112x2fcuWLUuSbLvtthsd269fv9rXG7rfAgAI6AC0a+7cubWbcU2aNGmTwsg6b7/9du0GYh//+MczePDgdsdOmjSpts6G7gS+ocvO999//9rXv/71r9tdd+7cuW1eavzoo4/m5Zdf3uh+2jJv3rx89rOfTZL06dMn3//+99sMlp3lb//2b9utZ2Pz1lmOP/74dv8YtOeee9Zei39c8+zZs2s3K/zMZz6TbbbZps1tNDY25hOf+ESStZerb+gPQ21ZtWpVkrT5R6c/9u7jePPNNzdrPwB0LwI6AO2aM2dO7ev/7//7/zZr3V//+te1u6qPGDFig2PfvXzde8DbsqH3+g4cOLD29bqzm+924okn1kJqW2fRb7311iRrw9Rxxx23wXrfbcGCBTn88MOzbNmy1NXV5bvf/W5R7z9P/rR56ywbqjlJtt9++yTr1/zu18+Wet21pXfv3knW3il+Y1avXl37uk+fPpu1HwC6FwEdgHb94Q9/qH29yy67bNa67/7orp133nmDY5uamtpc74/17du33WXv/pirtm76NWTIkNofGdaF8XXWrFmT22+/PUlyxBFHZMCAARus9921fvzjH89vfvObJMnVV1+dE044YZPW7Uh/yrx1lg3VnPx33X9c89Z43bVlu+22S7Jpl6yvWLGi9vXmXIUCQPcjoAOw1ZVyufe6S9fnz5/f6v3W9957b15//fVWYzZm2bJlOfTQQ/Pss88mSb72ta/ltNNO28IV86fYmq+7XXfdNcna8L3ukvr2vPLKK0mSnXbaqd3L9gEgEdAB2IAdd9yx9vXmvkf33ZdOv/baaxscu3DhwjbX29L+5m/+pvae4Xdf5r7ujHr//v1rHz22IW+++WbGjRuXJ554IkkyefLkfOUrX9lida4Lli0tLRsc9+4zs6zVUa+7j3zkI7Wv132cW1vefvvt/OpXv0pS1kfvAVAmAR2Adv3P//k/a1/PmDFjs9b94Ac/WLtMedasWRsc+/jjj9e+/uhHP7pZ+9kc22+/fQ477LAkyW233Za33347K1asyL//+78n2fCNydZZs2ZNjjvuuNoN8E499dRcdtllW7TOdZdP/7//9//aHVNVVV588cUtut/3opSrI9Z59+tna77uDjrooNrX614LbXnyySdrf0j5y7/8y83aBwDdj4AOQLv22Wef2t3X//mf/3mzPiKqvr4+o0aNSpJMnz69djf4tqz7WKz6+vqMHj36vRe8CdZdwv773/8+06dPz7Rp02o3s9vY5e3vvPNO/vZv/zY/+clPkiQnnXRSrrvuui1e49ChQ5OsDXft+clPfrLRS6s7wrqbpb37Rmidaf/996/dQ+B73/teu1chLFu2LLfddluStWfDN/ceC6NHj07//v1r+6mqqs1xN910U+3rY489drP2AUD3I6AD0K4ePXpk8uTJSZJXX301n/70p9u9a3VLS0sWLFjQ6rl178l+6623cvLJJ2fNmjXrrffd73439913X5K1n3O+uUFpc40bNy6NjY1J1l7mvu7y9g984AO1Pyi0paqqTJo0qfZZ58cdd1xuvPHGrXIGeV0ds2bNys9+9rP1li9cuDBf+MIXtvh+34t1/16//vWv2w2pHamhoSGf//znk6y9M/vXvva19cZUVZXTTz+9dhPE008/fb0xn/nMZ1JXV5e6uro2P/qvV69e+eIXv5hk7cfsXXHF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JBk+fHgOPfTQTJo0Kddff33WrFmT008/PSeccIK75ALwnuhNAFAWAb2DPPnkkzn44INr35911llJkokTJ+amm27KOeeckxUrVuSUU07J4sWLc9BBB+Wee+5J7969a+vccsstOf3003PIIYekR48eOe6443LVVVd1+LEA0DXoTQBQFgG9g4wePTpVVbW7vK6uLv/4j/+Yf/zHf2x3zMCBA3PrrbdujfIA6Ib0JgAoi/egAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAnoHmTFjRsaNG5fm5ubU1dVl2rRptWVr1qzJueeem7333jv9+vVLc3NzPv3pT2fBggWttvHGG29kwoQJaWxszIABA3LyySdn+fLlHXwkAHQVehMAlEVA7yArVqzIPvvsk2uvvXa9ZStXrsxTTz2VKVOm5Kmnnsodd9yR5557LkcddVSrcRMmTMizzz6b6dOn5+67786MGTNyyimndNQhANDF6E0AUJb6zi6guzjssMNy2GGHtbmsf//+mT59eqvnrrnmmvz5n/95Xn755QwZMiTz5s3LPffckyeeeCIHHHBAkuTqq6/O4YcfniuuuCLNzc1b/RgA6Fr0JgAoizPohVqyZEnq6uoyYMCAJMnMmTMzYMCA2i9ASTJmzJj06NEjs2bNanc7q1evztKlS1s9AOC90JsAYOsS0Au0atWqnHvuuTnxxBPT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QEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6B1kxowZGTduXJqbm1NXV5dp06atN2bevHk56qij0r9///Tr1y8HHnhgXn755dryVatW5bTTTssOO+yQbbfdNscdd1xee+21DjwKALoSvQkAyiKgd5AVK1Zkn332ybXXXtvm8l/96lc56KCDMmzYsDz00EN5+umnM2XKlPTu3bs25swzz8xdd92V22+/PQ8//HAWLFiQ8ePHd9QhANDF6E0AUJa6qqqqzi6iu6mrq8udd96ZY445pvbcCSeckJ49e+b73/9+m+ssWbIkO+20U2699dYcf/zxSZL/+q//yvDhwzNz5sz8xV/8xSbte+nSpenfv3/OO++8Vr9gAbB1rVq1KpdcckmWLFmSxsbGzi5nPSX0JgA6R6m9qTtyBr0ALS0t+fGPf5wPf/jDGTt2bHbeeeeMGDGi1aWGs2fPzpo1azJmzJjac8OGDcuQIUMyc+bMdre9evXqLF26tNUDADZGbwKAjiegF2DRokVZvnx5Lrnkkhx66KG57777cuyxx2b8+PF5+OGHkyQLFy5Mr169MmDAgFbrDho0KAsXLmx321OnTk3//v1rj8GDB2/NQwGgi9CbAKDjCegFaGlpSZIcffTROfPMM7PvvvvmvPPOy5FHHpnrr7/+T9r2+eefnyVLltQer7zyypYoGYAuTm8CgI5X39kFkOy4446pr6/PRz7ykVbPDx8+PI8++miSpKmpKW+99VYWL17c6kzFa6+9lqampna33dDQkIaGhq1SNwBdl94EAB1PQC9Ar169cuCBB+a5555r9fzzzz+f3XbbLUmy//77p2fPnrn//vtz3HHHJUmee+65vPzyyxk5cuQm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jdOXNk5vak1fap/e9P4ioNOlrVy5Mj16tH6Zb7PNNrW/JA4dOjRNTU25//77a8uXLl2aWbNmZeTIkR1aa2falHkYOXJkFi9enNmzZ9fGPPDAA2lpacmIESM6vOaOsu4XoBdeeCE//elPs8MOO7Ra3l3n5aSTTsrTTz+duXPn1h7Nzc2ZPHly7r333iTdc2569eqVAw88MM8991yr559//vnstttuSZL9998/PXv2bPX/7bnnnsvLL7/crX7udGd608bpSxumN61PX2qf3vQ+09l3qYOtaeLEidUHPvCB6u67767mz59f3XHHHdWOO+5YnXPOObUxl1xySTVgwIDq3//936unn366Ovroo6uhQ4dWb775ZidWvuUtW7asmjNnTjVnzpwqSfWNb3yjmjNnTu2Or5syD4ceemi13377VbNmzaoeffTRao899qhOPPHEzjqkLWJD8/LWW29VRx11VLXrrrtWc+fOrX73u9/VHqtXr65toyvOS1Vt/DXzx/74brlV1TXnZmPzcscdd1Q9e/asbrjhhuqFF16orr766mqbbbapHnnkkdo2Tj311GrIkCHVAw88UD355JPVyJEjq5EjR3bWIdHB9Ka19KX26U1t05fapzd1HQI6XdrSpUurf/iHf6iGDBlS9e7du/rgBz9Y/Z//839aNbCWlpZqypQp1aBBg6qGhobqkEMOqZ577rlOrHrrePDBB6sk6z0mTpxYVdWmzcPrr79enXjiidW2225bNTY2Vp/97GerZcuWdcLRbDkbmpf58+e3uSxJ9eCDD9a20RXnpao2/pr5Y239ItQV52ZT5uVf/uVfqg996ENV7969q3322aeaNm1aq228+eab1d///d9X22+/fdW3b9/q2GOPrX73u9918JHQWfSmtfSl9ulNbdOX2qc3dR11VVVVW+ZcPAAAAPBeeQ86AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAL8/72VhVUYs4bTAAAAAElFTkSuQmCC", "text/html": [ "\n", " <div style=\"display: inline-block;\">\n", " <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n", " Figure\n", " </div>\n", " <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAH0CAYAAACuKActAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0xUlEQVR4nO3deZRV5Zkv/m9hQTFogThQVgQlHSPEeNWrNk3aX4MtNzjhgHaiTQxJDLa3NWmH4JAb1HTiwmklxinG7o7GRHOXdisdTUclTmgkqAixNbRDQhxCkEQvsyBa+/cHi9NWqGIwUPVa9fmsddaqOvvdez/75VBPfWvvs09dVVVVAAAAgE7Vo7MLAAAAAAR0AAAAKIKADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAoF0XXXRR6urqUldX19mlAECXJ6ADwCb65S9/mcsvvzxHHnlkdt999/Tu3Tt9+/bN0KFDc8IJJ+Q//uM/OrtEOsHKlStz2WWX5cADD8zAgQPTr1+/DBs2LGeffXZeeumlzi4PgPeRuqqqqs4uAgBKN3HixNx8880bHTd27Nj83//7fzNgwICtX1QHuOiii/LVr341SdLWrwyjR4/Oww8/nFGjRuWhhx7q4Oo634svvpjDDz88L7zwQpvLGxsbc8stt+TII4/s4MoAeD9yBh0ANsFvf/vbJMnAgQNzyimn5NZbb81jjz2Wxx9/PN/5zney5557JknuvffejBs3Li0tLZ1Z7hZz0UUXpaqqNsN5d7ds2bIcccQRtXA+adKk3H///Xnsscdy8cUXZ9ttt83SpUvzyU9+MnPnzu3cYgF4X6jv7AIA4P1g8ODB+c53vpOJEyemoaGh1bIDDzwwn/rUpzJ27Ng8+uijefTRR/ODH/wgn/70pzupWjrC5Zdfnueffz5Jctlll2Xy5Mm1ZSNHjszo0aMzatSorFy5MmeccUa3vMIAgM3jEncA2EKeeeaZ7L333kmScePG5Uc/+lEnV7T1dddL3NesWZOddtopS5YsyfDhw/PMM8+kR4/1L0w89dRT853vfCdJ8vjjj+fAAw/s6FIBeB9xiTsAm+xnP/tZPv/5z2fPPfdMY2NjevXqlV133TVHHnlkrr322ixevLjdde+6664cf/zx2XXXXdPQ0JAddtghI0eOzCWXXJLly5e3u95NN91Uu4v4b37zm7S0tOSGG27Ixz72sWy//fbp169f/sf/+B+5+OKLs3LlyvXWnzFjRm39f/qnf9roMU6dOrU2/pe//OUmzcs6H/3oR7PjjjsmSX71q19t1rrvtm7/F1100QbHjR49OnV1dRk9evR6yx566KHadtYF59tuuy2HHHJIdtppp/Tp0yd77rlnzjnnnLzxxhvt7qO9u7h/5jOfSV1dXR5++OEkycMPP1wbt+6x++67b85h5ze/+U1t3ZtuuilJMn369IwbNy5NTU1paGjI0KFD87//9//Oq6++utHtvfXWW7nuuuty8MEHZ6eddkqvXr3S1NSUww8/PD/4wQ/+pLchPPjgg1myZEmStfcnaCucJ2vnaZ0777zzPe8PgG6iAoCNWLlyZXXiiSdWSTb4uPDCC9db980336yOPfbYDa7X3NxczZkzp81933jjjbVxzz77bHXIIYe0u50///M/r5YvX95q/ZaWlmrIkCFVkmr06NEbPdaPfvSjVZJq3333fS9TVTU2NlZJqr333vs9rV9V1Qbn891GjRpVJalGjRq13rIHH3ywtp3777+/+tSnPtXuvH3oQx+qfve737W5jwsvvLA27t0mTpy40dfDbrvttlnHPX/+/Nq6N954Y3Xeeee1u+2ddtqp+uUvf7nBbQ0bNmyD9R100EHV66+/vlk1rjNlypTadmbOnNnuuDVr1lR9+/atklR/9Vd/9Z72BUD34Qw6ABvU0tKSo48+Oj/84Q+TJHvssUe++c1v5pFHHsns2bNz991358tf/nI+9KEPtbn+xIkTa2cO99lnn9x888154okncu+99+azn/1s6urqsmDBghxyyCG1G7G1Z9KkSXnwwQczceLE/PjHP87s2bNz5513ZuTIkUnWXkL89a9/vdU6dXV1OfHEE5OsPZu+oX08/fTTeeaZZ5IkEyZM2ITZaW3OnDlZunRpkmT48OGbvf7WMmXKlPzgBz/IMccckzvuuCOzZ8/Of/zHf+SII45IsvZO5GeeeeZmbfPiiy/Of/7nf+aAAw5IkhxwwAH5z//8z1aP++677z3X/E//9E+55JJLMmrUqNx666158skn89Of/rT2vv7f//73+dznPtfmusuXL88hhxyS//qv/0qSHHPMMfnRj36UJ598MrfffntGjRqVJHn00Uczbty4vPPOO5td37uvrhg2bFi74+rr62v/N+bNm7fZ+wGgm+nsvxAAULZvfetbtTOFxx57bLVq1ao2x73zzjvVq6++2uq5u+++u7buIYccUq1evXq99W644YbamE984hPrLX/3GfQk1fe///31xqxatap25nuHHXao1qxZ02r5008/XVv/8ssvb/dYzz333CpJ1aNHj/WOZVMcf/zxtf3867/+62avv866bWypM+hJqq9//evrjWlpaak+/vGPV0mq+vr6atGiReuNae8M+qbUsLnefQY9STVp0qSqpaVlvXGf//zna2Oeeuqp9ZZ/6Utfqi3/yle+st7ylpaWasKECbUx11133WbXOmLEiCpJ1a9fv42OPeKII2r7au//DwBUlTPoAGxAS0tLLr/88iTJrrvumptvvnm9O5iv06NHj3zgAx9o9dy1116bJOnZs2duvPHG9OrVa731Jk2alDFjxiRJ7rjjjvzud79rt57x48fnU5/61HrPNzQ05PTTT0+SvP766+u9d3zvvfeu3bztlltuaXPbVVXVrhIYNWrUeseyMf/2b/+Wf/3Xf02S7L///hk/fvxmrb817b///vnyl7+83vN1dXU566yzkiRvv/12Zs6c2dGltWuXXXbJ1Vdfvd5735PkS1/6Uu3rRx55pNWy1atX55//+Z+TJHvttVeb7+Ovq6vLddddlx122CFJcs0112x2fcuWLUuSbLvtthsd269fv9rXG7rfAgAI6AC0a+7cubWbcU2aNGmTwsg6b7/9du0GYh//+MczePDgdsdOmjSpts6G7gS+ocvO999//9rXv/71r9tdd+7cuW1eavzoo4/m5Zdf3uh+2jJv3rx89rOfTZL06dMn3//+99sMlp3lb//2b9utZ2Pz1lmOP/74dv8YtOeee9Zei39c8+zZs2s3K/zMZz6TbbbZps1tNDY25hOf+ESStZerb+gPQ21ZtWpVkrT5R6c/9u7jePPNNzdrPwB0LwI6AO2aM2dO7ev/7//7/zZr3V//+te1u6qPGDFig2PfvXzde8DbsqH3+g4cOLD29bqzm+924okn1kJqW2fRb7311iRrw9Rxxx23wXrfbcGCBTn88MOzbNmy1NXV5bvf/W5R7z9P/rR56ywbqjlJtt9++yTr1/zu18+Wet21pXfv3knW3il+Y1avXl37uk+fPpu1HwC6FwEdgHb94Q9/qH29yy67bNa67/7orp133nmDY5uamtpc74/17du33WXv/pirtm76NWTIkNofGdaF8XXWrFmT22+/PUlyxBFHZMCAARus9921fvzjH89vfvObJMnVV1+dE044YZPW7Uh/yrx1lg3VnPx33X9c89Z43bVlu+22S7Jpl6yvWLGi9vXmXIUCQPcjoAOw1ZVyufe6S9fnz5/f6v3W9957b15//fVWYzZm2bJlOfTQQ/Pss88mSb72ta/ltNNO28IV86fYmq+7XXfdNcna8L3ukvr2vPLKK0mSnXbaqd3L9gEgEdAB2IAdd9yx9vXmvkf33ZdOv/baaxscu3DhwjbX29L+5m/+pvae4Xdf5r7ujHr//v1rHz22IW+++WbGjRuXJ554IkkyefLkfOUrX9lida4Lli0tLRsc9+4zs6zVUa+7j3zkI7Wv132cW1vefvvt/OpXv0pS1kfvAVAmAR2Adv3P//k/a1/PmDFjs9b94Ac/WLtMedasWRsc+/jjj9e+/uhHP7pZ+9kc22+/fQ477LAkyW233Za33347K1asyL//+78n2fCNydZZs2ZNjjvuuNoN8E499dRcdtllW7TOdZdP/7//9//aHVNVVV588cUtut/3opSrI9Z59+tna77uDjrooNrX614LbXnyySdrf0j5y7/8y83aBwDdj4AOQLv22Wef2t3X//mf/3mzPiKqvr4+o0aNSpJMnz69djf4tqz7WKz6+vqMHj36vRe8CdZdwv773/8+06dPz7Rp02o3s9vY5e3vvPNO/vZv/zY/+clPkiQnnXRSrrvuui1e49ChQ5OsDXft+clPfrLRS6s7wrqbpb37Rmidaf/996/dQ+B73/teu1chLFu2LLfddluStWfDN/ceC6NHj07//v1r+6mqqs1xN910U+3rY489drP2AUD3I6AD0K4ePXpk8uTJSZJXX301n/70p9u9a3VLS0sWLFjQ6rl178l+6623cvLJJ2fNmjXrrffd73439913X5K1n3O+uUFpc40bNy6NjY1J1l7mvu7y9g984AO1Pyi0paqqTJo0qfZZ58cdd1xuvPHGrXIGeV0ds2bNys9+9rP1li9cuDBf+MIXtvh+34t1/16//vWv2w2pHamhoSGf//znk6y9M/vXvva19cZUVZXTTz+9dhPE008/fb0xn/nMZ1JXV5e6uro2P/qvV69e+eIXv5hk7cfsXXHF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JBk+fHgOPfTQTJo0Kddff33WrFmT008/PSeccIK75ALwnuhNAFAWAb2DPPnkkzn44INr35911llJkokTJ+amm27KOeeckxUrVuSUU07J4sWLc9BBB+Wee+5J7969a+vccsstOf3003PIIYekR48eOe6443LVVVd1+LEA0DXoTQBQFgG9g4wePTpVVbW7vK6uLv/4j/+Yf/zHf2x3zMCBA3PrrbdujfIA6Ib0JgAoi/egAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAnoHmTFjRsaNG5fm5ubU1dVl2rRptWVr1qzJueeem7333jv9+vVLc3NzPv3pT2fBggWttvHGG29kwoQJaWxszIABA3LyySdn+fLlHXwkAHQVehMAlEVA7yArVqzIPvvsk2uvvXa9ZStXrsxTTz2VKVOm5Kmnnsodd9yR5557LkcddVSrcRMmTMizzz6b6dOn5+67786MGTNyyimndNQhANDF6E0AUJb6zi6guzjssMNy2GGHtbmsf//+mT59eqvnrrnmmvz5n/95Xn755QwZMiTz5s3LPffckyeeeCIHHHBAkuTqq6/O4YcfniuuuCLNzc1b/RgA6Fr0JgAoizPohVqyZEnq6uoyYMCAJMnMmTMzYMCA2i9ASTJmzJj06NEjs2bNanc7q1evztKlS1s9AOC90JsAYOsS0Au0atWqnHvuuTnxxBPT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QEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6B1kxowZGTduXJqbm1NXV5dp06atN2bevHk56qij0r9///Tr1y8HHnhgXn755dryVatW5bTTTssOO+yQbbfdNscdd1xee+21DjwKALoSvQkAyiKgd5AVK1Zkn332ybXXXtvm8l/96lc56KCDMmzYsDz00EN5+umnM2XKlPTu3bs25swzz8xdd92V22+/PQ8//HAWLFiQ8ePHd9QhANDF6E0AUJa6qqqqzi6iu6mrq8udd96ZY445pvbcCSeckJ49e+b73/9+m+ssWbIkO+20U2699dYcf/zxSZL/+q//yvDhwzNz5sz8xV/8xSbte+nSpenfv3/OO++8Vr9gAbB1rVq1KpdcckmWLFmSxsbGzi5nPSX0JgA6R6m9qTtyBr0ALS0t+fGPf5wPf/jDGTt2bHbeeeeMGDGi1aWGs2fPzpo1azJmzJjac8OGDcuQIUMyc+bMdre9evXqLF26tNUDADZGbwKAjiegF2DRokVZvnx5Lrnkkhx66KG57777cuyxx2b8+PF5+OGHkyQLFy5Mr169MmDAgFbrDho0KAsXLmx321OnTk3//v1rj8GDB2/NQwGgi9CbAKDjCegFaGlpSZIcffTROfPMM7PvvvvmvPPOy5FHHpnrr7/+T9r2+eefnyVLltQer7zyypYoGYAuTm8CgI5X39kFkOy4446pr6/PRz7ykVbPDx8+PI8++miSpKmpKW+99VYWL17c6kzFa6+9lqampna33dDQkIaGhq1SNwBdl94EAB1PQC9Ar169cuCBB+a5555r9fzzzz+f3XbbLUmy//77p2fPnrn//vtz3HHHJUmee+65vPzyyxk5cuQm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jdOXNk5vak1fap/e9P4ioNOlrVy5Mj16tH6Zb7PNNrW/JA4dOjRNTU25//77a8uXLl2aWbNmZeTIkR1aa2falHkYOXJkFi9enNmzZ9fGPPDAA2lpacmIESM6vOaOsu4XoBdeeCE//elPs8MOO7Ra3l3n5aSTTsrTTz+duXPn1h7Nzc2ZPHly7r333iTdc2569eqVAw88MM8991yr559//vnstttuSZL9998/PXv2bPX/7bnnnsvLL7/crX7udGd608bpSxumN61PX2qf3vQ+09l3qYOtaeLEidUHPvCB6u67767mz59f3XHHHdWOO+5YnXPOObUxl1xySTVgwIDq3//936unn366Ovroo6uhQ4dWb775ZidWvuUtW7asmjNnTjVnzpwqSfWNb3yjmjNnTu2Or5syD4ceemi13377VbNmzaoeffTRao899qhOPPHEzjqkLWJD8/LWW29VRx11VLXrrrtWc+fOrX73u9/VHqtXr65toyvOS1Vt/DXzx/74brlV1TXnZmPzcscdd1Q9e/asbrjhhuqFF16orr766mqbbbapHnnkkdo2Tj311GrIkCHVAw88UD355JPVyJEjq5EjR3bWIdHB9Ka19KX26U1t05fapzd1HQI6XdrSpUurf/iHf6iGDBlS9e7du/rgBz9Y/Z//839aNbCWlpZqypQp1aBBg6qGhobqkEMOqZ577rlOrHrrePDBB6sk6z0mTpxYVdWmzcPrr79enXjiidW2225bNTY2Vp/97GerZcuWdcLRbDkbmpf58+e3uSxJ9eCDD9a20RXnpao2/pr5Y239ItQV52ZT5uVf/uVfqg996ENV7969q3322aeaNm1aq228+eab1d///d9X22+/fdW3b9/q2GOPrX73u9918JHQWfSmtfSl9ulNbdOX2qc3dR11VVVVW+ZcPAAAAPBeeQ86AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAII6AAAAFAAAR0AAAAKIKADAABAAQR0AAAAKICADgAAAAUQ0AEAAKAAAjoAAAAUQEAHAACAAgjoAAAAUAABHQAAAAogoAMAAEABBHQAAAAogIAOAAAABRDQAQAAoAACOgAAABRAQAcAAIACCOgAAABQAAEdAAAACiCgAwAAQAEEdAAAACiAgA4AAAAFENABAACgAAI6AAAAFEBABwAAgAL8/72VhVUYs4bTAAAAAElFTkSuQmCC' width=1000.0/>\n", " </div>\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "conv_i = 1\n", "unit_i = 0\n", "\n", "model = models.alexnet(weights=AlexNet_Weights.IMAGENET1K_V1)\n", "bm = BarRfMapperPz(model, conv_i, (227, 227))\n", "a = bm.animate(unit_i)\n", "\n", "fig, (ax1, ax2) = plt.subplots(1, 2)\n", "fig.suptitle(f\"conv{conv_i+1} unit no.{unit_i}\", fontsize=20)\n", "fig.set_size_inches(10, 5)\n", "fig.suptitle(f\"conv{conv_i+1} unit no.{unit_i}\", fontsize=20)\n", "ax1.clear()\n", "ax2.clear()\n", "im1 = ax1.imshow(np.zeros((227, 227)), cmap='gray', vmin=-1, vmax=1)\n", "im2 = ax2.imshow(np.zeros((227, 227)), cmap='gray')\n", " \n", "def animate_func(frame):\n", " im1.set_data(frame[3])\n", " ax1.set_title(f\"response = {frame[1]:.2f}\")\n", "\n", " vmin = im2.get_array().min()\n", " vmax = im2.get_array().max()\n", " im2.set_data(frame[0])\n", " im2.set_clim(vmin=vmin, vmax=vmax)\n", " ax2.set_title(f\"frame {frame[2]}\")\n", "\n", "ani = animation.FuncAnimation(\n", " fig, animate_func, frames=a, interval=10, save_count=0, cache_frame_data=False, repeat=False)\n", "\n", "ax1.add_patch(make_box(bm.box))\n", "ax2.add_patch(make_box(bm.box))\n", "boundary = bm.rf_size//2\n", "ax1.set_xlim([bm.box[1] - boundary, bm.box[3] + boundary])\n", "ax1.set_ylim([bm.box[0] - boundary, bm.box[2] + boundary])\n", "ax2.set_xlim([bm.box[1] - boundary, bm.box[3] + boundary])\n", "ax2.set_ylim([bm.box[0] - boundary, bm.box[2] + boundary])\n", "ax1.invert_yaxis()\n", "ax2.invert_yaxis()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The RF mapper is for Conv1 (not Conv0) with input shape (yn = 227, xn = 227).\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b5f5917e4ab0472682f3f65e7414eede", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAABdwAAAH0CAYAAAAnhe8sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0gUlEQVR4nOzdeVyVZf7/8fdBBdwAQWVJUFzGJbfUEWnMJfgK6LikLZrlkmmWWspYRrlXg2mpLZbVODr+yhYbJbWyUUttEilBsk1SwxXB1AABQZT794dxxhMHFL3hHPT1fDzux5xzX9d1X5/rPkeu6cPFdVsMwzAEAAAAAAAAAACuiYujAwAAAAAAAAAA4HpAwh0AAAAAAAAAABOQcAcAAAAAAAAAwAQk3AEAAAAAAAAAMAEJdwAAAAAAAAAATEDCHQAAAAAAAAAAE5BwBwAAAAAAAADABCTcAQAAAAAAAAAwAQl3AAAAAAAAAABMQMIdAAAAuIHNnj1bFotFFovF0aEAAAAAVR4JdwAAAOB3mZmZ2rRpk5577jkNHDhQAQEB1mR0r169HB0eHCg3N1dLlixRWFiYbrrpJrm5ucnX11edOnXSpEmT9J///MfRIQIAAMAJVHd0AAAAAICzuOWWW3Tw4EFHh+FUevXqpW3btqlnz57aunWro8NxiC+++EKjR4/WoUOHbM6fOHFCJ06c0O7du/Xll1+qT58+DooQAAAAzoIV7gAAAMDvDMOwvvb19dVf//pXB0ZTOWbPni3DMGzGjv/ZvHmz+vbtq0OHDsnLy0tPPvmkNm7cqKSkJP33v//VW2+9pYEDB6pmzZqODhUAAABOgBXuAAAAwO8mTpyo4OBgde3aVYGBgZLE3uY3sF9//VVDhw5Vfn6+OnbsqI0bN8rX19emzl/+8hc9+OCDOnfunIOiBAAAgDMh4Q4AAAD8burUqY4OAU4kJiZGp06dUq1atRQXF1ci2X4pV1fXSowMAAAAzootZQAAAGD11Vdf6cEHH1TLli3l4eEhV1dXNWrUSH/961+1ZMkSZWZmltp2/fr1uvPOO9WoUSO5ubnJx8dHoaGhmjdvnnJyckptt2LFCuuDSQ8ePKiioiK9+eabuvXWW1WvXj3Vrl1b7du313PPPae8vLwS7bdv325t/9Zbb112jLGxsdb6P/744xXdF7MV9z979uwy6/Xq1avUB7Zu3brVep3ivdU/+OADhYWFqUGDBqpZs6ZatmypJ554QqdPny61j9mzZ1uvc6lRo0bJYrFo27ZtkqRt27ZZ6xUfTZo0Kc+wdfDgQWvbFStWSJI2bdqk/v37y8/PT25ubgoODtbDDz+so0ePXvZ6586d02uvvabevXurQYMGcnV1lZ+fn/r27au3335bRUVF5YrvUr/99ptWrVolSbrvvvvUuHHjq74WAAAAbhyscAcAAIDOnj2rMWPG6N133y1RduzYMR07dkwff/yxfv311xJJ4vz8fN17771au3atzfnTp09r586d2rlzp1555RV9/PHH6tixY5lx5OXlqU+fPtqyZYvN+e+++07fffed1q1bp88//1y1a9e2lt12220KCgrS4cOHtWrVKo0dO7bMPoqTqB07dlSbNm3KrFtVFBUV6f7779fbb79tc/7nn3/WggULtHbtWn355Zfy8/NzUIT2xcTEaN68eTbnDh48qKVLl+rf//63tm3bptatW9tte/DgQUVFRWnv3r025zMyMvTpp5/q008/1RtvvKGPPvpI3t7e5Y5tw4YNOnv2rCRpwIAB1vN5eXlKS0tTnTp15Ovry5ZDAAAAsMEKdwAAgBtcUVGRBg4caE22t2jRQosWLdKXX36pxMREbdiwQU899ZSaN29ut/3IkSOtyfYOHTpo5cqV+uabb/TZZ59p9OjRslgsSktLU1hYmI4dO1ZmLGPHjtUXX3yhkSNH6uOPP1ZiYqLWrl2r0NBQSdLXX3+tZ5991qaNxWLRsGHDJF1c7V5WH3v27NH3338vSRo+fPgV3J2qYcaMGXr77bc1aNAgrVmzRomJifrkk0/Ur18/SdL+/fs1ZcqUcl3zueee03fffacuXbpIkrp06WL9xUfx8Z///OeqY37rrbc0b9489ezZU6tWrdKuXbu0efNmjRgxQtLF/dMfeOABu21zcnIUFhZmTbYPGjRI69at065du7R69Wr17NlTkvTf//5X/fv314ULF8od386dO62v27Vrp2+++UZ9+vRR3bp11aJFC/n7+8vX11cTJ05URkZGua8PAACA65QBAACAG9pLL71kSDIkGXfccYeRn59vt96FCxeMo0eP2pzbsGGDtW1YWJhRUFBQot2bb75prXP33XeXKF++fLm1XJLx//7f/ytRJz8/32jbtq0hyfDx8TEKCwttyvfs2WNtv2DBglLHOm3aNEOS4eLiUmIspSm+bs+ePa+ofnmuOWvWrDLr9ezZs9S+v/jiC5v79uyzz5aoU1RUZPTp08eQZFSvXt04ceJEiTqzZs2yXqO8MZRXamqqTcxjx441ioqKStR78MEHrXWSkpJKlE+dOtVaPn369BLlRUVFxvDhw611XnvttXLH2qtXL2v7FStWGNWrV7eJ/dLDz8/PSE5OLncfAAAAuP6wwh0AAOAGVlRUpAULFkiSGjVqpJUrV8rNzc1uXRcXF910000255YsWSJJqlGjhpYvX273wZFjx45VeHi4JGnNmjU6fvx4qfEMHjxY9913X4nzbm5umjhxoiTp1KlTJfZeb9eundq1aydJeuedd+xe2zAM6yr+nj17lhhLVda5c2c99dRTJc5bLBZFR0dLks6fP6/4+PjKDq1U/v7+euWVV+xuyXLpw2u//PJLm7KCggL94x//kCTdfPPNdvfBt1gseu211+Tj4yNJevXVV8sd36X73o8fP14Wi0XPPvusDh8+rIKCAv3www8aNWqUJCk9PV2DBg1SdnZ2ufsBAADA9YWEOwAAwA0sOTnZ+nDKsWPHqk6dOlfc9vz589YHavbp00eBgYGl1i3eV/38+fPWB3zaU9Y2L507d7a+/uWXX0ptm5ycrJ9++qlE+X//+18dPnz4sv1URffee2+pe4lf7r45yp133lnqL3datmxp/S7+MebExETrw3tHjRqlatWq2b2Gh4eH7r77bknSjz/+WOYveuzJzc21vs7Pz9eyZcv09NNPKzAwUK6urmrTpo2WL1+ucePGSbq4p/zrr79erj4AAABw/SHhDgAAcAPbvXu39fVtt91Wrra//PKL8vLyJEkhISFl1r20vHgPdXtatWpVatmlD748c+ZMifJhw4ZZk872VrkXPyzVzc1NQ4YMKTPequZa7pujlBWzJNWrV09SyZgv/f6Y9b2zx93d3fq6ffv2uv/+++3W+/vf/279xcH7779frj4AAABw/SHhDgAAcAM7efKk9bW/v3+52l665UbDhg3LrOvn52e33R/VqlWr1DIXl//9X1d7D8EMCgqy/tKgOLlerLCwUKtXr5Yk9evXT15eXmXGW9Vcy31zlLJilv4X9x9jrojvnT1169a1vu7Tp0+p9Xx8fKwPlv3222917ty5cvUDAACA6wsJdwAAAFyz0rYzqWzFW8Wkpqba7Ff+2Wef6dSpUzZ1UPVV5Pfu0i2Sytou6dLyoqKicif2AQAAcH0h4Q4AAHADq1+/vvV1efe4vnSrkoyMjDLrpqen221ntrvuusv64NZLt5UpXvHu6empfv36VVj/V6o4UVxUVFRmvUv3EcdFlfW9u/nmm62vL/eXAZeWV69evVz9AAAA4PpCwh0AAOAG1qlTJ+vr7du3l6tt06ZNrduCJCQklFn366+/tr5u27Ztufopj3r16ikqKkqS9MEHH+j8+fPKzc3VRx99JKnsB3VWpuLtSn777bdS6xiGof3791dWSKVylr9eKHbp96civ3c9evSwvr7cw2YPHDgg6eK+7xX5CyUAAAA4PxLuAAAAN7AOHTpYt8P4xz/+oZycnCtuW716dfXs2VOStGnTJh09erTUuv/4xz+sbXr16nX1AV+B4i1jfv31V23atElxcXHWh7s6y3YywcHBkqRdu3aVWufTTz9VZmZmJUVUuuKHhxYUFDg4kos6d+5s3YP/X//6V6l/JXDmzBl98MEHkqQ2bdqU+xkFPXr0UIMGDSRJ69evL3WVe2pqqpKTkyVJf/nLX2z2zAcAAMCNh/83CAAAcANzcXHR448/Lkk6evSoRowYUepDH4uKipSWlmZzbsKECZKkc+fOacyYMSosLCzR7p///Kf+85//SJIGDx5c7sRnefXv318eHh6SLm4rU7ydzE033WT9BYGjFceRkJCgr776qkR5enq6Jk2aVNlh2VX8ef3yyy8yDMPB0Uhubm568MEHJUnff/+9nnnmmRJ1DMPQxIkTrQ8FnjhxYok6o0aNksVikcVi0datW0uUV6tWTVOnTpUkHTp0yG4/58+f1yOPPGJN+o8fP/6qxwUAAIDrAxsMAgAA3OAmTJig9evXa9OmTVq7dq3atWunRx55RF26dFGtWrWUnp6unTt36t1339W9996r2bNnW9v269dPd911l1avXq3//Oc/6tatm6Kjo9WqVSv99ttveu+99/TPf/5T0sU9tBcuXFjh43F3d9fgwYO1YsUKxcXFWX+BMGzYsMuuPk5OTrauVv6j9PR0rVixwubcnXfeqTp16pQ7xnHjxum1117T+fPn1b9/f82cOVPdu3fXuXPn9NVXX2nhwoUqLCxUixYttG/fvnJf30y33nqrli9frhMnTig6Olr33XefPD09JUk1atRQ48aNKz2mmTNnas2aNfrll180e/Zsfffddxo9erT8/f2VmpqqV1991ZpEDw0N1bhx466qn0cffVTvv/++kpKSNGfOHKWkpGjkyJFq2LChDhw4oEWLFlkfztu3b18NGTLErCECAACgiiLhDgAAcINzcXFRXFycRo4cqQ8//FA///yzJk+efMXtV65cqfPnz2vt2rVKSkrSfffdV6JOQECAPv74Y910000mRl664cOHa8WKFTYPHb2S7WTi4uI0Z84cu2UpKSkaPXq0zblevXpdVcL95ptv1vz58xUdHa3ffvtNU6ZMsSn39vZWXFycZsyY4fCE+9ChQxUbG6tffvlFixcv1uLFi61ljRs31sGDBys9prp162rLli2KiorS3r179e9//1v//ve/S9T7y1/+onXr1qlatWpX1Y+7u7s2bNig/v37KzExUe+9957ee++9EvX69u2r9957z+n2uwcAAEDlY0sZAAAAqFatWlq9erU+//xz3X///QoODlbNmjXl6uqqwMBA9e/fX2+88Yb+9re/lWjr7u6uNWvWaN26dRo8eLACAgLk6uqqevXqKSQkRLGxsUpJSVHHjh0rbTy33367zdY1bdq0qdT+r8SUKVO0ceNGRUREqF69enJzc1NwcLAmTJig3bt367bbbnN0iJKkOnXqaMeOHXrsscfUunVr64NyHa1Jkyb69ttv9eqrr6pnz57y8fFRjRo15Ovrq8jISP2///f/tH379mt+iKm/v7927typpUuXqmfPnmrQoIFq1KghPz8/DRgwQGvWrNHHH39sfRAuAAAAbmwWwxk2YgQAAAAAAAAAoIpjhTsAAAAAAAAAACYg4Q4AAAAAAAAAgAlIuAMAAAAAAAAAYAIS7gAAAAAAAAAAmICEOwAAAAAAAAAAJiDhDgAAAAAAUAVs3bpVFotFH374oaNDcToWi0WzZ892dBgAQMIdAAAAAADAUSwWyxUdW7durZD+d+zYodmzZyszM9PU637yySckwAHckKo7OgAAAAAAAIAb1f/7f//P5v3KlSu1adOmEudbt26tn376yfT+d+zYoTlz5mjUqFHy8vIy7bqffPKJlixZUmlJ97Nnz6p6ddJcAByPn0QAAAAAAAAOct9999m837lzpzZt2lTivKQKSbhfL9zd3R0dAgBIYksZAAAAAACAKqWoqEjPPfecGjVqJHd3d4WFhWn//v0l6iUkJCgyMlKenp6qVauWevbsqa+++spaPnv2bD3++OOSpODgYOv2NQcPHpQkLV++XLfffrsaNmwoNzc3tWnTRq+//vpl4xs1apSWLFkiyXbLHOl/+9D/cYucgwcPymKxaMWKFTbXqVOnjo4dO6ZBgwapTp06atCggaZOnaoLFy7YtP/jHu6zZ8+WxWLR/v37rav3PT09NXr0aOXl5dm0PXv2rB599FHVr19fdevW1YABA3Ts2DH2hQdwVVjhDgAAAAAAUIXMmzdPLi4umjp1qrKysjR//nwNHz5cCQkJ1jqff/65oqKi1LlzZ82aNUsuLi7WBPqXX36prl27avDgwfr555/17rvvatGiRapfv74kqUGDBpKk119/XTfffLMGDBig6tWra/369XrkkUdUVFSkCRMmlBrfQw89pLS0NLtb45TXhQsXFBERoZCQEL3wwgvavHmzXnzxRTVr1kwPP/zwZdvffffdCg4OVmxsrJKSkvSPf/xDDRs21PPPP2+tM2rUKH3wwQe6//771a1bN23btk39+vW7prgB3LhIuAMAAAAAAFQh+fn5Sk5OlqurqySpXr16euyxx/T999+rbdu2MgxD48ePV+/evfXpp59aV5c/9NBDuvnmmzV9+nT95z//Ufv27dWpUye9++67GjRokJo0aWLTz7Zt21SzZk3r+4kTJyoyMlILFy4sM+EeGhqqP/3pT6VujVPesd5zzz2aMWOGJGn8+PHq1KmTli1bdkUJ91tuuUXLli2zvj916pSWLVtmTbgnJSXpgw8+0OTJk7Vo0SJJ0iOPPKLRo0fr22+/vabYAdyY2FIGAAAAAACgChk9erQ12S5Jt912myTpl19+kSQlJydr3759uvfee3Xq1CmdPHlSJ0+eVG5ursLCwrR9+3YVFRVdtp9Lk+1ZWVk6efKkevbsqV9++UVZWVkmj6p048ePt3l/2223Wcd6NW1PnTql7OxsSdLGjRslXUyyX2rSpElXGy6AGxwr3AEAAAAAAKqQoKAgm/f16tWTJP3222+SpH379kmSRo4cWeo1srKyrO1K89VXX2nWrFmKj48vse95VlaWPD09yx17ebm7u1u3uClWr14961gvp6x75eHhoUOHDsnFxUXBwcE29Zo3b34NUQO4kZFwBwAAAAAAqEKqVatm97xhGJJkXb2+YMECdezY0W7dOnXqlNnHgQMHFBYWplatWmnhwoUKDAyUq6urPvnkEy1atOiKVsjbU7y9zR/98SGoxUob65W63L0CALORcAcAAAAAALiONGvWTJLk4eGh8PDwMuuWlgBfv369CgoKtG7dOptV4l988cUVxVDadYtXmGdmZtqcP3To0BVd12yNGzdWUVGRUlNT1aJFC+v5/fv3OyQeAFUfe7gDAAAAAABcRzp37qxmzZrphRdeUE5OTonyX3/91fq6du3akkomwItXhl+6EjwrK0vLly+/ohhKu27jxo1VrVo1bd++3eb8a6+9dkXXNVtERITd/l955RVHhAPgOsAKdwAAAAAAgOuIi4uL/vGPfygqKko333yzRo8erZtuuknHjh3TF198IQ8PD61fv17SxeS8JD399NMaOnSoatSoof79+6tPnz5ydXVV//799dBDDyknJ0dvvfWWGjZsqOPHj182huLrPvroo4qIiFC1atU0dOhQeXp66q677tIrr7wii8WiZs2aacOGDTpx4kTF3ZDLxDlkyBAtXrxYp06dUrdu3bRt2zb9/PPPkkpfqQ8ApSHhDgAAAAAAcJ3p1auX4uPj9cwzz+jVV19VTk6O/Pz8FBISooceesha789//rOeeeYZLV26VBs3brRur9KyZUt9+OGHmj59uqZOnSo/Pz89/PDDatCggR544IHL9j948GBNmjRJ7733nt5++20ZhqGhQ4dKurh6vLCwUEuXLpWbm5vuvvtuLViwQG3btq2w+1GWlStXys/PT++++67Wrl2r8PBwvf/++2rZsqXc3d0dEhOAqsti8JQIAAAAAAAAwCo5OVm33HKL3n77bQ0fPtzR4QCoQtjDHQAAAAAAADess2fPlji3ePFiubi4qEePHg6ICEBVxpYyAAAAAAAAuGHNnz9fiYmJ6t27t6pXr65PP/1Un376qcaNG6fAwEBHhwegimFLGQAAAAAAANywNm3apDlz5ujHH39UTk6OgoKCdP/99+vpp59W9eqsVQVQPiTcAQAAAAAAAAAwAXu4AwAAAAAAAABgAhLuAAAAAAAAAACYgI2oAAAAAABwckVFRUpLS1PdunVlsVgcHQ4AVHmGYejMmTMKCAiQiwtrkmEeEu4AAAAAADi5tLQ0BQYGOjoMALjuHDlyRI0aNXJ0GLiOkHAHAAAAAMDJ1a1bV9LFxJCHh4eDowGAqi87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Y8dWeL8TJ060rlD/o61bt5Y4d9ddd+muu+4q9XoWi0Vz587V3LlzzQoRAAA4IbaUAQAAAAA4LVdXV5v3TZo00bFjxxwUDQAAQNlIuAMAAAAAqoyjR4+qbt26jg4DAADALhLuAAAAAACnZ7FYlJOTo1mzZqlv376ODgcAAMAu9nAHAAAAADitrl27Kj8/X/fee6/27dun+vXr691333V0WAAAAHaRcAcAAAAAOK2pU6fq559/Vk5OjsaMGaPhw4erZs2ajg4LAADALhLuAAAAAACndffdd8vDw8PRYQAAAFwR9nAHAAAAAAAAAMAEJNwBAAAAAE7r/Pnzjg4BAADgirGlDAAAAADAad18881q3769ateubXN+zZo1DooIAACgdCTcAQAAAABOKywsTDVq1HB0GAAAAFeEhDsAAAAAwGm99tprPDQVAABUGezhDgAAAAAAAACACUi4AwAAAAAAAABgAhLuAAAAAAAAAACYgIQ7AAAAAAAAAAAmIOGOctm+fbv69++vgIAAWSwWxcXF2ZSvWbNGffr0kY+PjywWi5KTk23KT58+rUmTJqlly5aqWbOmgoKC9OijjyorK6vMfkeNGiWLxWJzREZGmjw6AICjMc8AAAAAAKqy6o4OAFVLbm6uOnTooAceeECDBw+2W969e3fdfffdGjt2bInytLQ0paWl6YUXXlCbNm106NAhjR8/Xmlpafrwww/L7DsyMlLLly+3vndzc7v2AQEAnArzDADgj5YuXSp3d3fre4vFInd3dzVv3lw9evRQtWrVHBgdAACALRLuKJeoqChFRUWVWn7//fdLkg4ePGi3vG3btvr3v/9tfd+sWTM999xzuu+++3T+/HlVr176V9LNzU1+fn5XFzgAoEpgngEA/NGTTz6pevXqSZJ+++031apVS3Xq1NGJEyfUtGlTffHFFwoMDHRwlAAAABexpQwcLisrSx4eHmUmQSRp69atatiwoVq2bKmHH35Yp06dKrN+QUGBsrOzbQ4AwI2HeQYAqrakpCSdOnVKp06d0s8//6yQkBC99NJLOnz4sPz8/DRlyhRHhwgAAGBFwh0OdfLkST3zzDMaN25cmfUiIyO1cuVKbdmyRc8//7y2bdumqKgoXbhwodQ2sbGx8vT0tB6segGAGw/zDABUfU2bNrW+bt68uV544QXFxMSoUaNGmj9/vr766isH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", "text/html": [ "\n", " <div style=\"display: inline-block;\">\n", " <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n", " Figure\n", " </div>\n", " <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAH0CAYAAAAnhe8sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0gUlEQVR4nOzdeVyVZf7/8fdBBdwAQWVJUFzGJbfUEWnMJfgK6LikLZrlkmmWWspYRrlXg2mpLZbVODr+yhYbJbWyUUttEilBsk1SwxXB1AABQZT794dxxhMHFL3hHPT1fDzux5xzX9d1X5/rPkeu6cPFdVsMwzAEAAAAAAAAAACuiYujAwAAAAAAAAAA4HpAwh0AAAAAAAAAABOQcAcAAAAAAAAAwAQk3AEAAAAAAAAAMAEJdwAAAAAAAAAATEDCHQAAAAAAAAAAE5BwBwAAAAAAAADABCTcAQAAAAAAAAAwAQl3AAAAAAAAAABMQMIdAAAAuIHNnj1bFotFFovF0aEAAAAAVR4JdwAAAOB3mZmZ2rRpk5577jkNHDhQAQEB1mR0r169HB0eHCg3N1dLlixRWFiYbrrpJrm5ucnX11edOnXSpEmT9J///MfRIQIAAMAJVHd0AAAAAICzuOWWW3Tw4EFHh+FUevXqpW3btqlnz57aunWro8NxiC+++EKjR4/WoUOHbM6fOHFCJ06c0O7du/Xll1+qT58+DooQAAAAzoIV7gAAAMDvDMOwvvb19dVf//pXB0ZTOWbPni3DMGzGjv/ZvHmz+vbtq0OHDsnLy0tPPvmkNm7cqKSkJP33v//VW2+9pYEDB6pmzZqODhUAAABOgBXuAAAAwO8mTpyo4OBgde3aVYGBgZLE3uY3sF9//VVDhw5Vfn6+OnbsqI0bN8rX19emzl/+8hc9+OCDOnfunIOiBAAAgDMh4Q4AAAD8burUqY4OAU4kJiZGp06dUq1atRQXF1ci2X4pV1fXSowMAAAAzootZQAAAGD11Vdf6cEHH1TLli3l4eEhV1dXNWrUSH/961+1ZMkSZWZmltp2/fr1uvPOO9WoUSO5ubnJx8dHoaGhmjdvnnJyckptt2LFCuuDSQ8ePKiioiK9+eabuvXWW1WvXj3Vrl1b7du313PPPae8vLwS7bdv325t/9Zbb112jLGxsdb6P/744xXdF7MV9z979uwy6/Xq1avUB7Zu3brVep3ivdU/+OADhYWFqUGDBqpZs6ZatmypJ554QqdPny61j9mzZ1uvc6lRo0bJYrFo27ZtkqRt27ZZ6xUfTZo0Kc+wdfDgQWvbFStWSJI2bdqk/v37y8/PT25ubgoODtbDDz+so0ePXvZ6586d02uvvabevXurQYMGcnV1lZ+fn/r27au3335bRUVF5YrvUr/99ptWrVolSbrvvvvUuHHjq74WAAAAbhyscAcAAIDOnj2rMWPG6N133y1RduzYMR07dkwff/yxfv311xJJ4vz8fN17771au3atzfnTp09r586d2rlzp1555RV9/PHH6tixY5lx5OXlqU+fPtqyZYvN+e+++07fffed1q1bp88//1y1a9e2lt12220KCgrS4cOHtWrVKo0dO7bMPoqTqB07dlSbNm3KrFtVFBUV6f7779fbb79tc/7nn3/WggULtHbtWn355Zfy8/NzUIT2xcTEaN68eTbnDh48qKVLl+rf//63tm3bptatW9tte/DgQUVFRWnv3r025zMyMvTpp5/q008/1RtvvKGPPvpI3t7e5Y5tw4YNOnv2rCRpwIAB1vN5eXlKS0tTnTp15Ovry5ZDAAAAsMEKdwAAgBtcUVGRBg4caE22t2jRQosWLdKXX36pxMREbdiwQU899ZSaN29ut/3IkSOtyfYOHTpo5cqV+uabb/TZZ59p9OjRslgsSktLU1hYmI4dO1ZmLGPHjtUXX3yhkSNH6uOPP1ZiYqLWrl2r0NBQSdLXX3+tZ5991qaNxWLRsGHDJF1c7V5WH3v27NH3338vSRo+fPgV3J2qYcaMGXr77bc1aNAgrVmzRomJifrkk0/Ur18/SdL+/fs1ZcqUcl3zueee03fffacuXbpIkrp06WL9xUfx8Z///OeqY37rrbc0b9489ezZU6tWrdKuXbu0efNmjRgxQtLF/dMfeOABu21zcnIUFhZmTbYPGjRI69at065du7R69Wr17NlTkvTf//5X/fv314ULF8od386dO62v27Vrp2+++UZ9+vRR3bp11aJFC/n7+8vX11cTJ05URkZGua8PAACA65QBAACAG9pLL71kSDIkGXfccYeRn59vt96FCxeMo0eP2pzbsGGDtW1YWJhRUFBQot2bb75prXP33XeXKF++fLm1XJLx//7f/ytRJz8/32jbtq0hyfDx8TEKCwttyvfs2WNtv2DBglLHOm3aNEOS4eLiUmIspSm+bs+ePa+ofnmuOWvWrDLr9ezZs9S+v/jiC5v79uyzz5aoU1RUZPTp08eQZFSvXt04ceJEiTqzZs2yXqO8MZRXamqqTcxjx441ioqKStR78MEHrXWSkpJKlE+dOtVaPn369BLlRUVFxvDhw611XnvttXLH2qtXL2v7FStWGNWrV7eJ/dLDz8/PSE5OLncfAAAAuP6wwh0AAOAGVlRUpAULFkiSGjVqpJUrV8rNzc1uXRcXF910000255YsWSJJqlGjhpYvX273wZFjx45VeHi4JGnNmjU6fvx4qfEMHjxY9913X4nzbm5umjhxoiTp1KlTJfZeb9eundq1aydJeuedd+xe2zAM6yr+nj17lhhLVda5c2c99dRTJc5bLBZFR0dLks6fP6/4+PjKDq1U/v7+euWVV+xuyXLpw2u//PJLm7KCggL94x//kCTdfPPNdvfBt1gseu211+Tj4yNJevXVV8sd36X73o8fP14Wi0XPPvusDh8+rIKCAv3www8aNWqUJCk9PV2DBg1SdnZ2ufsBAADA9YWEOwAAwA0sOTnZ+nDKsWPHqk6dOlfc9vz589YHavbp00eBgYGl1i3eV/38+fPWB3zaU9Y2L507d7a+/uWXX0ptm5ycrJ9++qlE+X//+18dPnz4sv1URffee2+pe4lf7r45yp133lnqL3datmxp/S7+MebExETrw3tHjRqlatWq2b2Gh4eH7r77bknSjz/+WOYveuzJzc21vs7Pz9eyZcv09NNPKzAwUK6urmrTpo2WL1+ucePGSbq4p/zrr79erj4AAABw/SHhDgAAcAPbvXu39fVtt91Wrra//PKL8vLyJEkhISFl1r20vHgPdXtatWpVatmlD748c+ZMifJhw4ZZk872VrkXPyzVzc1NQ4YMKTPequZa7pujlBWzJNWrV09SyZgv/f6Y9b2zx93d3fq6ffv2uv/+++3W+/vf/279xcH7779frj4AAABw/SHhDgAAcAM7efKk9bW/v3+52l665UbDhg3LrOvn52e33R/VqlWr1DIXl//9X1d7D8EMCgqy/tKgOLlerLCwUKtXr5Yk9evXT15eXmXGW9Vcy31zlLJilv4X9x9jrojvnT1169a1vu7Tp0+p9Xx8fKwPlv3222917ty5cvUDAACA6wsJdwAAAFyz0rYzqWzFW8Wkpqba7Ff+2Wef6dSpUzZ1UPVV5Pfu0i2Sytou6dLyoqKicif2AQAAcH0h4Q4AAHADq1+/vvV1efe4vnSrkoyMjDLrpqen221ntrvuusv64NZLt5UpXvHu6empfv36VVj/V6o4UVxUVFRmvUv3EcdFlfW9u/nmm62vL/eXAZeWV69evVz9AAAA4PpCwh0AAOAG1qlTJ+vr7du3l6tt06ZNrduCJCQklFn366+/tr5u27Ztufopj3r16ikqKkqS9MEHH+j8+fPKzc3VRx99JKnsB3VWpuLtSn777bdS6xiGof3791dWSKVylr9eKHbp96civ3c9evSwvr7cw2YPHDgg6eK+7xX5CyUAAAA4PxLuAAAAN7AOHTpYt8P4xz/+oZycnCtuW716dfXs2VOStGnTJh09erTUuv/4xz+sbXr16nX1AV+B4i1jfv31V23atElxcXHWh7s6y3YywcHBkqRdu3aVWufTTz9VZmZmJUVUuuKHhxYUFDg4kos6d+5s3YP/X//6V6l/JXDmzBl98MEHkqQ2bdqU+xkFPXr0UIMGDSRJ69evL3WVe2pqqpKTkyVJf/nLX2z2zAcAAMCNh/83CAAAcANzcXHR448/Lkk6evSoRowYUepDH4uKipSWlmZzbsKECZKkc+fOacyYMSosLCzR7p///Kf+85//SJIGDx5c7sRnefXv318eHh6SLm4rU7ydzE033WT9BYGjFceRkJCgr776qkR5enq6Jk2aVNlh2VX8ef3yyy8yDMPB0Uhubm568MEHJUnff/+9nnnmmRJ1DMPQxIkTrQ8FnjhxYok6o0aNksVikcVi0datW0uUV6tWTVOnTpUkHTp0yG4/58+f1yOPPGJN+o8fP/6qxwUAAIDrAxsMAgAA3OAmTJig9evXa9OmTVq7dq3atWunRx55RF26dFGtWrWUnp6unTt36t1339W9996r2bNnW9v269dPd911l1avXq3//Oc/6tatm6Kjo9WqVSv99ttveu+99/TPf/5T0sU9tBcuXFjh43F3d9fgwYO1YsUKxcXFWX+BMGzYsMuuPk5OTrauVv6j9PR0rVixwubcnXfeqTp16pQ7xnHjxum1117T+fPn1b9/f82cOVPdu3fXuXPn9NVXX2nhwoUqLCxUixYttG/fvnJf30y33nqrli9frhMnTig6Olr33XefPD09JUk1atRQ48aNKz2mmTNnas2aNfrll180e/Zsfffddxo9erT8/f2VmpqqV1991ZpEDw0N1bhx466qn0cffVTvv/++kpKSNGfOHKWkpGjkyJFq2LChDhw4oEWLFlkfztu3b18NGTLErCECAACgiiLhDgAAcINzcXFRXFycRo4cqQ8//FA///yzJk+efMXtV65cqfPnz2vt2rVKSkrSfffdV6JOQECAPv74Y910000mRl664cOHa8WKFTYPHb2S7WTi4uI0Z84cu2UpKSkaPXq0zblevXpdVcL95ptv1vz58xUdHa3ffvtNU6ZMsSn39vZWXFycZsyY4fCE+9ChQxUbG6tffvlFixcv1uLFi61ljRs31sGDBys9prp162rLli2KiorS3r179e9//1v//ve/S9T7y1/+onXr1qlatWpX1Y+7u7s2bNig/v37KzExUe+9957ee++9EvX69u2r9957z+n2uwcAAEDlY0sZAAAAqFatWlq9erU+//xz3X///QoODlbNmjXl6uqqwMBA9e/fX2+88Yb+9re/lWjr7u6uNWvWaN26dRo8eLACAgLk6uqqevXqKSQkRLGxsUpJSVHHjh0rbTy33367zdY1bdq0qdT+r8SUKVO0ceNGRUREqF69enJzc1NwcLAmTJig3bt367bbbnN0iJKkOnXqaMeOHXrsscfUunVr64NyHa1Jkyb69ttv9eqrr6pnz57y8fFRjRo15Ovrq8jISP2///f/tH379mt+iKm/v7927typpUuXqmfPnmrQoIFq1KghPz8/DRgwQGvWrNHHH39sfRAuAAAAbmwWwxk2YgQAAAAAAAAAoIpjhTsAAAAAAAAAACYg4Q4AAAAAAAAAgAlIuAMAAAAAAAAAYAIS7gAAAAAAAAAAmICEOwAAAAAAAAAAJiDhDgAAAAAAUAVs3bpVFotFH374oaNDcToWi0WzZ892dBgAQMIdAAAAAADAUSwWyxUdW7durZD+d+zYodmzZyszM9PU637yySckwAHckKo7OgAAAAAAAIAb1f/7f//P5v3KlSu1adOmEudbt26tn376yfT+d+zYoTlz5mjUqFHy8vIy7bqffPKJlixZUmlJ97Nnz6p6ddJcAByPn0QAAAAAAAAOct9999m837lzpzZt2lTivKQKSbhfL9zd3R0dAgBIYksZAAAAAACAKqWoqEjPPfecGjVqJHd3d4WFhWn//v0l6iUkJCgyMlKenp6qVauWevbsqa+++spaPnv2bD3++OOSpODgYOv2NQcPHpQkLV++XLfffrsaNmwoNzc3tWnTRq+//vpl4xs1apSWLFkiyXbLHOl/+9D/cYucgwcPymKxaMWKFTbXqVOnjo4dO6ZBgwapTp06atCggaZOnaoLFy7YtP/jHu6zZ8+WxWLR/v37rav3PT09NXr0aOXl5dm0PXv2rB599FHVr19fdevW1YABA3Ts2DH2hQdwVVjhDgAAAAAAUIXMmzdPLi4umjp1qrKysjR//nwNHz5cCQkJ1jqff/65oqKi1LlzZ82aNUsuLi7WBPqXX36prl27avDgwfr555/17rvvatGiRapfv74kqUGDBpKk119/XTfffLMGDBig6tWra/369XrkkUdUVFSkCRMmlBrfQw89pLS0NLtb45TXhQsXFBERoZCQEL3wwgvavHmzXnzxRTVr1kwPP/zwZdvffffdCg4OVmxsrJKSkvSPf/xDDRs21PPPP2+tM2rUKH3wwQe6//771a1bN23btk39+vW7prgB3LhIuAMAAAAAAFQh+fn5Sk5OlqurqySpXr16euyxx/T999+rbdu2MgxD48ePV+/evfXpp59aV5c/9NBDuvnmmzV9+nT95z//Ufv27dWpUye9++67GjRokJo0aWLTz7Zt21SzZk3r+4kTJyoyMlILFy4sM+EeGhqqP/3pT6VujVPesd5zzz2aMWOGJGn8+PHq1KmTli1bdkUJ91tuuUXLli2zvj916pSWLVtmTbgnJSXpgw8+0OTJk7Vo0SJJ0iOPPKLRo0fr22+/vabYAdyY2FIGAAAAAACgChk9erQ12S5Jt912myTpl19+kSQlJydr3759uvfee3Xq1CmdPHlSJ0+eVG5ursLCwrR9+3YVFRVdtp9Lk+1ZWVk6efKkevbsqV9++UVZWVkmj6p048ePt3l/2223Wcd6NW1PnTql7OxsSdLGjRslXUyyX2rSpElXGy6AGxwr3AEAAAAAAKqQoKAgm/f16tWTJP3222+SpH379kmSRo4cWeo1srKyrO1K89VXX2nWrFmKj48vse95VlaWPD09yx17ebm7u1u3uClWr14961gvp6x75eHhoUOHDsnFxUXBwcE29Zo3b34NUQO4kZFwBwAAAAAAqEKqVatm97xhGJJkXb2+YMECdezY0W7dOnXqlNnHgQMHFBYWplatWmnhwoUKDAyUq6urPvnkEy1atOiKVsjbU7y9zR/98SGoxUob65W63L0CALORcAcAAAAAALiONGvWTJLk4eGh8PDwMuuWlgBfv369CgoKtG7dOptV4l988cUVxVDadYtXmGdmZtqcP3To0BVd12yNGzdWUVGRUlNT1aJFC+v5/fv3OyQeAFUfe7gDAAAAAABcRzp37qxmzZrphRdeUE5OTonyX3/91fq6du3akkomwItXhl+6EjwrK0vLly+/ohhKu27jxo1VrVo1bd++3eb8a6+9dkXXNVtERITd/l955RVHhAPgOsAKdwAAAAAAgOuIi4uL/vGPfygqKko333yzRo8erZtuuknHjh3TF198IQ8PD61fv17SxeS8JD399NMaOnSoatSoof79+6tPnz5ydXVV//799dBDDyknJ0dvvfWWGjZsqOPHj182huLrPvroo4qIiFC1atU0dOhQeXp66q677tIrr7wii8WiZs2aacOGDTpx4kTF3ZDLxDlkyBAtXrxYp06dUrdu3bRt2zb9/PPPkkpfqQ8ApSHhDgAAAAAAcJ3p1auX4uPj9cwzz+jVV19VTk6O/Pz8FBISooceesha789//rOeeeYZLV26VBs3brRur9KyZUt9+OGHmj59uqZOnSo/Pz89/PDDatCggR544IHL9j948GBNmjRJ7733nt5++20ZhqGhQ4dKurh6vLCwUEuXLpWbm5vuvvtuLViwQG3btq2w+1GWlStXys/PT++++67Wrl2r8PBwvf/++2rZsqXc3d0dEhOAqsti8JQIAAAAAAAAwCo5OVm33HKL3n77bQ0fPtzR4QCoQtjDHQAAAAAAADess2fPlji3ePFiubi4qEePHg6ICEBVxpYyAAAAAAAAuGHNnz9fiYmJ6t27t6pXr65PP/1Un376qcaNG6fAwEBHhwegimFLGQAAAAAAANywNm3apDlz5ujHH39UTk6OgoKCdP/99+vpp59W9eqsVQVQPiTcAQAAAAAAAAAwAXu4AwAAAAAAAABgAhLuAAAAAAAAAACYgI2oAAAAAABwckVFRUpLS1PdunVlsVgcHQ4AVHmGYejMmTMKCAiQiwtrkmEeEu4AAAAAADi5tLQ0BQYGOjoMALjuHDlyRI0aNXJ0GLiOkHAHAAAAAMDJ1a1bV9LFxJCHh4eDowGAqi87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Y8dWeL8TJ060rlD/o61bt5Y4d9ddd+muu+4q9XoWi0Vz587V3LlzzQoRAAA4IbaUAQAAAAA4LVdXV5v3TZo00bFjxxwUDQAAQNlIuAMAAAAAqoyjR4+qbt26jg4DAADALhLuAAAAAACnZ7FYlJOTo1mzZqlv376ODgcAAMAu9nAHAAAAADitrl27Kj8/X/fee6/27dun+vXr691333V0WAAAAHaRcAcAAAAAOK2pU6fq559/Vk5OjsaMGaPhw4erZs2ajg4LAADALhLuAAAAAACndffdd8vDw8PRYQAAAFwR9nAHAAAAAAAAAMAEJNwBAAAAAE7r/Pnzjg4BAADgirGlDAAAAADAad18881q3769ateubXN+zZo1DooIAACgdCTcAQAAAABOKywsTDVq1HB0GAAAAFeEhDsAAAAAwGm99tprPDQVAABUGezhDgAAAAAAAACACUi4AwAAAAAAAABgAhLuAAAAAAAAAACYgIQ7AAAAAAAAAAAmIOGOctm+fbv69++vgIAAWSwWxcXF2ZSvWbNGffr0kY+PjywWi5KTk23KT58+rUmTJqlly5aqWbOmgoKC9OijjyorK6vMfkeNGiWLxWJzREZGmjw6AICjMc8AAAAAAKqy6o4OAFVLbm6uOnTooAceeECDBw+2W969e3fdfffdGjt2bInytLQ0paWl6YUXXlCbNm106NAhjR8/Xmlpafrwww/L7DsyMlLLly+3vndzc7v2AQEAnArzDADgj5YuXSp3d3fre4vFInd3dzVv3lw9evRQtWrVHBgdAACALRLuKJeoqChFRUWVWn7//fdLkg4ePGi3vG3btvr3v/9tfd+sWTM999xzuu+++3T+/HlVr176V9LNzU1+fn5XFzgAoEpgngEA/NGTTz6pevXqSZJ+++031apVS3Xq1NGJEyfUtGlTffHFFwoMDHRwlAAAABexpQwcLisrSx4eHmUmQSRp69atatiwoVq2bKmHH35Yp06dKrN+QUGBsrOzbQ4AwI2HeQYAqrakpCSdOnVKp06d0s8//6yQkBC99NJLOnz4sPz8/DRlyhRHhwgAAGBFwh0OdfLkST3zzDMaN25cmfUiIyO1cuVKbdmyRc8//7y2bdumqKgoXbhwodQ2sbGx8vT0tB6segGAGw/zDABUfU2bNrW+bt68uV544QXFxMSoUaNGmj9/vr766isH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' width=1500.0/>\n", " </div>\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "conv_i = 0\n", "unit_i = 6\n", "\n", "model = models.alexnet(weights=AlexNet_Weights.IMAGENET1K_V1)\n", "bm = BarRfMapperPz(model, conv_i, (227, 227))\n", "a = bm.animate(unit_i)\n", "\n", "fig, (ax1, ax2, ax3) = plt.subplots(1, 3)\n", "fig.suptitle(f\"conv{conv_i+1} unit no.{unit_i}\", fontsize=20)\n", "fig.set_size_inches(15, 5)\n", "ax1.clear()\n", "ax2.clear()\n", "im1 = ax1.imshow(np.zeros((227, 227)), cmap='gray', vmin=-1, vmax=1)\n", "im2 = ax2.imshow(np.zeros((227, 227)), cmap='gray')\n", "im3 = ax3.bar(bm.thetas, np.zeros((len(bm.thetas))))\n", "ax3.set_title(\"Theta tuning\")\n", "ax3.set_xlabel(\"theta\")\n", "ax3.set_ylabel(\"avg response\")\n", " \n", "def animate_func(frame):\n", " im1.set_data(frame[3])\n", " ax1.set_title(f\"response = {frame[1]:.2f}\")\n", "\n", " vmin = im2.get_array().min()\n", " vmax = im2.get_array().max()\n", " im2.set_data(frame[0])\n", " im2.set_clim(vmin=vmin, vmax=vmax)\n", " ax2.set_title(f\"frame {frame[2]}\")\n", " \n", " ax3.bar(bm.thetas, frame[4], width=0.6)\n", "\n", "ani = animation.FuncAnimation(\n", " fig, animate_func, frames=a, interval=10, save_count=0, cache_frame_data=False, repeat=False)\n", "\n", "ax1.add_patch(make_box(bm.box))\n", "ax2.add_patch(make_box(bm.box))\n", "boundary = bm.rf_size//2\n", "ax1.set_xlim([bm.box[1] - boundary, bm.box[3] + boundary])\n", "ax1.set_ylim([bm.box[0] - boundary, bm.box[2] + boundary])\n", "ax2.set_xlim([bm.box[1] - boundary, bm.box[3] + boundary])\n", "ax2.set_ylim([bm.box[0] - boundary, bm.box[2] + boundary])\n", "ax1.invert_yaxis()\n", "ax2.invert_yaxis()\n", "plt.show()" ] } ], "metadata": { "interpreter": { "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" }, "kernelspec": { "display_name": "Python 3.9.1 64-bit", "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.9.1" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }