{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MNIST Example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# You dont need this, this is for my convinience\n", "import sys\n", "import os\n", "notebook_dir = os.path.dirname(os.getcwd())\n", "sys.path.append(notebook_dir)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from nervos.utils import Module, Parameters\n", "from nervos.dataloader import MNISTLoader" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "p = Parameters()\n", "p.from_url('https://pastebin.com/raw/X9fAjKGR')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "class MNIST_SNN(Module):\n", " def __init__(self, parameters, identifier=None):\n", " super().__init__(parameters, identifier)\n", " self.dataloader = MNISTLoader(parameters, classes=[i for i in range(5)])\n", " self.X_train, self.Y_train = self.dataloader.dataloader(\n", " preprocess=True, pca=False, size=100\n", " )\n", " self.X_test, self.Y_test = self.dataloader.dataloader(\n", " preprocess=True, train=False, pca=False\n", " )\n", " def predict(self, un_processed_image, model_location):\n", " spike_train = np.array(self.dataloader.img2spiketrain(un_processed_image))\n", " synapses, neuron_label_map = self.load_model(model_location)\n", " return self.get_prediction(spike_train, synapses, neuron_label_map)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "100/100 [========================================]\n", "Testing...\n", "Test set accuracy: 0.7\n", "Time elapsed since training start: 139.892s\n", "Epoch 2/3\n", "100/100 [========================================]\n", "Testing...\n", "Test set accuracy: 0.95\n", "Time elapsed since training start: 279.372s\n", "Epoch 3/3\n", "100/100 [========================================]\n", "Testing...\n", "Test set accuracy: 1.0\n", "Time elapsed since training start: 414.278s\n", "Training complete!\n" ] } ], "source": [ "m = MNIST_SNN(p,\"5classmnist\")\n", "m.initialise_layers([784,80])\n", "y = m.train()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def visualise_synapse(synapses,labels):\n", " kk=28\n", " classes = {i:np.zeros((kk,kk)) for i in np.unique(labels)}\n", " for idx in range(len(synapses)):\n", " classes[labels[idx]]+= synapses[idx].reshape((kk,kk))\n", " \n", " i = 1\n", " plt.figure(figsize=(10,30))\n", " for k in classes.keys():\n", " plt.subplot(1,len(classes),i)\n", " plt.imshow(classes[k])\n", " plt.title(f\"{k}\")\n", " plt.tight_layout()\n", " plt.axis('off')\n", " i+=1\n", " plt.show()\n", " \n", "visualise_synapse(m.learned_synapses[0],m.learned_neuron_label_map)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calculating Accuracy\n", "Tested 1500 images\n", "0.9153333333333333\n" ] } ], "source": [ "def accuracy(m2):\n", " spike_trains,labels = MNISTLoader(p,classes=[i for i in range(5)]).dataloader(train=False,preprocess=True,seed=123,size=1500)\n", " t = 0\n", " c = 0\n", " preds = []\n", " print('Calculating Accuracy')\n", " for st,label in zip(spike_trains,labels):\n", " pred = m2.get_prediction(st)\n", " preds.append(pred)\n", " if pred == label:\n", " c+=1\n", " t+=1\n", " \n", " print(f\"\\rTested {t} images\",end='')\n", " print()\n", " print(c/t)\n", " return labels,preds\n", "\n", "y_true,y_pred = accuracy(m)" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "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.12.4" } }, "nbformat": 4, "nbformat_minor": 2 }