diff --git a/scripts/FMNIST_with_Nengo.ipynb b/scripts/FMNIST_with_Nengo.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..1a4126395eb11b9e73cb323c8f77f0791e8e3983 --- /dev/null +++ b/scripts/FMNIST_with_Nengo.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## FMNIST with Nengo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load the libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import tensorflow as tf\n", + "\n", + "import nengo\n", + "import nengo_dl\n", + "\n", + "seed = 0\n", + "np.random.seed(seed)\n", + "tf.random.set_seed(seed)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### fashion MNIST dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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K7XXbrN8+OHC6ubLLtuuC5C3xXi22VguiYRdNqdfffXV5PWtt94a7Xnz5kX7gw8+SPrtvvvu0c7NubL7ij/2eu85S0Cnn5sioVPNzSVhxIgR0b777rujPXv27KQfz8EFCxauaNSzZ8+k30477RTtU045pdWOsxVpdizlyRFCCCFEJdFDjhBCCCEqyeKyq9pMrmKXNQB87nOfK21bbrmF62XusMMO0f7oo4+Sfp/4xMJnto8/Xrgyw9y5c1HGjBkzoj1r1qzS7a244orRfuyxx0q310pUyiX+3//+N3nN57xfv37Rzl2LLH+99957pW1z5ixcC7BHjx5Jv0GDBqGD6FQu8dw45OQflqT+3//7f0kbj0WvXr2izfMUAF577bVo77XXXtE+7rjjMke8kJYe+xJQqbkpGn9u8hzh7yTPGmuskbx+4403ot29e/dor712sgwg3n777Wivssoq0Z4/f37p9viY/P2YaUm4ylIguUoIIYQQXQc95AghhBCikughRwghhBCVpM3zaMt0uJNPPjl5PW7cuGivv/76SdsyyywT7ccffzzaAwYMSPq9+eab0d5vv/2i/fDDDyf9OKX5rbfeina3bt1K9/vSSy9F+4orrkj6HXvssRDlfO1rX0te33777dFeffXVo+3jKVZYYYVoc5qjj+Pga4yvAd9v+vTpS3DUXRc/Z/k8+rYbb7wx2ldeeWW0fWo4xxJwDMCaa66Z9Ft33XWjfc8990R7q622SvptvvnmzR5fLmZBiM5I7pqeMGFCtP39jucMx9f07t27dPsc58pxqEAa0zh58uRo/+AHP0j6nX322dHm+4U/vvaaq7ojCCGEEKKS6CFHCCGEEJWkzVPIGXZXcfVED6eqAWnKKaer+dRkTn9jl9z48eOTfmXVblke8cfL++KUZQB48cUXm93eUlCpNNVtttkmec2Vh5n3338/ec2VOVlW9Kngq622WrR5nHyl5VGjRtV5xK1Ow6epJhtegqrBXIGcJV1OBQeAvffeO9o8h9ndDqQlBVheXG+99ZJ+F198cbSXX375aLeDS7xN5iav0t0Oqba83+R1WfVof0wsa/A59v1aUpm6EdKOl5Ilnpv1zrlJkyYlr3/4wx9G+8EHH0zaeIz4nsvzBUjvme+88060fTgIf2/y9vz35he/+MVon3baac18ihptIDMrhVwIIYQQXQc9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", + "text/plain": [ + "<Figure size 720x720 with 25 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(train_images, train_labels), (\n", + " test_images,\n", + " test_labels,\n", + ") = tf.keras.datasets.fashion_mnist.load_data()\n", + "\n", + "# normalize images so values are between 0 and 1\n", + "train_images = train_images / 255.0\n", + "test_images = test_images / 255.0\n", + "\n", + "# flatten images\n", + "train_images = train_images.reshape((train_images.shape[0], -1))\n", + "test_images = test_images.reshape((test_images.shape[0], -1))\n", + "\n", + "class_names = [\n", + " \"T-shirt/top\",\n", + " \"Trouser\",\n", + " \"Pullover\",\n", + " \"Dress\",\n", + " \"Coat\",\n", + " \"Sandal\",\n", + " \"Shirt\",\n", + " \"Sneaker\",\n", + " \"Bag\",\n", + " \"Ankle boot\",\n", + "]\n", + "num_classes = len(class_names)\n", + "\n", + "plt.figure(figsize=(10, 10))\n", + "for i in range(25):\n", + " plt.subplot(5, 5, i + 1)\n", + " plt.imshow(train_images[i].reshape((28, 28)), cmap=plt.cm.binary)\n", + " plt.axis(\"off\")\n", + " plt.title(class_names[train_labels[i]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Build The network" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "minibatch_size = 20\n", + "\n", + "# Add time dimension \n", + "\n", + "train_images = train_images[:, None, :]\n", + "train_labels = train_labels[:, None, None]\n", + "\n", + "test_images = test_images[:, None, :]\n", + "test_labels = test_labels[:, None, None]\n", + "\n", + "with nengo.Network(seed=seed) as net:\n", + " # set up some default parameters to match the Keras defaults\n", + " net.config[nengo.Ensemble].gain = nengo.dists.Choice([1])\n", + " net.config[nengo.Ensemble].bias = nengo.dists.Choice([0])\n", + " net.config[nengo.Connection].synapse = None\n", + " net.config[nengo.Connection].transform = nengo_dl.dists.Glorot()\n", + "\n", + " # input node, same as before\n", + " inp = nengo.Node(output=np.ones(28 * 28))\n", + "\n", + " # add the first dense layer\n", + " hidden = nengo.Ensemble(128, 1, neuron_type=nengo.RectifiedLinear())\n", + " nengo.Connection(inp, hidden.neurons)\n", + "\n", + " # add the linear output layer (using nengo.Node since there is\n", + " # no nonlinearity)\n", + " out = nengo.Node(size_in=num_classes)\n", + " nengo.Connection(hidden, out)\n", + "\n", + " # add a probe to collect output\n", + " out_p = nengo.Probe(out)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the training" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "| Building network (0%) | ETA: --:--:--\n", + "Build finished in 0:00:00\n", + "|# Optimizing graph | 0:00:00\n", + "|# Optimizing graph: operator simplificaton | 0:00:00\n", + "Optimizing graph: operator simplificaton finished in 0:00:00\n", + "|# Optimizing graph: merging operators | 0:00:00\n", + "Optimizing graph: merging operators finished in 0:00:00\n", + "|# Optimizing graph: ordering signals | 0:00:00\n", + "Optimizing graph: ordering signals finished in 0:00:00\n", + "|# Optimizing graph: creating signals | 0:00:00\n", + "Optimizing graph: creating signals finished in 0:00:00\n", + "Optimization finished in 0:00:00\n", + "|# Constructing graph | 0:00:00\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/hammouda/.local/lib/python3.6/site-packages/nengo_dl/simulator.py:461: UserWarning: No GPU support detected. See https://www.nengo.ai/nengo-dl/installation.html#installing-tensorflow for instructions on setting up TensorFlow with GPU support.\n", + " \"No GPU support detected. See \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "| # Constructing graph | 0:00:00\n", + "| Constructing graph: pre-build stage (0%) | ETA: --:--:--\n", + "Constructing graph: pre-build stage finished in 0:00:00\n", + "| Constructing graph: build stage (0%) | ETA: --:--:--\n", + "|##############Constructing graph: build stage (62%) | ETA: 0:00:00\n", + "Constructing graph: build stage finished in 0:00:00\n", + "| # Constructing graph | 0:00:00\n", + "Construction finished in 0:00:00\n", + "Epoch 1/5\n", + "| Constructing graph: pre-build stage (0%) | ETA: --:--:--\n", + "Constructing graph: pre-build stage finished in 0:00:00\n", + "| Constructing graph: build stage (0%) | ETA: --:--:--\n", + "|##############Constructing graph: build stage (25%) | ETA: 0:00:00\n", + "Constructing graph: build stage finished in 0:00:00\n", + "| Constructing graph: pre-build stage (0%) | ETA: --:--:--\n", + "Constructing graph: pre-build stage finished in 0:00:00\n", + "| Constructing graph: build stage (0%) | ETA: --:--:--\n", + "|##############Constructing graph: build stage (25%) | ETA: 0:00:00\n", + "Constructing graph: build stage finished in 0:00:00\n", + "3000/3000 [==============================] - 7s 2ms/step - loss: 0.5096 - probe_loss: 0.5096 - probe_accuracy: 0.8168\n", + "Epoch 2/5\n", + "3000/3000 [==============================] - 6s 2ms/step - loss: 0.3666 - probe_loss: 0.3666 - probe_accuracy: 0.8675\n", + "Epoch 3/5\n", + "3000/3000 [==============================] - 6s 2ms/step - loss: 0.3317 - probe_loss: 0.3317 - probe_accuracy: 0.8798\n", + "Epoch 4/5\n", + "3000/3000 [==============================] - 6s 2ms/step - loss: 0.3080 - probe_loss: 0.3080 - probe_accuracy: 0.8857\n", + "Epoch 5/5\n", + "3000/3000 [==============================] - 7s 2ms/step - loss: 0.2898 - probe_loss: 0.2898 - probe_accuracy: 0.8934\n", + "| Constructing graph: pre-build stage (0%) | ETA: --:--:--\n", + "Constructing graph: pre-build stage finished in 0:00:00\n", + "| Constructing graph: build stage (0%) | ETA: --:--:--\n", + "Constructing graph: build stage finished in 0:00:00\n", + "Test accuracy: 87.8 %\n" + ] + } + ], + "source": [ + "with net:\n", + " nengo_dl.configure_settings(stateful=False, use_loop=False)\n", + "\n", + "with nengo_dl.Simulator(net, minibatch_size=minibatch_size) as sim:\n", + " sim.compile(\n", + " optimizer=tf.optimizers.Adam(),\n", + " loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),\n", + " metrics=[\"accuracy\"],\n", + " )\n", + "\n", + " # Do training\n", + " sim.fit(train_images, train_labels, epochs=5)\n", + "\n", + " print(\n", + " \"Test accuracy:\",\n", + " np.round(sim.evaluate(test_images, test_labels, verbose=0)[\"probe_accuracy\"] * 100,2),\" %\"\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}