From 676be4800942abe6d2cf1dfb04ce69e29a024efe Mon Sep 17 00:00:00 2001 From: Max Cotton Date: Sat, 3 Feb 2024 18:28:53 +0000 Subject: [PATCH] Add notebooks directory --- notebooks/effect-of-dataset-size.ipynb | 112 +++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 notebooks/effect-of-dataset-size.ipynb diff --git a/notebooks/effect-of-dataset-size.ipynb b/notebooks/effect-of-dataset-size.ipynb new file mode 100644 index 0000000..a4dcd81 --- /dev/null +++ b/notebooks/effect-of-dataset-size.ipynb @@ -0,0 +1,112 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train Dataset Sizes: [ 1 11 21 31 41 51 61 71 81 91 101 111 121 131 141 151 161 171\n", + " 181 191 201]\n", + "Train Dataset Size: 1, 0.0% of the way done.\n", + "Train Dataset Size: 11, 4.76% of the way done.\n", + "Train Dataset Size: 21, 9.52% of the way done.\n", + "Train Dataset Size: 31, 14.29% of the way done.\n", + "Train Dataset Size: 41, 19.05% of the way done.\n", + "Train Dataset Size: 51, 23.81% of the way done.\n", + "Train Dataset Size: 61, 28.57% of the way done.\n", + "Train Dataset Size: 71, 33.33% of the way done.\n", + "Train Dataset Size: 81, 38.1% of the way done.\n", + "Train Dataset Size: 91, 42.86% of the way done.\n", + "Train Dataset Size: 101, 47.62% of the way done.\n", + "Train Dataset Size: 111, 52.38% of the way done.\n", + "Train Dataset Size: 121, 57.14% of the way done.\n", + "Train Dataset Size: 131, 61.9% of the way done.\n", + "Train Dataset Size: 141, 66.67% of the way done.\n", + "Train Dataset Size: 151, 71.43% of the way done.\n", + "Train Dataset Size: 161, 76.19% of the way done.\n", + "Train Dataset Size: 171, 80.95% of the way done.\n", + "Train Dataset Size: 181, 85.71% of the way done.\n", + "Train Dataset Size: 191, 90.48% of the way done.\n", + "Train Dataset Size: 201, 95.24% of the way done.\n" + ] + }, + { + "data": { + "image/png": "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Xl6emDhxooiIiBB+fn5iyJAhYuPGjWbnio2NFYsXLzY9BiA+/vhjcdtttwkfHx/Rr18/8d///veS9dx4443iySefbHN85cqVAoDZ93zuuedEfHy88PHxEb179xYvvviiqK+vN70vdLCZ3bvvvitUKpXw9fUVvXr1ErNmzTLbaPDEiRPi1ltvFcHBwcLX11ckJiaKn376ydSu0WjE+PHjhZ+fn4iIiBD33HOPOHv2rBBCiOnTp7f5vgUFBW3ez4UdkU+cONHh38WFzSH379/f4bnRaqPI2tpaMXfuXBEVFSV8fX3F0KFDTW1E1Iw9MkTdxPPPP48333wThw8fRnJyMiorK5Geno7Nmzdj//79GD9+PCZMmIDCwsJLnmfhwoW48847kZOTg/T0dEybNg1lZWVW1zN9+nT06NHDbIgpICAAq1atwqFDh/D+++/j448/xuLFiwEAU6ZMwdy5c5GUlGTqaZoyZQoAQC6X44MPPsDBgwexevVqbNmyBc8995zpvLNnz0ZdXR1++eUXaDQavPXWW/D39wcAlJeXY/To0Rg0aBB+//13rF+/HsXFxbjzzjsBAO+//z5SU1NNvUparRbR0dFt3k94eDjkcjn+85//oKmpyaK/g/fff9+s5+zJJ59EREQEEhISAACPPfYYdu3ahTVr1iAnJwd/+9vfMH78eBw7dszqv28il+XoJEVEttVRj8x333132dcmJSWJDz/80PS4vR6ZF1980fS4srJSABCZmZkdnrOjHhkhhBg2bJhIS0vr8LXvvPOOGDx4sOnxK6+8IlJSUi77Pr7++msRGhpqeqxWq8WCBQvafe7//M//iJtvvtns2KlTpwQAcfTo0cu+h9Y++ugj4evrKwICAsSoUaPEq6++KvLz803tF/fItPbNN98Ib29v8dtvvwkhhDh58qRwc3MTZ86cMXvemDFjxPz58y9bC1F3wR4Zom5iyJAhZo8rKyvxzDPPYODAgQgODoa/vz8OHz582R6Z5ORk05/9/PwQGBiIkpKSK6pJCAGZTGZ6vHbtWowYMQIKhQL+/v548cUXL1sPAGzatAljxoxBz549ERAQgHvvvRelpaWorq4GADzxxBN47bXXMGLECLzyyivIyckxvfbAgQPYunUr/P39TV8XekTy8/Otej+zZ8+GTqfDl19+idTUVHz99ddISkrCxo0bL/m6/fv3495778VHH32EESNGAAA0Gg2amprQv39/s9q2b99udV1EroxBhqib8PPzM3v8zDPP4Ntvv8Ubb7yBX3/9FdnZ2VCr1aivr7/keTw8PMwey2QyGI1Gq+tpamrCsWPH0Lt3bwDArl27MG3aNKSnp+PHH3/E/v378cILL1y2nhMnTuDWW29FcnIyvvnmG+zbtw//+Mc/AMD02r///e84fvw47r33Xmg0GgwZMgQffvghgOZAN2HCBGRnZ5t9HTt2DDfccIPV7ysgIAATJkzA66+/jgMHDuD666/Ha6+91uHzdTodJk6ciL///e946KGHTMcrKyvh5uaGffv2mdV1+PBhvP/++1bXReSqOHWeqJvasWMH7r//ftx+++0Ami+cJ06c6LLvv3r1apw/fx6TJ08GAOzcuROxsbF44YUXTM85efKk2Ws8PT3bzD/Zt28fjEYj3n33Xcjlzf83+/e//93m+0VHR+ORRx7BI488gvnz5+Pjjz/G448/jquvvhrffPMN4uLiOrybqL3vawmZTIaEhATs3Lmz3fba2lpMmjQJCQkJeO+998zaBg0ahKamJpSUlOD666+3+nsTdRfskSHqpuLj47Fu3TpkZ2fjwIEDuPvuu6+oZ8US1dXV0Ol0OH36NLKysjBv3jw88sgjmDVrFkaNGmWqp7CwEGvWrEF+fj4++OADfPvtt2bniYuLQ0FBAbKzs3Hu3DnU1dWhX79+aGhowIcffojjx4/jiy++wLJly8xe99RTT2HDhg0oKCjAH3/8ga1bt2LgwIEAmoeDysrKcNddd2Hv3r3Iz8/Hhg0b8MADD5jCS1xcHHbv3o0TJ07g3Llz7f49ZWdnY9KkSfjPf/6DQ4cOIS8vD59++ilWrlyJSZMmtfv38vDDD+PUqVP44IMPcPbsWeh0Ouh0OtTX16N///6YNm0a7rvvPqxbtw4FBQXYs2cPFi1ahJ9++qnTnwmRy3D0JB0isq2OJvueP3/e7HkFBQVi1KhRwsfHR0RHR4uPPvqozaTW9ib7fvvtt2bnCQoKMt0G3Z4bb7zRdFuxp6enUCqV4tZbbxXr1q1r89xnn31WhIaGCn9/fzFlyhSxePFis/dSW1srJk+eLIKDg81uv37vvfeEUqkUPj4+Yty4ceLzzz83e8+PPfaY6Nu3r/Dy8hLh4eHi3nvvFefOnTOd988//xS33367CA4OFj4+PiIhIUE89dRTwmg0CiGEOHr0qBg+fLjw8fHp8Pbrs2fPiieeeEKoVCrh7+8vAgIChFqtFv/7v/8rmpqaTH/naDXZNzY29pK3X9fX14uXX35ZxMXFCQ8PD6FUKsXtt98ucnJyOvz7JupuZEII4ZAERURERNRJHFoiIiIiyWKQISIiIslikCEiIiLJYpAhIiIiyWKQISIiIslikCEiIiLJYpAhIiIiyWKQISIiIslikCEiIiLJYpAhIiIiyWKQISIiIsn6/wEKIwLFDBiILAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import os\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from school_project.models.gpu.mnist import MNISTModel as Model\n", + "\n", + "os.chdir(os.getcwd())\n", + "\n", + "train_dataset_sizes = np.array(list(range(1, 209, 10)))\n", + "test_prediction_accuracies = np.array([])\n", + "\n", + "print(f\"Train Dataset Sizes: {train_dataset_sizes}\")\n", + "\n", + "for index, train_dataset_size in enumerate(train_dataset_sizes):\n", + "\n", + " print(f\"Train Dataset Size: {train_dataset_size}, {round(number=index/len(train_dataset_sizes) * 100, ndigits=2)}% of the way done.\")\n", + "\n", + " model = Model(\n", + " hidden_layers_shape = [100, 100],\n", + " train_dataset_size = train_dataset_size,\n", + " learning_rate = 0.1,\n", + " use_relu = True\n", + " )\n", + " model.create_model_values()\n", + "\n", + " model.train(100)\n", + "\n", + " model.test()\n", + "\n", + " test_prediction_accuracies = np.append(test_prediction_accuracies, model.test_prediction_accuracy)\n", + "\n", + "m, c = np.polyfit(train_dataset_sizes, test_prediction_accuracies, 1)\n", + "\n", + "plt.xlabel(xlabel=\"Train Dataset Size\")\n", + "plt.ylabel(ylabel=\"Test Prediction Accuracy\")\n", + "plt.scatter(train_dataset_sizes, test_prediction_accuracies, marker='x')\n", + "plt.plot(train_dataset_sizes, m*train_dataset_sizes + c)\n", + "plt.show()" + ] + } + ], + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}