{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bootstrap SNN Training\n", "\n", "The underlying principle for ANN-SNN conversion is that the ReLU activation function (or similar form) approximates the firing rate of an LIF spiking neuron. Consequently, an ANN trained with ReLU activation can be mapped to an equivalent SNN with proper scaling of weights and thresholds. However, as the number of time-steps reduces, the alignment between ReLU activation and LIF spiking rate falls apart mainly due to the following two reasons (especially, for discrete-in-time models like Loihi’s CUBA LIF):\n", "\n", "* With less time steps, the SNN can assume only a few discrete firing rates.\n", "* Limited time steps mean that the spiking neuron activity rate often saturates to maximum allowable firing rate.\n", "\n", "Introducing __Bootstrap training__. An SNN is used to jumpstart an equivalent ANN model which is then used to accelerate SNN training. There is no restriction on the type of spiking neuron or it's reset behavior. It consists of following steps:\n", "![](fit.png)\n", "\n", "* Input output data points are first collected from the network running as an SNN: __SAMPLING mode__. \n", "* The data is used to estimate the corresponding ANN activation as a piecewise linear layer, unique to each layer: __FIT mode__.\n", "* The training is accelerated using the piecewise linear ANN activation: __ANN mode__.\n", "* The network is seamlessly translated to an SNN: __SNN mode__.\n", "* _SAMPLING mode_ and _FIT mode_ are repeated for a few iterations every couple of epochs, thus maintaining an accurate ANN estimate.\n", "\n", "\n", "\n", "\n", "\n", "
\"Drawing\"
\n", "\n", "Bootstrap training is available as __`lava.lib.dl.bootstrap`__. The main modules are \n", "\n", "* `block`: provides `lava.lib.dl.slayer.block` based network definition interface.\n", "* `ann_sampler`: provides utilities for sampling SNN data points and pievewise linear ANN fit.\n", "* `routine`: `routine.Scheduler` provides scheduling utility to seamlessly switch between SAMPLING | FIT | ANN | SNN mode.\n", " * It also provides ANN-SNN bootstrap hybrid traiing utility as well (Not demonstrated in this tutorial).\n", " \n", "\n", "\n", "\n", "
\"Drawing\"
\n", "\n", "## MNIST Classification\n", "\n", "Here, we will demonstrate botstrap SNN training on the well known MNIST classification problem.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os, sys\n", "import h5py\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from PIL import Image\n", "import torch\n", "import torch.nn.functional as F\n", "from torch.utils.data import Dataset, DataLoader\n", "from torchvision import datasets, transforms\n", "\n", "# import slayer from lava-dl\n", "import lava.lib.dl.slayer as slayer\n", "import lava.lib.dl.bootstrap as bootstrap\n", "\n", "import IPython.display as display\n", "from matplotlib import animation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Create Network\n", "\n", "The network definition follows standard PyTorch way using `torch.nn.Module`.\n", "\n", "`lava.lib.dl.bootstrap` provides __block interface__ similar to `lava.lib.dl.slayer.block` - which bundles all these individual components into a single unit. These blocks can be cascaded to build a network easily. The block interface provides additional utilities for normalization (weight and neuron), dropout, gradient monitoring and network export." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "class Network(torch.nn.Module):\n", " def __init__(self, time_steps=16):\n", " super(Network, self).__init__()\n", " self.time_steps = time_steps\n", "\n", " neuron_params = {\n", " 'threshold' : 1.25,\n", " 'current_decay' : 1, # this must be 1 to use batchnorm\n", " 'voltage_decay' : 0.03,\n", " 'tau_grad' : 1,\n", " 'scale_grad' : 1,\n", " }\n", " neuron_params_norm = {\n", " **neuron_params, \n", " # 'norm' : slayer.neuron.norm.MeanOnlyBatchNorm,\n", " }\n", " \n", " self.blocks = torch.nn.ModuleList([\n", " bootstrap.block.cuba.Input(neuron_params, weight=1, bias=0), # enable affine transform at input\n", " bootstrap.block.cuba.Dense(neuron_params_norm, 28*28, 512, weight_norm=True, weight_scale=2),\n", " bootstrap.block.cuba.Dense(neuron_params_norm, 512, 512, weight_norm=True, weight_scale=2),\n", " bootstrap.block.cuba.Affine(neuron_params, 512, 10, weight_norm=True, weight_scale=2),\n", " ])\n", "\n", " def forward(self, x, mode):\n", " N, C, H, W = x.shape\n", " if mode.base_mode == bootstrap.Mode.ANN:\n", " x = x.reshape([N, C, H, W, 1])\n", " else:\n", " x = slayer.utils.time.replicate(x, self.time_steps)\n", "\n", " x = x.reshape(N, -1, x.shape[-1])\n", "\n", " for block, m in zip(self.blocks, mode):\n", " x = block(x, mode=m)\n", "\n", " return x\n", "\n", " def export_hdf5(self, filename):\n", " # network export to hdf5 format\n", " h = h5py.File(filename, 'w')\n", " simulation = h.create_group('simulation')\n", " simulation['Ts'] = 1\n", " simulation['tSample'] = self.time_steps \n", " layer = h.create_group('layer')\n", " for i, b in enumerate(self.blocks):\n", " b.export_hdf5(layer.create_group(f'{i}'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Instantiate Network, Optimizer, DataSet and DataLoader\n", "\n", "Here we will use standard _torchvision datasets_ to load MNIST data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "trained_folder = 'Trained'\n", "os.makedirs(trained_folder, exist_ok=True)\n", "\n", "# device = torch.device('cpu')\n", "device = torch.device('cuda') \n", "\n", "net = Network().to(device)\n", "\n", "optimizer = torch.optim.Adam(net.parameters(), lr=0.001)\n", "\n", "# Dataset and dataLoader instances.\n", "training_set = datasets.MNIST(\n", " root='data/',\n", " train=True,\n", " transform=transforms.Compose([\n", " transforms.RandomAffine(\n", " degrees=10, \n", " translate=(0.05, 0.05),\n", " scale=(0.95, 1.05),\n", " shear=5,\n", " ),\n", " transforms.ToTensor(),\n", " transforms.Normalize((0.5), (0.5)),\n", " ]),\n", " download=True,\n", " )\n", "\n", "testing_set = datasets.MNIST(\n", " root='data/',\n", " train=False,\n", " transform=transforms.Compose([\n", " transforms.ToTensor(),\n", " transforms.Normalize((0.5), (0.5)),\n", " ]),\n", " )\n", "\n", "train_loader = DataLoader(dataset=training_set, batch_size=32, shuffle=True)\n", "test_loader = DataLoader(dataset=testing_set , batch_size=32, shuffle=True)\n", "\n", "stats = slayer.utils.LearningStats()\n", "scheduler = bootstrap.routine.Scheduler()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Training Loop\n", "\n", "Training loop follows standard PyTorch training structure. `bootstrap.routine.Scheduler` helps simplify the complex routine of periodically switching between different bootstrap modes during training. `scheduler.mode(epoch, i, net.training)` provides an iterator which orchestrates the mode of different blocks/layers." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n", "Mode: SNN\n", "[Epoch 0/100]\n", "SNN Testing: loss = 0.18656 accuracy = 0.96080\n", " \n", "Mode: SNN\n", "[Epoch 10/100]\n", "SNN Testing: loss = 0.06348 (min = 0.18656) accuracy = 0.98460 (max = 0.96080)\n", " \n", "Mode: SNN\n", "[Epoch 20/100]\n", "SNN Testing: loss = 0.04227 (min = 0.06348) accuracy = 0.98950 (max = 0.98460)\n", " \n", "Mode: SNN\n", "[Epoch 30/100]\n", "SNN Testing: loss = 0.03778 (min = 0.04227) accuracy = 0.98870 (max = 0.98950)\n", " \n", "Mode: SNN\n", "[Epoch 40/100]\n", "SNN Testing: loss = 0.03424 (min = 0.03778) accuracy = 0.98860 (max = 0.98950)\n", " \n", "Mode: SNN\n", "[Epoch 50/100]\n", "SNN Testing: loss = 0.04215 (min = 0.03424) accuracy = 0.98500 (max = 0.98950)\n", " \n", "Mode: SNN\n", "[Epoch 60/100]\n", "SNN Testing: loss = 0.02876 (min = 0.03424) accuracy = 0.99220 (max = 0.98950)\n", " \n", "Mode: SNN\n", "[Epoch 70/100]\n", "SNN Testing: loss = 0.02592 (min = 0.02876) accuracy = 0.99190 (max = 0.99220)\n", " \n", "Mode: SNN\n", "[Epoch 80/100]\n", "SNN Testing: loss = 0.02771 (min = 0.02592) accuracy = 0.99090 (max = 0.99220)\n", " \n", "Mode: SNN\n", "[Epoch 90/100]\n", "SNN Testing: loss = 0.02705 (min = 0.02592) accuracy = 0.99150 (max = 0.99220)\n", "[Epoch 99/100] Train loss = 0.01632 (min = 0.01561) accuracy = 0.99425 (max = 0.99480) | Test loss = 0.02458 (min = 0.02152) accuracy = 0.99150 (max = 0.99280)" ] } ], "source": [ "epochs = 100\n", "for epoch in range(epochs):\n", " for i, (input, label) in enumerate(train_loader, 0):\n", " net.train()\n", " mode = scheduler.mode(epoch, i, net.training)\n", "\n", " input = input.to(device)\n", " output = net.forward(input, mode)\n", " rate = torch.mean(output, dim=-1).reshape((input.shape[0], -1))\n", "\n", " loss = F.cross_entropy(rate, label.to(device))\n", " prediction = rate.data.max(1, keepdim=True)[1].cpu().flatten()\n", "\n", " stats.training.num_samples += len(label)\n", " stats.training.loss_sum += loss.cpu().data.item() * input.shape[0]\n", " stats.training.correct_samples += torch.sum( prediction == label ).data.item()\n", "\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " print(f'\\r[Epoch {epoch:2d}/{epochs}] {stats}', end='')\n", "\n", " for i, (input, label) in enumerate(test_loader, 0):\n", " net.eval()\n", " mode = scheduler.mode(epoch, i, net.training)\n", "\n", " with torch.no_grad():\n", " input = input.to(device)\n", " output = net.forward(input, mode=scheduler.mode(epoch, i, net.training))\n", " rate = torch.mean(output, dim=-1).reshape((input.shape[0], -1))\n", "\n", " loss = F.cross_entropy(rate, label.to(device))\n", " prediction = rate.data.max(1, keepdim=True)[1].cpu().flatten()\n", "\n", " stats.testing.num_samples += len(label)\n", " stats.testing.loss_sum += loss.cpu().data.item() * input.shape[0]\n", " stats.testing.correct_samples += torch.sum( prediction == label ).data.item()\n", "\n", " print(f'\\r[Epoch {epoch:2d}/{epochs}] {stats}', end='')\n", "\n", " if mode.base_mode == bootstrap.routine.Mode.SNN:\n", " scheduler.sync_snn_stat(stats.testing)\n", " print('\\r', ' '*len(f'\\r[Epoch {epoch:2d}/{epochs}] {stats}'))\n", " print(mode)\n", " print(f'[Epoch {epoch:2d}/{epochs}]\\nSNN Testing: {scheduler.snn_stat}')\n", "\n", " if scheduler.snn_stat.best_accuracy:\n", " torch.save(net.state_dict(), trained_folder + '/network.pt')\n", " scheduler.update_snn_stat()\n", " \n", " stats.update()\n", " stats.save(trained_folder + '/')" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Plot the learning curves\n", "\n", "Plotting the learning curves is as easy as calling `stats.plot()`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4IAAAFACAYAAADptsL3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABUMUlEQVR4nO3dd3zb1b3/8deR5D3jEWc4eycQEhIChBVmocwCZRQKdEFLW+jg13Hb3rbc7tvbwSoXWkq5QJkthL0hYSUkEAiZZDiJRxJvW7Yla5zfH0ce2U5iSY79fj4eemh99dWR/I2itz5nGGstIiIiIiIiMnB4kt0AERERERERSSwFQRERERERkQFGQVBERERERGSAURAUEREREREZYBQERUREREREBhgFQRERERERkQFGQTDOjDHXJrsN0v/pOJNE0HEmiaDjTOJNx5gkwqFwnCkIxl+fPwikX9BxJomg40wSQceZxJuOMUmEPn+cKQiKiIiIiIgMMMZam+w29IqioiI7evToZDdjF9XV1RQXFye7GdLP6TiTRNBxJomg40ziTceYJEKyjrOlS5fWWGt79MS+eDcmUUaPHs2SJUuS3QwREREREZGkMMZs6um26hoqIiIiIiIywCgIioiIiIiIDDAKgiIiIiIiIgOMgqCIiIiIiMgAoyAoIiIiIiIywCgIioiIiIiIDDAKgiIiIiIiIgOMgqCIiIiIiMgAoyAoIiIiIiIywPiS3QAREREREemf6lraiUQtqT4PaT4PqV4PHo9JWnuiUUt5fRurtjbhD4TJz0whLyMldp5KXkYKqb6BUStTEBQRERER6QWBUIRAKEJ7OEowHKU9EqU9HDtFogBkpHhJT/GQnuIlPcUbu+7FG6dwZK2ltqWdYDiK1xg8Bjwe4y57YteN6WxzMBxx56EogXCEYCiK12MYWZjJ0Nz0fYa4LXWtLNpYx6INtSzaWMfmutZdtvF5DKk+DyleD6mxcJjmi12OXe+4nJnqJS8jhdz0FHIzYqd0n7stI4V0n5dUnyHV6+16fGwf7ZEoa7Y2s6qqidVbm1hV1cyarc34g+G9voasVC/5makU5aQxJDeNoXkZlOSmMzQvvfN8SF466Sneg/rbJJuCoIiIiIj0iLWWtdv8vLxqG+u2+xmck8bQvHSG5mcwLC+DIXnpFGalJrXicyDaw1EWflLNUx9WUuNvZ1xxFuMHZzN+cA7jB2dTlJ2KMV2vyVrL1qYAKyqaWFHZxMeVjaysbKKioe2A25Dq9ZCW4iHN5yXN5y6n+7yx21xwzElPIS/DR256SmcQ6ghJAJWNbVTUt1HZ0EZlYxuVDQEqGtpoD0cP+j3qaOOIggxGFWYxqjCTUQWZjCrMYntzgEUb6li0sa7zPcjPTOGo0QVccfRIMlK9nWG4Mxh3v75TYA7FrrcEw5TXR2hsC9HUFiJ4EK8jJ93HlCG5XHTkcCYPzWXK0FzyM1JobAvR0BaiobWdprYQDa3uen1rO9XNQTZUt/D2ulqadxMen//WCUweknvAbUo2BUERERER2aNQJMp7G+t4adU2Xl61jS117ov+0Lx0av3tnZWuDqleD0PyXNWkKySmMzQvg6H56QzLyyA/M4W2UIStjQF3agpQ1RhgW+y8vqV9j+2xuCAWsa6bX9RaIt3OAcYVZ3PkqEHMGjWIw4fn7bZyE4laFm2s5akPK3l2+VYa20LkZ6YwqiCTx9+v2KFqlJeRwvjB2YwpymJbU4CVlU3UxtpoDIwpzGLmyHwuO2oEWWm+XStbsXNwVcO2kKu0tcUqiG3dbtu5KheMVeVq/e2U1bTQFAjT2BbqfK07MwYG56QxLD+DqcNyOX1qCUPz0slM9RK1dL5X0eiO76HruumqlTuE0RQX4jbXtVJW28KmmlY21bXy7oZaWtsjnc9bmJXKnDEFfOWEMRw9tpBJJTm9/oNAIBShKeBCYWNbmKZAiGDIvVehiI2FyUgsTFqMgYmDc5g8NIfh+Rk7hPn91RIMs7UpsMMxOzw/oxdfXeIZa3d/EB1qZs+ebZcsWZLsZoiIiEgfEAhFqGtp7zzVt7aTm55CSa7r0jUoM+WgvhQeSHuqm4NsawqwrSl23hxge1OQFK/huPFFnDChmIKs1B7trykQYvGGOj4qb8AYQ0aqd7ddDo2B5kCY5kCI5kCYpm6X/YEwxkBWmo+sVC+ZaT6y03xkpnrJSnW1gjfX1fDamu00B8Kk+jwcP76I06aUcOqUwZTkphONWupa26lqCFDZ2MbWRnde1RCgKlaR2tYUILxTaEnxGkKRXb+D5qb7GJqXQUFWKp69DNMymFj3RvB6DB7jTl6PIWotq7c2s7GmpfO5pg7L48iR+cwaNYji7DReWLGNpz+qZHtzkMxUL2dMLeH8GcM5fkIRKV5PZ8Vv3Xb/DqeNNS0UZacxbVguhw3PY9owV1nKSktsbcVaS2t7rFIWCNHUFiZqLcPzXRfGRIxxs9ZS7Q+yuba1Mygn8t+U7J4xZqm1dnaPtlUQFBERkWSqa2lnVVVT59idPXUZC0WiO1R+opbOy5GopS0UodbvQl/3SsXupPo8DMlNd6e8dAqzU4lGLaGoJRSOEo5a2iNRwrHKgs9jyM9MIT/TTSbRMblEfkYquRk+WoIRtjcHqG4OUt0cZHvneYDtzUEaWkO7tsHrYXBuGs2xCo8xcPjwPE6cUMyJE4uZmddMStkCyCqidfhcllS28/b6Wt7ZUMvy8gai1lV/9verXHaaj5x0d7IWWtsj+INhWoLhXQJbYVYqp0wezGlTSzhhQhGZqfsfeKJRS40/SGVjgKqGNiobA2xvDpCXkdI55qrj73Ag+9+TWn+Q9zc38P7mepZuquej8gYCIVe9TPV6mDepmPNmDOPUySVkpPZgrFfdBti4AAaNgVHHgVcd6+IqGoFPXoKsYiidlezWHDIUBEVERCQuwpGoq77sZ5cvay3hqKWivo2VVU2srGxiVVUTK6uaqGoM7LCtx9CtO52XVG/XxBId1R+vZ9dJLzJSvBRmpTIoK5WCbqfCLBfemgJhtjV1devqfl7X0o7XY0jxGlK8HnxeQ4rH03k5HLGxsUTtnWECIIdWzvQuJmhTWGFHs9EOxefzMTgnjeKctM7zIbnpDM51oackN42SnHTyY1XJSNSyvKKRhauq2L7qDUqr3+QkzzIme7Z0Pk+79fFudApv2JlsKzmRsZOmc+y4ImaOzCfF6yEYjhDo3tWwPUIwHCESpTP05aSnkJ3m2+ukJB3jslraXSAfVZgVt0lMEi0UibKqqonKhjaOHVdEXkbK3h8QDsKmt1wY+eRFqF3XdV9GAUz6NEw5F8bOg5T03e+jtQ7KFroAuXEhRMMw/VKY8TnIH9Frr22fmirBlw6ZBb23z+2rYfmjsOLf4E2B8afBhDNg5LHg61lle7eCflj2ALxzOzRsAgyc/B9wwk3stUwsgIKgiIjIwBWNwtYPwXghIx/S8yA1Z7dfoKy1NLWFY+Oz2mIhKUh9a3vn5AwdXc/c9TBtIVdp83qMm/mvIzR5XWjyeCAcsZ2TPYSj7vLO3QC9HsP44mymDstlytAc5rKcKe/9EDPhdDyn/ax3v7D2skAoQsvmZXiX/o2ctf/CG+6aIMSmZELJYZih02HIdBg6HYqnABbCARcudj6vWeuCxvrXINiE9aRQWzibRb4jeaRhEiNSmjk3cwWHtS4iq2m9e6KCsTD+dPflu3gS5A5Xhao3NFbAJy+48LfhdQi1ugA1+gQXcsae5P5eq56CNc9DsBFSs919U851Iajqw1jwWwDblrv9pmTBqLkQaYeNbwAGxp0MMz8Pk88GX1p8Xs/W5bDg97DySfB43fFy+Gdh0lmQmrX/+2ssh48fh48eda/NeFwQttaF5ki7ez/GzoOJn3LHaO7Qnu27qQoW/y8suQcCjVA6B475Gqx5DpY/4vZ14V09/2zYvtqF8DEnQfHE/X+thygFQRERkTjpnDVx5VbK61vJzUwlPyM11k3QdRnMi61LZYwhGHKVms7JH8JRAqEIoUg0Nkugt3NGwLTYOltpKV6yU33kZvh6PuYm1Eb70gfh3dtJbVi/w11RPAS9WbR6smnxZLPNFPGWnc5TrdNYHyraZVduNkJf15TtsRkKC1PbGRPaSHqolpRQMyntjaSEmkkNN5EWbiY93EybJ5MXh1xLU0apC4keQ4rPQ4rH4PN6GJyTxtRhuUwsyemawGPx3fDc9yF3mKtcZOTD6TfDEZ87+ApA7Xr3pX7jAsgcBEOOgKFHQMk0SMvev32F22HVfHjvr7D5HRcQDrsYjvoieNNg60dQ9VHXeXtzz/edMwwmnN4VNtJydr9dfVmsQhV7TR0h1Hghbzjkj4JBoyB/tDsvHA8lhx1chaY3REJQ+UFXQCp/z7U5Pa/rB4v0/K7rGQWQPzL2WkZC9pDdHwvWQks1VK+BmjVQvdZ14Swc58Lb6OMgY9De21a73v1dVz0FFUvdbfkjYcKn3N9j9PGQmrnr48Lt7rWsmg+rn4HWmq77vGkw8mgYc6ILIsNmuqoZQP0mV/H64AFoKnftm36pC4WDp+69rT3997DlPVj4e1j7vPsh6KgvgY3A8sehudIF0ynnuFA4dl5X27qLRqClBvxboeJ9WP6YC3tYKD3KPXbaZyB7sNs+6HfvxycvulNThbu95DD398ge4rbNGQLZJe6UMwT821z1b/ljro2Tz4G534QRc9zjrYUlf4Pnf+gec8k/YPheuorWroc3fgsfPeLaClA0yQX1Kee6f/97+lwNNEL5End8VrzvHt/9uNz5OB0+68ACdRwpCIqISM9EI7D5XfcFKNQCp/28T1diEqKtwf3iX70G6jdCWz3R1noa62toaaoj2lpPRtRPLq2sNuO4JPRTgnsfjraLYdTwm5S7MViCpMROqQRtCgFSCZJCnc3hYzORyszJ5OTkUpyTRlF2KkXZaRRlp9EWilDV2EZLbRVHVT/OmYFnKKCZD6NjuS98Bn4yyDUt5NJCnmmh0NtGgbeNQZ5WRttyhkS2AlCfOYa64fMIjz2NrAnHMzg/1000Ya0LHVsWQ/li2LIItq0Au/P07Sb25Sj2xah2g9vmjJth1hf3/sU1EoLnf+CC1cSz4KK73XM+8133fCOOgXP+4EJbT4UCsOnNru58dRvc7QVjIdDU7cu6cSGpo3I3eMruvwyDey82vwtL74WW7W6M2FFfghlX7PnfSzTqjp+tH0HNOleN8aW7yo8v3XUl7LieM9QFgP2daCPU5r601m1wXejqN3Wdt2zv2s6X7oLIiDmuyjJiTteX93iJRlw1qqNb5Ka3od3v7is5zFXOPD73xTvQCIGGrsttDbuGaG+a60rZEXQjoa5/p4GGru1Ss2HQaBcGwm2AcV/8x5zgAtnIY90X920r3Ofeqqdg+wr32GEzYcp5rkJXNHH//h4dn6UVS91+So/ac3fR7o/Z8Dp88H8uSEb2PFMq4KpvRRNjleYjuo7djHx3v7Xu/V7w3+49zxgEx1wPc77SFYajUdj8tgtJK59w73dmkasQYqF5mwtm/m0uYHf/9140EQ6/BA6/yP172htrYfsq929w4xuukti8zVVQdyclC2Ze6SqABWN2v03FUnjkate2M38Ns7+049+ofhMs+B0s+yd4U93rPuJyF15XzYeyt1zQzBvZFQqzitxn3JZFLvxtX+XeB+OB4snuM6HjmAw27fr5940lUDRh7+9FgikIiojInoXboWwBrOz2K7Y3DbDuV/ArHt33f/K9JRRw3Yzq1oMvY/dfklMyIW8EgdxRlDeF2VLXxpb6VrbUtbKlro1qfxAgNk6MbuPHTOfYps7p0mMTi5hImILwNoojWxlDJaNtOaXhLZS0byI7VNvZvKjx0eLJpjaSQUM0k2aySMsuYFBhMSOyIqSv/hf20vtpG3eWGz/W6k6Nba5rpcF0rgGW1lnx8zL2re+Tt+7ftBUfDuEgJhzEhNswkSCeSBBPpB1f1I2bi+BlU+p4lpuJLApPYEHbGMqjBYw3FVyf9jznsBAfYdbkHseqMVfDyGMZkpdBXqar5OWku5kgfd5ugczaWKUs9sv9zl26wH0xaql2l1OzoXS2CxGls11w2VO308ZyePIbsOE198X7/Nt3Pxaqrd59qdv4Bhx3I5z6UxeWwH1ZXfYAvPSf7kvYMV+DeT/YtUoWjbjgU73WVYM2vQ0b3nABwJfuqjETznDd4QrGuNfdXOW67nWv3DVu7sHBalxXt6O+AuNO6ftjldpboXELbF/pqkNbFrnXHY1NWjNoNIw42k3EEQ64f4vh7qegOyYyCiCnZPfVHF+6e++6B9CGze5ywxaIuH+bFE6IVcZOcFW6rF2r0LsIBVz76zdBQ9lOz7HJhciiSa7LX/fz3GEuHISDLjh0r0BG2t3jsordcYBx3TWnnOuqUIkcs7ez1jo31q6lZs/bhNtcUKn6MNb+mPxRLhQ2b3M/2mSXuIrarC/sveodDsK6V1y3y3WvuIDcWamL/c1zYtcLxrkfSw52VtBQmwty3QMnwOEX77tyC+59+tdXYN3Lrop6zh/dZ8SC38P797n2zf4iHP8d1/buWmph7XPu/74Nr+0YvNPzXHgfcbQ7Hz4L0ndaHzAadT9mdPxo0dbgPg9T+tYSEgqCIpIY0aj70O1P00UHm+H9/3O/Ag6ZDkMO651uH83bYPXTrptOpH3PXWRyhuy5S9iBam+Bhs3Y7asxa5/bcVzLxE+5L0HjT4dtH8M/L3d/z8sf6uqWszeRMLxzG7z5Bxg8DY78PEw9H1Kz3NTizUFWVDWxrTFASV46w/MzGJafQXa40XX1WXxXLGwYOrvw7EHIetlsB7PODmedHUaZGUFzzlii+SPx2gjeSBCvbScldu6LBEmx7eTaBoZEt1MS3caQyDYGR7ZRGK3BQ9cvuy1ksNGUsjYylDURt/91djhb7GAGZaVz6pTBnDalhOO7z5oYCcNts90XiGtf7/m/g/oyuHUWHPVlOOu3e96upcZ9ed2yyH2Rr1ja2Q0wmlmMp7XafRGf8Tk45utQNL5nz7873bt0rXvFjTXrqByNONp9AewIaT1hLSz9O7zwY/fL+pm/ct3eOt6jmnXwz0vdl/pz/wwzr9j9flrr4OWfwfv/cF0nj7vRfQmrXuOqQTWfdIUNcOFmwhld3fl6+gWttc5NBLJLtbObvFJ3OpSFAlC1rFsFZIn7YtvxA4wvfceqpcfrAnvz1h27Pe5JxqBuXVNHQsnhLgD2dIxYPLW3ute8cYGroI6d5yp/8a6Mxou/2o0FrvrIBcOtHwEGjr0eZly572rkoSwadd1eX/uVC+/N21yl78ir3IQyecP3vY9AE6x7yR0XpUe5amdf/3GnhxQERST+tq2ER692laQLbnfdVA5lkZDr9vX6b3b6wtPRfaxbN5whh0Nm4b6/+NeXwaqnXdejLYsA6yptGQXg3+7GXezcFch44Mir4ZQf9+xX8+6qPnRhoaHrF/pIXRnetq4KVwPZLE49hpX586grOZai/LzOadsHZabirV/P2Be/QGpLJauO/T1Vw890E31E3fT5neuNpfoY1LiS4tduwrd9OdGxJxOu3UhqYxlBTyZvZ5zEvYETeKNllHsPY8aYKr7kfZaLfAvJoJ2PMuawdNgVrEqfwfptjWypriccbCONEGmmnZIMy/hBHg7PqGO8qWBYeAuDWjeS3rwJEw3v5k3Yi5yhO35J7bhcON7dF/t7di1YHCYcjTJhcM6eZ018/z6Y/0244jE3vqsn5t8AH/4TbvzQVS96KhJyYX3LYjd2pXC8++U7q7Dn+0i0+jJXHSxb6H5sOO8WF+IevdpVZi59AEYdu+/9bHkPnvm262qIcX+/4knuy1vxJNeFq2hCzyoKcmAiIfejTfPWrs+vUKCru2b+yF0rKCLxtO4VeOY7bimPk77nfggSBUGRAaWtHsqXxiYJGJmYQcsfPgxPf8tVlIyB1lo48f/BCd/d8xibvbHWdRfpPk6krWHHX/p3ERv3MWjUgb2G7s+98kl45WbXPXH0CXD6z13FruNX1o5fXJvKux7nTevWfaZbRS+7xH1JWjU/9gstLjhOOc9V3oondwVIa93r7d5FZssiWPJ3151n3g9d1Whv76m1UPZmbEzIGwBEPSk0pAxmQ7iItcECyu1g2nNHUDJyMmWp46lqDndOm1/XsuuYlEE0cXfqH5jtWcuvQpdzV+Qcuoe5dIJ8y/c4X/Y+Sx25/CR0DS9E5wCWOWY1l6W8wac9i0gnSH3WOJqmXErG8MNJff9v5G15hajxsazgUzyZfgHvtQ6hor6VVJ+HCYNzmFCSzYSSHCYMzmbC4GwKs/cwk1643Y2/ql7juiL6UnetZnScMga5Sk48fiEPt8OtR7og+aUX9/3jQMNmuGWm67J19u97vz19UTTqxgC+/FMX/tpbXHi7/KH9+/cbCbu/ee7w3U/cISIiCoIiA8oDl7iprjtkFXeresTOs0t2nOkqPc8Fxv3t0hkOulm7lvzN/QJ38T1uQPZz33NrCQ09Ai64E0r2MevZ1uXwwf2w/lUXZAON+x4kvydFk7pm2tvftYs2ve3GIJW/56Z3P/1mt689vS8ttS7cbV8Z+1V8246/jrfVd21bOic2GP2cfY63s9ayemszzy2v4u31tQwOlPGllruYFf6AzZ5S/jfjyyzxzSIa+7z2egweYE5kCZe2PcKU8CrqPYN4KvNC7muexYZgLj6fj2PGFnLq5MGcMnkwIwp2/8U5GI6wvSlIVWOAxrYQPq9bDiDFtjP+rZsoKHuG+qlXUnviLwjjxbNxISPe+gEZ/s1sHHkRi8Z/i/poFm2hCKMKMpk6LJdxxdmkhv2w4l+um21F7LM5o8AF2zlfOXS7Y+3O4rvh2Zvgqvlutse9eepbbuzbDct61n2pP6ld7369T89z4wZ7uwu0iIgoCIoccqrXQnbx/ndrWvsCPHgJzL3BhbD6sh0H0zeWu8Vrd8fji83yV+AmPph+iRscvacQ1LDZTexQ+b57vlN/uuOaVSvnw9PfdrNqzfsBzL1xx/vbGlxY/OB+N0bFm+qeN2fo7qdlTs/fewUn0u5maPvkRVcR6z7RRcf4IIit1dW245pdoVY3TfWaZ93zn/wjN85qf8ZA7U446EKhL22fQcdat4D0cx9v5bnlVZTVtuIxMGNEPnkZKXiAIwKLuLTuL5SEKvgo8xgeL/oa1SnDOcK/gDPrH2RU+zpqvIN5OucSXs/6FAGbwpiiLE6ZXMJx4wu7xrIdqGgUXvk5vPUn955mD3Z/v4KxblzXmBN7tp/tq1zlbsIZ/bOSEwrAn49wXROveXrP2zWWw59nuHGU5/wxYc0TEZGBQ0FQ5FDSVAm3HOm+RH75lZ5XtMJBuOMYtw7T197e/eOiEbf/lupdu112TNPdVOEWMY4E3ZToh3/WnbovvvrJS26WrmgELrjDVbp2p6XG/eK/8kkXKs+/w1XNPvg/N04uHHCTBxz5efccvbVMQdDvxiB98iKsfXHHLpx7kpoDJ3wbjv7aXsNJIBRh3XY/K6uaWF3VzKqqJjbXtZKR6iU3PbbOWmztuNx0t/ZaVpoPn8fg9Xhi527h7Y5ZGxdvrOXZ5VupaGjD6zHMHVfImYcN4YypQyjO2akrZLjdLbD7xu9cgM0rdYG/YByc8B03a9qBdMfdH0vugWducpfnftMF/T42S1rSvXMHvPBD+MLzex7z9sx3Yek/4IYPkjs7oYiI9FsKgiKHkvk3uCqLjbgxdqf+Z88et/APrlpz5eNuavSDEWh0QW35o25GNRt1k6JMv8SFxoX/49bxuuQ+tyjsvnz8uPvS29FVMi0Ppn/WzRq4t4Vce4O1UL3aTZriSdlxGYLYebtJpcZTTLPNwB8M4w+GaQmG8QfCNAfDNAdCbKhuYVVVExtqWohE3edkeoqHSUNyGVuURTAcobHNTSjS2BaKTS4SItqDj9QUr+H48UWcdfhQTp9SwqCsHoR//3Z47ZdulsSjvgRTLzj4Cub+qFjqlnfYV7ffgaq9Ff50uDu+P/+vXe9vrIBbZrjK87l/TnjzRERkYFAQFDlUVK+FO46GOde5ZQs+fNBVFEYevffHNVXCrbNdN8jLH+zdNjVvhY//5UJh5fvuthlXwKd/v3/d+pq3uaUBiie7cXIJriBZa6lraWdDTQvrt/tZX+1nfXUL66v9bKlr3WdgG56fwZShOUwZmsvkIblMGZrDqMKsPc8eGXtOfzBMa3uESNQSjljC0ai7HLWd52OKssjLiHMVTxLvzT+6pQ6+8qqriHf37Pfc2Npvvn/wExyJiIjsgYKgyKHi4Sth/etw4zI3Zu7O41xXz6++ufdFYB//shuT9/VFbpHkeKld77qVjjj6gKp41lrMfj5ue1OAf31Qwb/eL6clGOHoMQUcM7aQY8cVUjooY4/7aw9HWV7RwOKN9SzeWMuyLQ3Ut4Y670/zeRhTlMW4wdmMK8piWH4GOekpZKV5yUl33Tmz03zkpKWQmeYlpfvi2yI9EWyGPx7mFqi+/J9dtzdVuTGE0y+B829LXvtERKTf258geJAzCYj0MU1VrmqVnpfsluzblvdcd8yTf9S1XtwFd8K9Z8OLP4Zz/7T7x216x1XrTvx/8Q2B4LqB9qQraDfWWt7fXM8D727mmeVVDB+UwdxxhcwdV8QxYwsp2E03yPZwlFdXb+ORJeW8sbaaSNQya9Qgxg/O5o211fzrgwrAVemOGVvIMWMLmDVqEJUNARaX1bF4Yy0fbG4gGHaLQY8fnM0ZU4cwcUgO44qzGFeczbD8jL1W80QOWloOHHM9vP4rNzPukMPd7W/92U3adMJ3k9s+ERGRblQRlENf8zY3Tf1Hj3R1Zcwe4iY7KZq046LD2SVuwpNgU9eyBd0nUPGmxrad2LMwGY1C42bXxTPY5NaK68lkL9a6wFfziZs4onv178Ufw9u3wucegYmf2un5InDXSdBaD99YnJg1A3uoORDiiQ8qeGDRZlZvbSY7zcdZhw2hxh9k8cY6WtojAEweksPccUXMHVdIcU4aTyyr4MllldS1tFOSm8aFR5Zy8axSxhW798Rayyfb/by7oTZ2qtth7TuPgWnD8jhqdAFzxhRw1OhBe157TiTe2hrcWMFxp8Al/3CfT3+eDodd5CZaEhERiSNVBKX/CzR1m9zkjdjkJoe7JQ2MccGsZg18+BC0N3c9zpu2j0XKu9klTE5wgbF6rZuMpGYN1KxzSxN0OOxiuPBu8OyjW+EnL8Gmt9y4u527gJ78Y1j3Cjz5Dbj+Xcgq7Lpv6b2u0nDx3+MaAiNRy8rKJhZtrGVTbSuDslIpzkmjODuVouw0inPSKMpOIyvNx8cVjTywaDNPLqugtT3CtGG5/PrCwznviGFkpbmPmFAkykfljby7oZa319fwwKJN3PPWRsBNnHL61BI+O2sEJ0wo6pxZs4MxhoklOUwsyeGqY0cTjbpg+P7meoblZ3DkyHxy0jXeTvqIjHy3TuLCP7glM96/zy1tomqgiIj0MaoIyqGjrcEtQL7yCVjzfGy5g9FuGYLDLobBk3d9jLXQXOW+kNWshcYtbq25jrXqdl67LhyIbbumK0xWr90xTALkjewWEmPnZQvdrI5zroOzfrvnMXXRCNx5gguQX1+8+6n/ty6Hu06GSWe5mTqNgdY6uPVIKDkMrn6qV2feDEWifFzRyKKNdSzaUMuSsnqag279wdx0H83BMLv7qEhP8RAIRUlP8XDu9GFcecwoppfm7XNcYCAUYdmWBirq2zhl8uCezZopcqhoqXVVwVFz3RqXU8+HC/832a0SEZEBQBVB6ZlIaKc15Rq6ukmG2+Hwi7vGrh2saBQ2v+26b659AXKGwIg5bhKS0qMgf+SuwcZa2LbCrQ33yUuwZZFbYiGrGGZd4wJg6ey9ByJjIHeYO407uWdtLRwHfHrHdjRXuW6c6XmuMri7atzIY9x7985t7n076Xu73//yR2H7Crj4nj2v/zbkcDjlR24Gwo8ehiMucyEz0Lj3kLkP0ailqinAxuoWNta4WTTXxaprrbGum+OKszh3xjCOHlPA0WMKGZKXTjgSpa61nermIDX+dmqag1T7g9Q0BykdlMFnZpaSl9nzqlx6ipdjxhbue0ORQ1FWIRz1RdfF23jceF4REZE+RhXBgSgahX9eBp+8sPftBo2GKx5zwedAWOsqW8sfdevKNVVAShZMOB3a6qB8KYRa3LbZJS4Yls5xoW3jAhf+mivd/UOmw4Qz3Gn4LPD20d8wolF48nr48J9w9h/cem/dhYNu2YfMAvjKa3vvQhqNuHGE21bAhXfBQ5+Do74Mn/7vzk22NwW49+0y3iurw+fxkOrzkOL1kOZzl1O97ry2JciG6hY21rR0TqgCkJXqZUxxFjNHDOKYsYXMGVOw64LmIrL/mre5dQOnnOv+/YqIiCSAlo+Qvfvgfnjy666qNnja7rtI1pe5pQ2iYbjsQRh9XM/331jugtBHj7qulR4fjD/dVRgnndVVTYuEYftKV+krf8+d15e5+9JyXQVv/OlusfTcob36FsRVJAQPXeEqmZ/9O0z7TNd979wBL/wQPv9EzyqUdRvhzuOh3Q8ZBXDD+5AxiLXbmrl7wQaeWFZBJGo5cuQgjHGzbwbDUdojUUKRKO1hd8rLSGFscTZji7IYU5zF2KJsxhZnMTgnbb+XdxCRHqrb4H7k6kOTOomISP+mICh7FmiEW2e5at8XX9x7RapuIzzwWWjYBOffAdM/u/d9B/1uQeW3b3Xj90bOdY+ZeoGrgPWEf7sLkkMO33O3yUNBeyvcfyGUL4ErHnWhL9AIf54BQ4+Aq57o+b7evw/mfxN77i28k382dy/YwGtrqklP8XDJ7BF86fgxjCrUF00RERGRgU5jBGXPXv8ttNS4pQn2NbNlwRj40ovw8OfhX1+GhjI44aZdx6dFo67758s/dWPpDr/EjW8bNHr/25c92J0OdamZcPlD8PdPu+rgNU/Bmudcl9jTfrZfu9o+/hI+OGMqt70dYHnFIoqyU/nu6RO58phRmmRFRERERA6IguBAsn01LP5fOPLzMPzInj0mswA+/y+3lMGrv3BdN8/5U1e1rnwpPP9917Vz2Ez47D9g5NHxegWHlGhaHus/9Q+GPHoe/O0zpEQDfJxzCq9+lM7I8s2MLMxkZEEmQ/PcQufWWjbXtbKisokVlY18XNHEisomavxuuYuxxVn8+sLD+czM4aSneJP86kRERETkUKYgOFBY6wJbapZba29/+NLcZAeDRsOC30FjBZz1O3jzD24sYHYJXPAXmH7ZvquM/Zi1lo01LbyzoZa319fy7vpaalvaGWVu4t9pPyeDMH8If5bFCzYQjnZ1yU7xGoblZ1DX0k5zwC3Z4PMYxg/O5qSJxUwblsvhpXnMGjkIj0fj+URERETk4CkIDhSrn4YNr7sAdyBLQhgT6+45Cp66EW4/CrypcPy33ULJaTm93uS+rCUY5pPtfj7Z1tx5vrKqiW1NrnpXkpvGiROLOXZcIceOPZkCToGmCh4cfTzhSJSqxgCb61p3OA3KTGHasDymDctlYkmOqn4iIiIiEjeaLGYgCLXB7XPcQurXLTz4pRc2LoAV/4a534SCsb3Txj4oGI5QUd/WFdZqW1lX7eeTbX4qGto6t0v1ehhbnMXEkhzmjClg7rhCxhRlaTZOEREREUkoTRYjO3rrFmjYDFc/1Tvr74050Z0OccFwhK2NASoa2qhsCFDZ0MaWWOjbUtdKVVOA7r+TpPk8jC3OZtaoQVw+ZwTjB+cwsSSbkQWZ+LwDt0usiIiIiBx6FAT7u4bNbizf1Av6RXg7GG+tq+Gh97awpa6VyoY2qv1Bdi6IF+ekMaogk2PGFjKiIJNRsQldRhZkUqw190RERESkn4hrEDTGnAn8GfACf7XW/man+0cB9wDFQB1wpbW2PHbf74CzAQ/wEnCj7S/9WBPpxR8DBs74RbJbkjQrKhv5zXOrWfhJDUXZqUweksu8ScUMz89kWH46w/MzGJafwdD8dNJ8GpcnIiIiIv1f3IKgMcYL3A6cDpQD7xlj5ltrV3bb7PfAfdbafxhjTgF+DXzeGDMXOA6YHtvuTeAk4PV4tbdf2vA6rHwSTv4R5I9IdmsSbktdK//z4hqeWFZJXkYKP/r0FD5/7ChNwiIiIiIiA148K4JzgHXW2g0AxpiHgPOB7kFwKvCd2OXXgCdily2QDqQCBkgBtsWxrf1PJATP/QDyR8HcG5LdmoSqa2nntlfXcf+7mzAGvjZvHF89aRx5GSnJbpqIiIiISJ8QzyA4HNjS7Xo5sPNK4x8CF+K6j34GyDHGFFpr3zHGvAZU4YLgbdbaVTs/gTHmWuBagJEjR/b+KziUvX0LVK+CSx+AlPRktyZurLU0toXYVOsmeVlZ1cT972yipT3MJbNH8K3TJjIkr/++fhERERGRboqMMd2XUrjLWnvX7jZM9mQxNwG3GWOuARYAFUDEGDMemAKUxrZ7yRhzgrV2YfcHx17UXeCWj0hYq/u6T16CV3/hJoiZfHayW9Or3l5fwxtrqndYf69jEfYOp08t4XufmsSEkoG1tqGIiIiIDHg1fWH5iAqg+8C00thtnay1lbiKIMaYbOAia22DMeYrwLvWWn/svueAY4EdgqDsRvVaeOyLMHgaXHCHWwi+H9jeHOAXT69i/oeVpHo9lBZkMKogk9mjBjEiNqvnyMJMRgzKJCst2b9viIiIiIj0bfH8xvweMMEYMwYXAC8DPtd9A2NMEVBnrY0CP8TNIAqwGfiKMebXuK6hJwF/imNb+4e2enjocvCmwuUPQmpWslt00KJRywOLN/O751cTDEW58dQJfG3eOE34IiIiIiJyEOIWBK21YWPMN4AXcMtH3GOtXWGMuRlYYq2dD8wDfm2MsbiuoV+PPfwx4BRgOW7imOettU/Fq639QiQMj30J6je5hePzD/0xkysrm/iPfy9n2ZYG5o4r5BcXHMbY4uxkN0tERERE5JBn+svSfLNnz7ZLlizZ94b91Qs/gndug3NvgVlXJ7s1B6UlGOZPL6/lnrfKyM9I4cfnTOGCGcO1mLuIiIiIyF4YY5b2hTGCkigfPOBC4JzrDtkQ2NDaztJN9SzZVM+TH1RQ2Rjg8jkj+P6Zk8nPTE1280RERERE+hUFwb6qtQ7+cR5E2mHKue409IhdJ3/Zshie/haMOQk+9aukNHV/WWspq21lSVldZ/hbt90PgM9jmDkyn1sun8ns0QVJbqmIiIiISP+kINgXhYPw8JVQswZK58Cbf4SFv3fj/qac50Jh6RxoroKHroDc4fDZe8Hbt/6cgVCEzXWtbKj2s6GmhY3VLWysaWF9tZ/61hAAuek+Zo0axGdmDmfWqEEcUZpPRqomghERERERiae+lRwErIUnvw6b3oKL/gaHXwwttbD2OVj1FCy+y3UDzS6BlAwItcHV8yEzudUzay3rq/28ta6Wt9fXsKKyiYqGNroPQR2ck8aYoizOPGwo00vzmD1qEOOKs/F4NPZPRERERCSRFAT7mtd+BcsfhVN+4kIgQFYhzLzSnQJN8MmLLhRufhcu+isMnpKUplY2tPHWuhreXu/C37amIAAjCjI4cuQgLp5VypiiLMYWZTOmOItsre8nIiIiItIn6Jt5X/LB/bDgdzDz83DCd3e/TXquC4gdITEJ/v1BObe+so4NNS0AFGalcuy4Qo4bX8Rx44oYWZiZtLaJiIiIiMi+KQj2Fetfg6duhLEnwzl/3HVSmD4gEIrw0ydX8PCSLRxRmsePz57CceOLmFSSo+6dIiIiIiKHEAXBvmDbSnjkKiiaCJf8A7wpyW7RLjZU+7n+gfdZvbWZ6+eN4zunT8Tn9SS7WSIiIiIicgAUBJOteSs8eImb+OVzj0B6XrJbtIv5H1byw8c/ItXn4e9fOIqTJw1OdpNEREREROQgKAgmU3sLPHgptNbCF56F/BHJbtEOAqEIv3hmJfe/u5lZowZx6+UzGZafkexmiYiIiIjIQVIQTKY3fgtbP4LLHoRhM5Pdmh1sqm3h+gfeZ0VlE9edOJabPjWJFHUFFRERERHpFxQEk2ndqzD6BJh0VrJb0ikUiXLfO5v440tr8XoMf71qNqdNLUl2s0REREREpBcpCCZLax1sWw4n/zjZLen01roafjZ/BZ9s93PixGJ+9ZnDKB2kpSBERERERPobBcFk2fSWOx99fHLbAWypa+WXz6zi+RVbGVmQyd1Xzea0KYMxfXAJCxEREREROXgKgslS9ib4MmD4rKQ1IRCKcOcb6/nL6+vxGMNNZ0zkyyeMJT3Fm7Q2iYiIiIhI/CkIJsvGhTDyaPClJuXpX129jZ88sYKKhjbOmT6U//j0FM0IKiIiIiIyQCgIJkNLLWxfAYclZ3zgg4s286MnljNxcA7//MoxHDuuMCntEBERERGR5FAQTIbO8YEnJvyp73xjPb95bjUnTyrmjitmkZGqbqAiIiIiIgONgmAylC2ElMyErh1oreW/X1jDHa+v55zpQ/nDJTNI9WldQBERERGRgUhBMBnK3oQRiRsfGI1a/nP+x9z/7mYunzOSX1xwGF6PZgQVERERERmoFAQTraUGtq+Ewy9OyNOFIlFuevRDnlxWyVdPGsf3z5ykZSFERERERAY4BcFEK3vTnY8+Ie5PFQhF+PoD7/PK6u1878xJXD9vfNyfU0RERERE+j4FwUQrexNSsuI+PrA5EOIr9y1h0cY6/uuCw/j8MaPi+nwiIiIiInLoUBBMtLI3YeQx4E2J21Nsqm3hK/ctYX11C3+6dAbnzxget+cSEREREZFDj4JgIvmroXoVTL8kbk/x5ic1fP3B9wH4xxfmcPyEorg9l4iIiIiIHJoUBBNpU2x84JjeXz/QWsvf3yrjl8+uYlxxFndfNZtRhVm9/jwiIiIiInLoUxBMpLI3ITUbhh7Rq7sNhCL8+ImPeWxpOZ+aVsL/XDKD7DT9aUVEREREZPeUFhJp48JeHx+4rSnAdf+3lGVbGvjWaRO44ZQJeLRGoIiIiIiI7IWCYKL4t0PNGpjxuV7b5Qeb67nu/5biD4a588pZnHnYkF7bt4iIiIiI9F8KgonSy+sHrqhs5NK73qUkN437vjSXyUNye2W/IiIiIiLS/ykIJkrZQkjN6ZXxgdZafjZ/BdlpPp64/jgKs9N6oYEiIiIiIjJQeJLdgAGj7E0YdSx4Dz57z/+wkvfK6vnepyYpBIqIiIiIyH5TEEyE5m1QsxZGH3/Qu2oJhvnVs6uYXprHJbNH9ELjRERERERkoFHX0EQoW+jOeyEI3vbaOrY1BfnLlbM0O6iIiIiIiBwQVQQToexNSMuFIQc3PnBjTQt/XbiBi44s5ciRg3qpcSIiIiIiMtAoCCZC2Zsw8uDHB/7X0ytJ83n5/lmTeqlhIiIiIiIyECkIxlvzVqj9BMYc3LIRr67exqurt3PjqRMYnJPeS40TEREREZGBSEEw3jrXDzzw8YHBcISbn1rJ2OIsrp47unfaJSIiIiIiA5Ymi4m3soWQlgdDph/wLv725kbKalu574tzSPUpu4uIiIiIyMFRqoi3sjdh1FzweA/o4VsbA9z26jpOn1rCiROLe7lxIiIiIiIyEMU1CBpjzjTGrDHGrDPG/GA3948yxrxijPnIGPO6Maa0230jjTEvGmNWGWNWGmNGx7OtcdFUBbXrDqpb6K+fW0U4avnJ2VN7sWEiIiIiIjKQxS0IGmO8wO3AWcBU4HJjzM5p5vfAfdba6cDNwK+73Xcf8N/W2inAHGB7vNoaN9WrwZd+wEHwvbI6nlxWyXUnjmVkYWYvN05ERERERAaqeFYE5wDrrLUbrLXtwEPA+TttMxV4NXb5tY77Y4HRZ619CcBa67fWtsaxrfEx7mT4weYDHh/4i6dXMiwvnevnje/lhomIiIiIyEAWzyA4HNjS7Xp57LbuPgQujF3+DJBjjCkEJgINxph/GWM+MMb8d6zCuANjzLXGmCXGmCXV1dVxeAm9wJcGnv1/m9dsbebD8kauPXEsGakHNr5QREREREQGlKKOfBQ7XbunDZM9WcxNwEnGmA+Ak4AKIIKbzfSE2P1HAWOBa3Z+sLX2LmvtbGvt7OLi/jWRyvwPK/AYOHv6sGQ3RUREREREDg01HfkodrprTxvGMwhWACO6XS+N3dbJWltprb3QWjsT+FHstgZc9XBZrFtpGHgCODKObe1TrLU89WEVx40vojgnLdnNERERERGRfiaeQfA9YIIxZowxJhW4DJjffQNjTJExpqMNPwTu6fbYfGNMR5nvFGBlHNvapyzb0sDmulbOO0LVQBERERER6X1xC4KxSt43gBeAVcAj1toVxpibjTHnxTabB6wxxqwFSoBfxh4bwXULfcUYsxwwwN3xamtfM//DSlJ9Hj512JBkN0VERERERPohXzx3bq19Fnh2p9v+s9vlx4DH9vDYl4ADm27zEBaJWp7+qIqTJxWTm56S7OaIiIiIiEg/lOzJYmQn726opbo5yPkzdp5gVUREREREpHcoCPYx85dVkp3m45TJg5PdFBERERER6acUBPuQYDjCsx9XccbUEtJTtHagiIiIiIjEh4JgH/LGmmqaA2HOnaHZQkVEREREJH4UBPuQ+R9WUpCVyvHji5LdFBERERER6ccUBPuIlmCYl1dt49OHDyHFqz+LiIiIiIjEjxJHH/HSym0EQlHOO0KzhYqIiIiISHwpCPYR8z+sZFheOrNHDUp2U0REREREpJ9TEOwD6lvaWbC2mnOPGIbHY5LdHBERERER6ecUBPuAZz+uIhy1nHuEZgsVEREREZH4UxDsA+Yvq2RscRbThuUmuykiIiIiIjIA7DMIGmPONcYoMMZJVWMbi8vqOP+I4RijbqEiIiIiIhJ/PQl4lwKfGGN+Z4yZHO8GDTRPf1iFtXCeFpEXEREREZEE2WcQtNZeCcwE1gP3GmPeMcZca4zJiXvrBoD5H1Zy+PA8xhRlJbspIiIiIiIyQPSoy6e1tgl4DHgIGAp8BnjfGPPNOLat39tQ7Wd5RSPnqxooIiIiIiIJ1JMxgucZY/4NvA6kAHOstWcBRwDfjW/z+rdnl1dhDJwzXUFQREREREQSx9eDbS4C/mitXdD9RmttqzHmS/Fp1sBQXt/G4Jw0huSlJ7spIiIiIiIygPQkCP4MqOq4YozJAEqstWXW2lfi1bCBoDkYJjutJ38CERERERGR3tOTMYKPAtFu1yOx2+Qg+QNhstNTkt0MEREREREZYHoSBH3W2vaOK7HLqfFr0sDRHAiRo4qgiIiIiIgkWE+CYLUx5ryOK8aY84Ga+DVp4PCra6iIiIiIiCRBT1LIV4EHjDG3AQbYAlwV11YNEK5rqIKgiIiIiIgk1j5TiLV2PXCMMSY7dt0f91YNEJosRkREREREkqFHKcQYczYwDUg3xgBgrb05ju3q96y1+INhclQRFBERERGRBOvJgvJ3ApcC38R1Df0sMCrO7er3WtsjWIsqgiIiIiIiknA9mSxmrrX2KqDeWvtz4FhgYnyb1f/5g2EAjREUEREREZGE60kQDMTOW40xw4AQMDR+TRoYmgMuCOZoHUEREREREUmwnpSjnjLG5AP/DbwPWODueDZqIOioCGodQRERERERSbS9phBjjAd4xVrbADxujHkaSLfWNiaicf2ZP6CuoSIiIiIikhx77RpqrY0Ct3e7HlQI7B3NgRCgyWJERERERCTxejJG8BVjzEWmY90I6RXNHZPFKAiKiIiIiEiC9SQIXgc8CgSNMU3GmGZjTFOc29Xv+Tsni1EQFBERERGRxNpnCrHW5iSiIQNNx2QxWaoIioiIiIhIgu0zhRhjTtzd7dbaBb3fnIHDHwyTnuIhxduToqyIiIiIiEjv6Uk56v91u5wOzAGWAqfEpUUDRHMgTHaa1hAUEREREZHE60nX0HO7XzfGjAD+FK8GDRT+YFjjA0VEREREJCkOpF9iOTCltxsy0PgDIQVBERERERFJip6MEbwVsLGrHmAG8H4c2zQg+INhLR0hIiIiIiJJ0ZMksqTb5TDwT2vtW3Fqz4DRHAgzsiAz2c0QEREREZEBqCdB8DEgYK2NABhjvMaYTGtta3yb1r/5g2Gy1TVURERERESSoCdjBF8BMrpdzwBe7snOjTFnGmPWGGPWGWN+sJv7RxljXjHGfGSMed0YU7rT/bnGmHJjzG09eb5DSXMgTI66hoqIiIiISBL0JAimW2v9HVdil/fZp9EY4wVuB84CpgKXG2Om7rTZ74H7rLXTgZuBX+90/38B/W69QmutKoIiIiIiIpI0PQmCLcaYIzuuGGNmAW09eNwcYJ21doO1th14CDh/p22mAq/GLr/W/f7Y85QAL/bguQ4pgVCUSNRqHUEREREREUmKngTBbwGPGmMWGmPeBB4GvtGDxw0HtnS7Xh67rbsPgQtjlz8D5BhjCo0xHuB/gJt68DyHnOZgCEAVQRERERERSYqeLCj/njFmMjApdtMaa22ol57/JuA2Y8w1uC6gFUAEuB541lpbbozZ44ONMdcC1wKMHDmyl5oUf/5AGEBjBEVEREREpDcVGWO6r/pwl7X2rt1t2JN1BL8OPGCt/Th2fZAx5nJr7R37eGgFMKLb9dLYbZ2stZXEKoLGmGzgImttgzHmWOAEY8z1QDaQaozxW2t/sNPj7wLuApg9e7blEOEPuiCodQRFRERERKQX1VhrZ/dkw550Df2Ktbah44q1th74Sg8e9x4wwRgzxhiTClwGzO++gTGmKNYNFOCHwD2x57jCWjvSWjsaVzW8b+cQeCjrqAiqa6iIiIiIiCRDT4Kg13TrnxmbDTR1Xw+y1oZxYwlfAFYBj1hrVxhjbjbGnBfbbB6wxhizFjcxzC/3s/2HpOZYRTBHQVBERERERJKgJ0nkeeBhY8z/xq5fBzzXk51ba58Fnt3ptv/sdvkx3IL1e9vHvcC9PXm+Q0XXGEHNGioiIiIiIonXkyD4fdyELF+NXf8IGBK3Fg0AnWMEVREUEREREZEk2GfXUGttFFgElOHWBjwF19VTDlBHEMxK8ya5JSIiIiIiMhDtsSRljJkIXB471eDWD8Rae3JimtZ/NQVCpPo8pPkUBEVEREREJPH21jdxNbAQOMdauw7AGPPthLSqn/MHwlpDUEREREREkmZvXUMvBKqA14wxdxtjTgX2vLq79Jg/GNb4QBERERERSZo9BkFr7RPW2suAycBrwLeAwcaYvxhjzkhQ+/olfyCsxeRFRERERCRpejJZTIu19kFr7blAKfABbiZROUDNQQVBERERERFJnp4sKN/JWltvrb3LWntqvBo0EPgDYS0mLyIiIiIiSbNfQVB6hz8YJiddi8mLiIiIiEhyKAgmgV9dQ0VEREREJIkUBJPAH9CsoSIiIiIikjwKggkWDEdoj0RVERQRERERkaRREEyw5kAYQJPFiIiIiIhI0igIJpg/FgRVERQRERERkWRREEwwf1BBUEREREREkktBMME6uoZqshgREREREUkWBcEE66gI5qRpHUEREREREUkOBcEE8wdDgCqCIiIiIiKSPAqCCebXrKEiIiIiIpJkCoIJ1qzJYkREREREJMkUBBPMHwiT4jWk+fTWi4iIiIhIciiNJJg/GCY7zYcxJtlNERERERGRAUpBMMH8gbAmihERERERkaRSEEywpkCYbC0dISIiIiIiSaQgmGD+YIgcTRQjIiIiIiJJpCCYYP6guoaKiIiIiEhyKQgmmD8Q1tIRIiIiIiKSVAqCCaaKoIiIiIiIJJuCYII1B8IaIygiIiIiIkmlIJhA7eEowXCUHFUERUREREQkiRQEE6glGAbQGEEREREREUkqBcEE8ncEwXStIygiIiIiIsmjIJhAzQFVBEVEREREJPkUBBOooyKoMYIiIiIiIpJMCoIJ1BwIAaoIioiIiIhIcikIJlDXGEEFQRERERERSR4FwQTqGCOodQRFRERERCSZFAQTSBVBERERERHpCxQEE8gfCOP1GDJSvMluioiIiIiIDGAKggnkD4bJTvNhjEl2U0REREREZABTEEyg5kBYM4aKiIiIiEjSxTUIGmPONMasMcasM8b8YDf3jzLGvGKM+cgY87oxpjR2+wxjzDvGmBWx+y6NZzsTxR8MaQ1BERERERFJurgFQWOMF7gdOAuYClxujJm602a/B+6z1k4HbgZ+Hbu9FbjKWjsNOBP4kzEmP15tTZSOrqEiIiIiIiLJFM+K4BxgnbV2g7W2HXgIOH+nbaYCr8Yuv9Zxv7V2rbX2k9jlSmA7UBzHtiaEPxDWjKEiIiIiIpJ08QyCw4Et3a6Xx27r7kPgwtjlzwA5xpjC7hsYY+YAqcD6nZ/AGHOtMWaJMWZJdXV1rzU8XjRGUERERERE4qioIx/FTtfuacNkp5KbgNuMMdcAC4AKINJxpzFmKPB/wNXW2ujOD7bW3gXcBTB79mybiAYfjOZgWGMERUREREQkXmqstbN7smE8U0kFMKLb9dLYbZ1i3T4vBDDGZAMXWWsbYtdzgWeAH1lr341jOxPGr4qgiIiIiIj0AfHsGvoeMMEYM8YYkwpcBszvvoExpsgY09GGHwL3xG5PBf6Nm0jmsTi2MWHCkShtoQjZaSnJboqIiIiIiAxwcQuC1tow8A3gBWAV8Ii1doUx5mZjzHmxzeYBa4wxa4ES4Jex2y8BTgSuMcYsi51mxKutidASdD1eNVmMiIiIiIgkW1xTibX2WeDZnW77z26XHwN2qfhZa+8H7o9n2xKtORgC0BhBERERERFJurguKC9d/MEwADkaIygiIiIiIkmmIJgg/oALguoaKiIiIiIiyaYgmCDNsYqgZg0VEREREZFkUxBMkI6KoMYIioiIiIhIsikIJoi/syKo5SNERERERCS5FAQTpDngZg3VGEEREREREUk2BcEE8QfCGAOZKd5kN0VERERERAY4BcEEaQ6GyU714fGYZDdFREREREQGOAXBBPEHwuoWKiIiIiIifYKCYIL4g2HNGCoiIiIiIn2CgmCC+INhrSEoIiIiIiJ9goJggjQHwmSna+kIERERERFJPgXBBPEHw+SoIigiIiIiIn2AgmCC+APqGioiIiIiIn2DgmCC+IOaNVRERERERPoGBcEEiEStJosREREREZE+Q0EwAVrawwBaPkJERERERPoEBcEE8AdcEFRFUERERERE+gIFwQTwB2NBUBVBERERERHpAxQEE6BZFUEREREREelDFAQToKMimKMF5UVEREREpA9QEEyAjjGCmixGRERERET6AgXBBPAHQ4C6hoqIiIiISN+gIJgAnWMEVREUEREREZE+QEEwATrGCGalKgiKiIiIiEjyKQgmgD8QJivVi9djkt0UERERERERBcFEaA6E1S1URERERET6DAXBBPAHw5ooRkRERERE+gwFwQRoDobJ1hqCIiIiIiLSRygIJoA/ECJHFUEREREREekjFAQTwB8MazF5ERERERHpM5ROEsAf0BhBEREREZF9CYVClJeXEwgEkt2UPi09PZ3S0lJSUg58+JnSSQK4MYJ6q0VERERE9qa8vJycnBxGjx6NMVp6bXestdTW1lJeXs6YMWMOeD/qGhpn1lrXNVQVQRERERGRvQoEAhQWFioE7oUxhsLCwoOumioIxllrewRrUUVQRERERKQHFAL3rTfeIwXBOPMHwwBkp2n5CBERERGRvqy2tpYZM2YwY8YMhgwZwvDhwzuvt7e37/WxS5Ys4YYbbtjnc8ydO7e3mntQVKaKs+ZALAiqIigiIiIi0qcVFhaybNkyAH72s5+RnZ3NTTfd1Hl/OBzG59v99/rZs2cze/bsfT7H22+/3SttPViqCMZZcyAEoDGCIiIiIiKHoGuuuYavfvWrHH300Xzve99j8eLFHHvsscycOZO5c+eyZs0aAF5//XXOOeccwIXIL37xi8ybN4+xY8dyyy23dO4vOzu7c/t58+Zx8cUXM3nyZK644gqstQA8++yzTJ48mVmzZnHDDTd07rc3KZ3EWWfXUFUERURERER67OdPrWBlZVOv7nPqsFx+eu60/X5ceXk5b7/9Nl6vl6amJhYuXIjP5+Pll1/mP/7jP3j88cd3eczq1at57bXXaG5uZtKkSXzta1/bZbmHDz74gBUrVjBs2DCOO+443nrrLWbPns11113HggULGDNmDJdffvkBv969UTqJM39H11BVBEVEREREDkmf/exn8Xq9ADQ2NnL11VfzySefYIwhFArt9jFnn302aWlppKWlMXjwYLZt20ZpaekO28yZM6fzthkzZlBWVkZ2djZjx47tXBri8ssv56677ur11xTXdGKMORP4M+AF/mqt/c1O948C7gGKgTrgSmtteey+q4Efxzb9hbX2H/Fsa7w0xyqCOaoIioiIiIj02IFU7uIlKyur8/JPfvITTj75ZP79739TVlbGvHnzdvuYtLS0zster5dwOHxA28RL3MYIGmO8wO3AWcBU4HJjzNSdNvs9cJ+1djpwM/Dr2GMLgJ8CRwNzgJ8aYwbFq63x1FERzNGsoSIiIiIih7zGxkaGDx8OwL333tvr+580aRIbNmygrKwMgIcffrjXnwPiO1nMHGCdtXaDtbYdeAg4f6dtpgKvxi6/1u3+TwEvWWvrrLX1wEvAmXFsa9x0jBHMSvMmuSUiIiIiInKwvve97/HDH/6QmTNnxqWCl5GRwR133MGZZ57JrFmzyMnJIS8vr9efx3TMTNPrOzbmYuBMa+2XY9c/Dxxtrf1Gt20eBBZZa/9sjLkQeBwoAr4ApFtrfxHb7idAm7X29zs9x7XAtQAjR46ctWnTpri8loPxq2dX8X/vbGLVfx2SOVZEREREJGFWrVrFlClTkt2MpPP7/WRnZ2Ot5etf/zoTJkzg29/+9g7b7O69MsZsAmq63XSXtXa3AwyTvXzETcBJxpgPgJOACiDS0wdba++y1s621s4uLi6OVxsPSnMgrBlDRURERESkx+6++25mzJjBtGnTaGxs5LrrruvpQ2s68lHstMdZZuKZUCqAEd2ul8Zu62StrQQuBDDGZAMXWWsbjDEVwLydHvt6HNsaN/5gWGsIioiIiIhIj33729/epQLY2+JZEXwPmGCMGWOMSQUuA+Z338AYU2SM6WjDD3EziAK8AJxhjBkUmyTmjNhthxx/IKSKoIiIiIiI9ClxC4LW2jDwDVyAWwU8Yq1dYYy52RhzXmyzecAaY8xaoAT4ZeyxdcB/4cLke8DNsdsOOc2BsNYQFBERERGRPiWuCcVa+yzw7E63/We3y48Bj+3hsffQVSE8ZPmDYUZmZSa7GSIiIiIiIp2SPVlMv6fJYkREREREpK9REIwzfzBMbroWkxcRERERkb5Dpao4stbiD2qMoIiIiIjIoaC2tpZTTz0VgK1bt+L1eulYpm7x4sWkpqbu9fGvv/46qampzJ07F4A777yTzMxMrrrqqvg2/AAoocRRIBQlErXqGioiIiIicggoLCxk2bJlAPzsZz8jOzubm266qcePf/3118nOzu4Mgl/96lfj0cxeoYQSR83BEIAqgiIiIiIi++u5H8DW5b27zyGHw1m/2a+HLF26lO985zv4/X6Kioq49957GTp0KLfccgt33nknPp+PqVOn8pvf/IY777wTr9fL/fffz6233sorr7zSGSbnzZvH0UcfzWuvvUZDQwN/+9vfOOGEE2htbeWaa67h448/ZtKkSVRWVnL77bcze/bs3n3tO1FCiSN/IAxAjiqCIiIiIiKHHGst3/zmN3nyyScpLi7m4Ycf5kc/+hH33HMPv/nNb9i4cSNpaWk0NDSQn5/PV7/61R2qiK+88soO+wuHwyxevJhnn32Wn//857z88svccccdDBo0iJUrV/Lxxx8zY8aMhLw2JZQ48gddEFRFUERERERkP+1n5S4egsEgH3/8MaeffjoAkUiEoUOHAjB9+nSuuOIKLrjgAi644IIe7e/CCy8EYNasWZSVlQHw5ptvcuONNwJw2GGHMX369N59EXughBJHHRVBBUERERERkUOPtZZp06bxzjvv7HLfM888w4IFC3jqqaf45S9/yfLl++7GmpaWBoDX6yUcDvd6e/eHlo+IoyNG5PP0N49n2vC8ZDdFRERERET2U1paGtXV1Z1BMBQKsWLFCqLRKFu2bOHkk0/mt7/9LY2Njfj9fnJycmhubt6v5zjuuON45JFHAFi5cmWPAmVvUKkqjrLSfBymECgiIiIickjyeDw89thj3HDDDTQ2NhIOh/nWt77FxIkTufLKK2lsbMRayw033EB+fj7nnnsuF198MU8++SS33nprj57j+uuv5+qrr2bq1KlMnjyZadOmkZcX/wxhrLVxf5JEmD17tl2yZEmymyEiIiIi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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "stats.plot(figsize=(15, 5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Export the best model\n", "\n", "Load the best model during training and export it as hdf5 network. It is supported by `lava.lib.dl.netx` to automatically load the network as a lava process." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "net.load_state_dict(torch.load(trained_folder + '/network.pt'))\n", "net.export_hdf5(trained_folder + '/network.net')" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Visualize the network output\n", "\n", "Here, we will use `slayer.io.tensor_to_event` method to convert the torch output spike tensor into graded (non-binary) `slayer.io.Event` object and visualize a few input and output event pairs." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "output = net(input.to(device), mode=scheduler.mode(100, 0, False))\n", "for i in range(5):\n", " img = (2*input[i].reshape(28, 28).cpu().data.numpy()-1) * 255\n", " Image.fromarray(img).convert('RGB').save(f'gifs/inp{i}.png')\n", " out_event = slayer.io.tensor_to_event(output[i].cpu().data.numpy().reshape(1, 10, -1))\n", " out_anim = out_event.anim(plt.figure(figsize=(10, 3.5)), frame_rate=2400)\n", " out_anim.save(f'gifs/out{i}.gif', animation.PillowWriter(fps=24), dpi=300)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
InputOutput
\"Drawing\" \"Drawing\"
\"Drawing\" \"Drawing\"
\"Drawing\" \"Drawing\"
\"Drawing\" \"Drawing\"
\"Drawing\" \"Drawing\"
" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "img_td = lambda gif: f' \"Drawing\" '\n", "html = ''\n", "html += ''\n", "for i in range(5):\n", " html += ''\n", " html += img_td(f'gifs/inp{i}.png')\n", " html += img_td(f'gifs/out{i}.gif')\n", " html += ''\n", "html += '
InputOutput
'\n", "display.HTML(html)" ] } ], "metadata": { "interpreter": { "hash": "455f3bd799a5f8ef472892b313399a012a22220b177aaac3bdfe3435a7fd8796" }, "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }