From fd03e58248992114ed286695af2f5bf2cf7a10e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Barry?= <timothee.barry1@ecl20.ec-lyon.fr> Date: Thu, 2 Nov 2023 14:28:15 +0100 Subject: [PATCH] feat: add all functions in utils and workflow in a notebook --- .gitignore | 4 + be_image_classification.ipynb | 2052 +++++++++++++++++++++++++++++ images/knn_accuracy.png | Bin 0 -> 33180 bytes images/mlp_loss.png | Bin 0 -> 23034 bytes images/mlp_loss_tf.png | Bin 0 -> 21189 bytes utils/binary_cross_entropy.py | 8 + utils/distance_matrix.py | 8 + utils/evaluate_knn.py | 10 + utils/forward_pass.py | 10 + utils/knn_predict.py | 11 + utils/learn_once_cross_entropy.py | 25 + utils/learn_once_mse.py | 27 + utils/mlp_training.py | 42 + utils/one_hot.py | 8 + utils/process_image.py | 17 + utils/read_cifar.py | 24 + utils/sigmoid.py | 3 + utils/split_dataset.py | 17 + 18 files changed, 2266 insertions(+) create mode 100644 .gitignore create mode 100644 be_image_classification.ipynb create mode 100644 images/knn_accuracy.png create mode 100644 images/mlp_loss.png create mode 100644 images/mlp_loss_tf.png create mode 100644 utils/binary_cross_entropy.py create mode 100644 utils/distance_matrix.py create mode 100644 utils/evaluate_knn.py create mode 100644 utils/forward_pass.py create mode 100644 utils/knn_predict.py create mode 100644 utils/learn_once_cross_entropy.py create mode 100644 utils/learn_once_mse.py create mode 100644 utils/mlp_training.py create mode 100644 utils/one_hot.py create mode 100644 utils/process_image.py create mode 100644 utils/read_cifar.py create mode 100644 utils/sigmoid.py create mode 100644 utils/split_dataset.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be84118 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/data +*.pyc +tests.ipynb + diff --git a/be_image_classification.ipynb b/be_image_classification.ipynb new file mode 100644 index 0000000..807001d --- /dev/null +++ b/be_image_classification.ipynb @@ -0,0 +1,2052 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## CIFAR Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((60000, 3072), (60000,))" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from utils.read_cifar import read_cifar\n", + "\n", + "data, labels = read_cifar('data/cifar-10-batches-py')\n", + "data.shape, labels.shape\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nHvsscfcqFGj3ObNm93+/fvd4sWL3aRJk9yZM2cCr9zm47aztbXVfeUrX3E7duxwR44cca+//rr7oz/6I3fllVe6jo6O0Ev3tmLFCldcXOy2bdvmTpw40X1pb2/vHrN8+XI3YcIE98Ybb7jdu3e76upqV11dHXDVdhfbzkOHDrlHHnnE7d692x05csRt3rzZTZ482c2ePTvwym2+9rWvufr6enfkyBG3f/9+97Wvfc1FIhH3b//2b865/juWAyKAnHPu+9//vpswYYKLx+Pu+uuvdzt37gy9pD516623uoqKChePx90nPvEJd+utt7pDhw6FXtYlefPNN52kcy5Lly51zp09Ffsb3/iGKysrc4lEws2bN88dOHAg7KJ74eO2s7293c2fP9+NHTvW5efnu4kTJ7q77rprwP3ydL7tk+TWrVvXPebMmTPuz//8z93o0aNdQUGBu/nmm92JEyfCLboXLradR48edbNnz3YlJSUukUi4K664wv31X/+1a25uDrtwozvvvNNNnDjRxeNxN3bsWDdv3rzu8HGu/44lnwcEAAgi598DAgAMTgQQACAIAggAEAQBBAAIggACAARBAAEAgiCAAABBEEAAgCAIIABAEAQQACAIAggAEMT/A9ARKwM2PlqmAAAAAElFTkSuQmCC", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from utils.split_dataset import split_dataset\n", + "from utils.process_image import plot_image_with_label\n", + "\n", + "train_data, train_labels, test_data, test_labels = split_dataset(data, labels, 0.8)\n", + "plot_image_with_label(train_data[0].reshape(3, 32, 32).transpose(1,2,0), train_labels[0])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## k-nearest neighbors" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0. , 2.82842712],\n", + " [2.82842712, 0. ]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from utils.distance_matrix import distance_matrix\n", + "import numpy as np\n", + "\n", + "a_test = np.array([[1, 2], [3, 4]])\n", + "b_test = np.array([[1, 2], [3, 4]])\n", + "distance_matrix(a_test, b_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from utils.evaluate_knn import evaluate_knn\n", + "\n", + "if False:\n", + " evaluate_knn(train_data, train_labels, test_data, test_labels, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "k=1, accuracy=0.34833333333333333\n", + "k=2, accuracy=0.30833333333333335\n", + "k=3, accuracy=0.3288333333333333\n", + "k=4, accuracy=0.3405\n", + "k=5, accuracy=0.3375\n", + "k=6, accuracy=0.33366666666666667\n", + "k=7, accuracy=0.33316666666666667\n", + "k=8, accuracy=0.3355\n", + "k=9, accuracy=0.335\n", + "k=10, accuracy=0.33416666666666667\n", + "k=11, accuracy=0.341\n", + "k=12, accuracy=0.3365\n", + "k=13, accuracy=0.3368333333333333\n", + "k=14, accuracy=0.33616666666666667\n", + "k=15, accuracy=0.33366666666666667\n", + "k=16, accuracy=0.3313333333333333\n", + "k=17, accuracy=0.3303333333333333\n", + "k=18, accuracy=0.3285\n", + "k=19, accuracy=0.32866666666666666\n", + "k=20, accuracy=0.331\n" + ] + } + ], + "source": [ + "if True:\n", + " data, labels = read_cifar('data/cifar-10-batches-py')\n", + " train_data, train_labels, test_data, test_labels = split_dataset(data, labels, 0.9)\n", + " k_values = list(np.arange(1, 21))\n", + " accuracies = []\n", + " for k in k_values:\n", + " accuracy = evaluate_knn(train_data, train_labels, test_data, test_labels, k)\n", + " accuracies.append(accuracy)\n", + " print(f'k={k}, accuracy={accuracy}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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o9G0+DipVIro6GjEx8fjySefxG233Ya0tDQAwPbt21FaWoqePXtCLpdDLpfjzJkzePLJJxEZGdniORMTE1FfX4/Tp093xlMTjcbfCwCnHRIRERERORpRw5dCocDw4cORnp5uu89isSA9PR2jRo1q9XksFgsMBgMAYMaMGdi/fz+ys7Ntt7CwMDz11FPYuHFji+fIzs6GVCpttsOiM9GoGkbnuNcXEREREZFjEX3aYWpqKmbNmoWEhASMHDkSixcvhl6vR0pKCgBg5syZCA8Pt41spaWlISEhAVFRUTAYDFi/fj1WrFiBpUuXAgCCgoIQFBTU5BoeHh7QaDTo378/ACAjIwO7du3C9ddfDz8/P2RkZOCJJ57APffcg27dutnx2Xc+brRMREREROSYRA9f06ZNQ1lZGV588UUUFxcjPj4eGzZssDXhyM3NhVR6foBOr9djzpw5yM/Ph5eXF2JiYrBy5UpMmzat1ddUKpX46quv8NJLL8FgMKB379544oknmqwDc1a2vb447ZCIiIiIyKFIBEEQxC7CGel0OqhUKmi1Wvj7+4tdjs3+/Erc9P5vUPsrseu5pMs/gIiIiIiIOqS12UD0TZapc1mnHZZVGVBvtohcDRERERERWTF8uZggXyVkUgksAlBebRS7HCIiIiIiasTw5WJkUglC/Bo7HnLdFxERERGRw2D4ckEaFTseEhERERE5GoYvF3S+3XytyJUQEREREZEVw5cLsrabL9YZRK6EiIiIiIisGL5ckHXaIff6IiIiIiJyHAxfLuj8tEOGLyIiIiIiR8Hw5YKs0w458kVERERE5DgYvlyQrduhrg6CIIhcDRERERERAQxfLsk67bDGaEaVoV7kaoiIiIiICGD4ckleChlUXh4AgBKu+yIiIiIicggMXy7KOvpVxPBFREREROQQGL5clPqCdV9ERERERCQ+hi8XpfFXAuC0QyIiIiIiR8Hw5aJse31x5IuIiIiIyCEwfLko67RD7vVFREREROQYGL5cFEe+iIiIiIgcC8OXi1Jbw5fWIHIlREREREQEMHy5rNDGaYdn9QYY6y0iV0NERERERAxfLirQRwGFTApBAEqrOPWQiIiIiEhsDF8uSiKRIMTabp7rvoiIiIiIRMfw5cI0XPdFREREROQwGL5cmLXdPDseEhERERGJj+HLhVlHvjjtkIiIiIhIfAxf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d7V2ha85c+YgNTUVeXl5GD58OHx8mu5UPWTIkE4pjuzL1nRD63rha19+Q/iK495eRERE5GCG9eyGYT0bNiNe+fsZ7DhebgtLXheGpJYCUouBSmq7353avjuydoWv6dOnAwAee+wx230SiQSCIEAikcBsNndOdWRXmsZ286448rU/vxIAR76IiIjIcWlUnvi/5P74v+T+YpdCXaRd4evUqVOdXQc5APUF7eZdSWWNEWfONuw/NyQ8QNxiiIiIiMhttSt8ca2Xa7JOOyx2sWmH+xunHEYGeUPlzU3/iIiIiEgc7Qpfn3/++SW/P3PmzHYVQ+Jy1WmH56ccBohaBxERERG5t3aFr3nz5jX52mQyoaamBgqFAt7e3gxfTsoavqrq6qE31MNH2a63h8OxNtvgei8iIiIiElO72p6cO3euya26uho5OTm4+uqr8eWXX3Z2jWQnvko5fBsDlyuNfllHvtjpkIiIiIjE1Gk9J/v27Ys33njjolExci5qfyUA12k3X6KrQ4nOAKkEGBTW8m7jRERERERdrVMb/svlchQWFnbmKcnOXG3d1768SgBAP7UfvBWuMY2SiIiIiJxTuz6Nfv/9902+FgQBRUVFeP/993HVVVd1SmEkDmu7eVcJX/u53ouIiIiIHES7wtctt9zS5GuJRILu3btjzJgx+Oc//9kZdZFIrO3mXWXa4b7G9V6x7HRIRERERCJrV/iyWCydXQc5CFeadigIAg4UNIx8xXHki4iIiIhE1qlrvsj52TZa1hlErqTjcitqUFljgkImRYyGzTaIiIiISFztCl9Tp07FwoULL7r/zTffxO23397hokg8tpEvba3IlXScdb3XgFA/KOT8PQMRERERiatdn0h//fVXTJo06aL7J06ciF9//bXDRZF4rCNfZVUG1Jude3qpdX+vIVzvRUREREQOoF3hq7q6GgqF4qL7PTw8oNPpOlwUiSfIVwmZVAKLAJRXG8Uup0P2sdMhERERETmQdoWv2NhYrF69+qL7v/rqKwwcOLDDRZF4ZFIJQvwaNlp25qYbZouAg9ZmGxEB4hZDRERERIR2djt84YUXcOutt+LEiRMYM2YMACA9PR1ffvklvv76604tkOxP7e+JIm0dirV1QITY1bTPibJq1BjN8FbIENXdV+xyiIiIiIjaF75uvPFGfPvtt3j99dfxzTffwMvLC0OG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lxqN5qKGHvX19aioqGjxukqlEkqlsq1P0aWoRZx2uC+vodnG4DAV5DKn/J0BEREREbk5UT/FKhQKDB8+HOnp6bb7LBYL0tPTMWrUqFafx2KxwGA4v/mvNXgdO3YMmzdvRlBQUJPjR40ahcrKSmRmZtru27JlCywWCxITEzvwjFybxr8hfIox7dC6uTL39yIiIiIiZyXqyBcApKamYtasWUhISMDIkSOxePFi6PV6pKSkAABmzpyJ8PBwpKWlAWhYe5WQkICoqCgYDAasX78eK1assE0rNJlMuO2225CVlYV169bBbDbb1nEFBgZCoVBgwIABmDBhAmbPno1ly5bBZDJh7ty5mD59eqs6HborjcoLAFAkxshXY5v5uAiu9yIiIiIi5yR6+Jo2bRrKysrw4osvori4GPHx8diwYYOtCUdubi6k0vMDdHq9HnPmzEF+fj68vLwQExODlStXYtq0aQCAgoICfP/99wAapiReaOvWrbapiatWrcLcuXMxduxYSKVSTJ06Fe+++27XP2EnZl3zZe+RL5PZgsNFDc02OPJFRERERM5K9H2+nJW77fMFNKz1uiItHTKpBH/+YyJkUoldrnuwQIsb3tsBf0859i0YD4nEPtclIiIiImoNp9jni5xLsK8CUglgtgg4W224/AM6yf7GKYdDegQweBERERGR02L4olaTy6To7tfQdMOe7ebPN9vgei8iIiIicl4MX9QmGhHaze+7YOSLiIiIiMhZMXxRm1j3+rJX041aoxl/llQBYKdDIiIiInJuDF/UJtaOh/aadni4SAuzRUB3P6Vt1I2IiIiIyBkxfFGbWMOXvfb62pfXuL9XDxWbbRARERGRU2P4ojbR2HnaobXZRmx4gF2uR0RERETUVRi+qE3s3XDD1mae672IiIiIyMkxfFGbqFXWka+u3+dLW2vCyXI9ACCOnQ6JiIiIyMkxfFGbWEe+qg31qDbUd+m1DhY0jHr16OaFQB9Fl16LiIiIiKirMXxRm/go5fBTygF0/dTDfY3rvTjqRURERESugOGL2uz81MOuDV8HbJsrc70XERERETk/hi9qM3s13bA12+DIFxERERG5AIYvajN7bLRcXm1AQWUtJBIgliNfREREROQCGL6ozewx8mXd3yuquy98G9eYERERERE5M4YvajO1HUa+9uVxvRcRERERuRaGL2oz68hX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57M23TDWWwCw2QYREREREcDwRV3AuteX1ZAebLZBRERERMTwRZ1Oozq/H1qgjwI9unmJWA0RERERkWNg+KJOd+HI15AeKkgkEhGrISIiIiJyDAxf1Ok0TcJXgHiFEBERERE5EIYv6nTWhhsAEMf1XkREREREABi+qAt4K+ToE+wDb4UMw3p2E7scIiIiIiKHIBe7AHJN//vblagxmdHNRyF2KUREREREDoHhi7pENx8FOOZFRERERHQepx0SERERERHZAcMXERERERGRHTB8ERERERER2QHDFxERERERkR0wfBEREREREdkBwxcREREREZEdMHwRERERERHZAcMXERERERGRHTB8ERERERER2QHDFxERERERkR0wfBEREREREdkBwxcREREREZEdMHwRERERERHZAcMXERERERGRHcjFLsBZCYIAANDpdCJXQkREREREYrJmAmtGaAnDVztVVVUBACIiIkSuhIiIiIiIHEFVVRVUKlWL35cIl4tn1CyLxYLCwkL4+flBIpGIXY5L0+l0iIiIQF5eHvz9/cUux+Xx9bY/vub2x9fcvvh62x9fc/vja25/jvSaC4KAqqoqhIWFQSpteWUXR77aSSqVokePHmKX4Vb8/f1F/4vlTvh62x9fc/vja25ffL3tj6+5/fE1tz9Hec0vNeJlxYYbREREREREdsDwRUREREREZAcMX+TwlEolFixYAKVSKXYpboGvt/3xNbc/vub2xdfb/via2x9fc/tzxtecDTeIiIiIiIjsgCNfREREREREdsDwRUREREREZAcMX0RERERERHbA8EVERERERGQHDF8kqrS0NIwYMQJ+fn4ICQnBLbfcgpycnEs+5tNPP4VEImly8/T0tFPFzu2ll1666LWLiYm55GO+/vprxMTEwNPTE7GxsVi/fr2dqnUNkZGRF73mEokEjzzySLPH8/3ddr/++ituvPFGhIWFQSKR4Ntvv23yfUEQ8OKLLyI0NBReXl5ISkrCsWPHLnveJUuWIDIyEp6enkhMTMTu3bu76Bk4n0u95iaTCc888wxiY2Ph4+ODsLAwzJw5E4WFhZc8Z3t+PrmLy73H77333oteuwkTJlz2vHyPt+xyr3lzP9clEgneeuutFs/J93jLWvN5sK6uDo888giCgoLg6+uLqVOnoqSk5JLnbe/P/67E8EWi+uWXX/DII4/g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s52D7/G2udzPFUEQBK1WK3h7ewtLly5t9hx8j7deaz4PPvzww0LPnj2FLVu2CH/88YcwatQoYdSoUU3O079/f2HNmjW2r1vz89/eGL5IVACavX3yySe2Y6677jph1qxZtq8ff/xxoWfPnoJCoRDUarUwadIkISsry/7FO6Fp06YJoaGhgkKhEMLDw4Vp06YJx48ft33/r6+1IAjCf//7X6Ffv36CQqEQBg0aJPz44492rtr5bdy4UQAg5OTkXPQ9vr87buvWrc3+HLG+rhaLRXjhhRcEtVotKJVKYezYsRf9v+jVq5ewYMGCJve99957tv8XI0eOFH7//Xc7PSPHd6nX/NSpUy3+bN+6davtHH99zS/388mdXer1rqmpEcaPHy90795d8PDwEHr16iXMnj37ohDF93jbXO7niiAIwr///W/By8tLqKysbPYcfI+3Xms+D9bW1gpz5swRunXrJnh7ewtTpkwRioqKLjrPhY9pzc9/e5MIgiB0zZgaERERERERWXHNFxERERERkR0wfBEREREREdkBwxcREREREZEdMHwRERERERHZAcMXERERERGRHTB8ERERERER2QHDFxERERERkR0wfBEREREREdkBwxcREVEbjR49Go8//rjYZRARkZNh+CIiIiIiIrIDhi8iIiIiIiI7YPgiIiLqoB9//BEqlQqrVq0SuxQiInJgcrELICIicmZffPEFHn74YXzxxRe44YYbxC6HiIgcGEe+iIiI2mnJkiWYM2cOfvjhBwYvIiK6LI58ERERtcM333yD0tJS/PbbbxgxYoTY5RARkRPgyBcREVE7DB06FN27d8fy5cshCILY5RARkRNg+CIiImqHqKgobN26Fd999x0effRRscshIiInwGmHRERE7dSvXz9s3boVo0ePhlwux+LFi8UuiYiIHBjDFxERUQf0798fW7ZswejRoyGTyfDPf/5T7JKIiMhBSQROVCciIiIiIupyXPNFRERERERkBwxfREREREREdsDwRUREREREZAcMX0RERERERHbA8EVERERERGQHDF9ERERERER2wPBFRERERERkBwxfREREREREdsDwRUREREREZAcMX0RERERERHbA8EVERERERGQH/w++WFmyEZCFwAAAAABJRU5ErkJggg==", + "text/plain": [ + "<Figure size 1000x500 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from utils.process_image import save_plot_as_image\n", + "\n", + "save_plot_as_image(k_values, accuracies, 'accuracy', 'k', 'images/knn_accuracy.png')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[ 0.328055 , -0.09295718, -0.33842638],\n", + " [-0.11653052, 0.58325438, -0.13258186],\n", + " [ 0.18900546, 0.51515747, -0.76910745]]),\n", + " array([[-0.00083548, -0.00088441, 0.00035065]]),\n", + " array([[ 0.06636073, 0.91268095],\n", + " [ 0.24104642, 0.93511262],\n", + " [-0.10002242, -0.39107094]]),\n", + " array([[-0.00142651, -0.0036116 ]]),\n", + " 0.08808324100066224)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from utils.learn_once_mse import learn_once_mse\n", + "\n", + "N = 30 # number of input data\n", + "d_in = 3 # input dimension\n", + "d_h = 3 # number of neurons in the hidden layer\n", + "d_out = 2 # output dimension (number of neurons of the output layer)\n", + "\n", + "# Random initialization of the network weights and biaises\n", + "w1 = 2 * np.random.rand(d_in, d_h) - 1 # first layer weights\n", + "b1 = np.zeros((1, d_h)) # first layer biaises\n", + "w2 = 2 * np.random.rand(d_h, d_out) - 1 # second layer weights\n", + "b2 = np.zeros((1, d_out)) # second layer biaises\n", + "\n", + "data = np.random.rand(N, d_in) # create a random data\n", + "targets = np.random.rand(N, d_out) # create a random targets\n", + "\n", + "learn_once_mse(w1, b1, w2, b2, data, targets, 0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Binary Cross Entropy" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 0.],\n", + " [0., 0., 1.],\n", + " [1., 0., 0.]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from utils.one_hot import one_hot\n", + "\n", + "one_hot(np.array([1,2,0]), 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[ 0.3256724 , -0.09540915, -0.33746996],\n", + " [-0.11805462, 0.58166566, -0.13193784],\n", + " [ 0.18724356, 0.51319216, -0.76834097]]),\n", + " array([[-0.00488305, -0.00512345, 0.00203958]]),\n", + " array([[ 0.06319307, 0.90284858],\n", + " [ 0.23713482, 0.92465898],\n", + " [-0.1015984 , -0.39743855]]),\n", + " array([[-0.00710872, -0.02124436]]),\n", + " 0.7295273614523309)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from utils.learn_once_cross_entropy import learn_once_cross_entropy\n", + "\n", + "learn_once_cross_entropy(w1, b1, w2, b2, data, targets, 0.1)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.65it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=0, loss=0.32536565848357263\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.07it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=1, loss=0.3121928702945571\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.83it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=2, loss=0.30543033970759537\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.68it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=3, loss=0.30164690368706953\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.90it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=4, loss=0.2988765995063212\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 49.07it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=5, loss=0.29671164791713306\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.40it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=6, loss=0.29488462530706594\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.09it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=7, loss=0.29324902660111213\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.29it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=8, loss=0.29213942600333603\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.94it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=9, loss=0.29089870566858717\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.40it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=10, loss=0.2895862699722007\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.09it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=11, loss=0.2884022627687656\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.28it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=12, loss=0.28733885125291764\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.49it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=13, loss=0.28634791216387434\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.18it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=14, loss=0.2854148514424351\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.90it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=15, loss=0.28452080362101867\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.99it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=16, loss=0.2836357456217646\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.99it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=17, loss=0.28274151613860843\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.90it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=18, loss=0.281839854415075\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 48.01it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=19, loss=0.28095542557069053\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.96it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=20, loss=0.2800934496802053\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.45it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=21, loss=0.27931142585321705\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.86it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=22, loss=0.27862350963341603\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.84it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=23, loss=0.2780074274940075\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.73it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=24, loss=0.27742971683164996\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.90it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=25, loss=0.2768283124909597\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.22it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=26, loss=0.2762288972410761\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.30it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=27, loss=0.27566807003953936\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.90it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=28, loss=0.27515791265861705\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.43it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=29, loss=0.2746960225210329\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.30it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=30, loss=0.2742732930281749\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.47it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=31, loss=0.2738820269527825\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.39it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=32, loss=0.2735185848652638\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.34it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=33, loss=0.27318125599929644\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.03it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=34, loss=0.27286824262978615\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.17it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=35, loss=0.2725772806445788\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.26it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=36, loss=0.27230585256038187\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.63it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=37, loss=0.27205124966222294\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.32it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=38, loss=0.2718105212711061\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.01it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=39, loss=0.2715805048412975\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.55it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=40, loss=0.2713579421724202\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.75it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=41, loss=0.2711396156588283\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.51it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=42, loss=0.2709225155028859\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.47it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=43, loss=0.2707040834217827\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.42it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=44, loss=0.27048249024427656\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.65it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=45, loss=0.2702568222700594\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.82it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=46, loss=0.27002708728127284\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.43it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=47, loss=0.2697940526835046\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.13it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=48, loss=0.2695589991244579\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.92it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=49, loss=0.26932347844910215\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.84it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=50, loss=0.2690891216931801\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.17it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=51, loss=0.26885749099705014\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.09it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=52, loss=0.26862995216471686\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.32it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=53, loss=0.2684075698601837\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.03it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=54, loss=0.26819105416268263\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.66it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=55, loss=0.26798077591671593\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.89it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=56, loss=0.26777683118236534\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.74it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=57, loss=0.26757911457047184\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.86it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=58, loss=0.2673873741424862\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 44.93it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=59, loss=0.26720124679735535\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.88it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=60, loss=0.2670202876161004\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.89it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=61, loss=0.26684400316153295\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.07it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=62, loss=0.2666718871083877\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.75it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=63, loss=0.2665034496901216\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.97it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=64, loss=0.26633823551333574\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.96it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=65, loss=0.2661758317738733\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.86it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=66, loss=0.2660158723596366\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.93it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=67, loss=0.2658580417813423\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 43.28it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=68, loss=0.2657020813316263\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.51it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=69, loss=0.2655477993399877\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.39it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=70, loss=0.265395083591377\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 43.41it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=71, loss=0.26524390709925844\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.23it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=72, loss=0.26509431618523055\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.01it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=73, loss=0.2649463967492245\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.89it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=74, loss=0.2648002256355748\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.63it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=75, loss=0.26465582150033307\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.41it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=76, loss=0.2645131100486962\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.51it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=77, loss=0.26437191201743476\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.09it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=78, loss=0.26423195246053405\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.63it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=79, loss=0.2640928834531869\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.22it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=80, loss=0.2639543124721884\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.24it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=81, loss=0.263815831592953\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.97it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=82, loss=0.26367704366914124\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.65it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=83, loss=0.2635375811525412\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.35it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=84, loss=0.26339711410007394\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.96it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=85, loss=0.263255347272479\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 45.05it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=86, loss=0.26311201049702554\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.61it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=87, loss=0.26296684935829534\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.74it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=88, loss=0.2628196232828335\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.33it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=89, loss=0.26267011491754183\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.72it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=90, loss=0.26251814954775665\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.33it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=91, loss=0.2623636186728697\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.63it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=92, loss=0.26220650033019977\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 43.80it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=93, loss=0.26204687100089963\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.25it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=94, loss=0.26188490805869413\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.99it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=95, loss=0.26172088492855883\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.23it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=96, loss=0.26155516191390676\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.11it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=97, loss=0.2613881745000343\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 47.19it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=98, loss=0.26122041931305423\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 106/106 [00:02<00:00, 46.72it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch=99, loss=0.26105243706027714\n" + ] + } + ], + "source": [ + "from utils.mlp_training import run_mlp_training\n", + "\n", + "split_factor = 0.9\n", + "d_h = 64\n", + "learning_rate = 0.1\n", + "num_epochs = 100\n", + "batch_size = 512\n", + "\n", + "data, labels = read_cifar('data/cifar-10-batches-py')\n", + "data_train, labels_train, data_test, labels_test = split_dataset(data, labels, split_factor)\n", + "losses, test_accuracy = run_mlp_training(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epochs, batch_size)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test accuracy: 0.3631666666666667\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 1000x500 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from utils.process_image import save_plot_as_image\n", + "print('Test accuracy:', test_accuracy)\n", + "save_plot_as_image(np.arange(1, len(losses)+1), losses, 'Loss', 'Epoch', 'images/mlp_loss.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Bonus: comparaison / vérification avec le même modèle en utilisant la librairie Tensorflow" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/100\n", + "95/95 [==============================] - 3s 12ms/step - loss: 0.3572 - accuracy: 0.1308 - val_loss: 0.3235 - val_accuracy: 0.1633\n", + "Epoch 2/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3224 - accuracy: 0.1646 - val_loss: 0.3208 - val_accuracy: 0.1948\n", + "Epoch 3/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3197 - accuracy: 0.2022 - val_loss: 0.3179 - val_accuracy: 0.2209\n", + "Epoch 4/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3167 - accuracy: 0.2277 - val_loss: 0.3149 - val_accuracy: 0.2459\n", + "Epoch 5/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3138 - accuracy: 0.2442 - val_loss: 0.3121 - val_accuracy: 0.2604\n", + "Epoch 6/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3111 - accuracy: 0.2553 - val_loss: 0.3096 - val_accuracy: 0.2687\n", + "Epoch 7/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3088 - accuracy: 0.2634 - val_loss: 0.3073 - val_accuracy: 0.2761\n", + "Epoch 8/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3066 - accuracy: 0.2700 - val_loss: 0.3053 - val_accuracy: 0.2830\n", + "Epoch 9/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.3047 - accuracy: 0.2767 - val_loss: 0.3034 - val_accuracy: 0.2874\n", + "Epoch 10/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.3028 - accuracy: 0.2827 - val_loss: 0.3015 - val_accuracy: 0.2946\n", + "Epoch 11/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.3011 - accuracy: 0.2890 - val_loss: 0.2998 - val_accuracy: 0.3002\n", + "Epoch 12/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2994 - accuracy: 0.2943 - val_loss: 0.2982 - val_accuracy: 0.3063\n", + "Epoch 13/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2979 - accuracy: 0.3009 - val_loss: 0.2967 - val_accuracy: 0.3107\n", + "Epoch 14/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2965 - accuracy: 0.3026 - val_loss: 0.2954 - val_accuracy: 0.3191\n", + "Epoch 15/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2953 - accuracy: 0.3087 - val_loss: 0.2941 - val_accuracy: 0.3176\n", + "Epoch 16/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2941 - accuracy: 0.3121 - val_loss: 0.2929 - val_accuracy: 0.3213\n", + "Epoch 17/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2931 - accuracy: 0.3150 - val_loss: 0.2919 - val_accuracy: 0.3263\n", + "Epoch 18/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2920 - accuracy: 0.3173 - val_loss: 0.2910 - val_accuracy: 0.3283\n", + "Epoch 19/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2911 - accuracy: 0.3198 - val_loss: 0.2900 - val_accuracy: 0.3278\n", + "Epoch 20/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2902 - accuracy: 0.3223 - val_loss: 0.2891 - val_accuracy: 0.3306\n", + "Epoch 21/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2894 - accuracy: 0.3255 - val_loss: 0.2882 - val_accuracy: 0.3367\n", + "Epoch 22/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2886 - accuracy: 0.3272 - val_loss: 0.2875 - val_accuracy: 0.3359\n", + "Epoch 23/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2879 - accuracy: 0.3292 - val_loss: 0.2866 - val_accuracy: 0.3404\n", + "Epoch 24/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2872 - accuracy: 0.3316 - val_loss: 0.2859 - val_accuracy: 0.3387\n", + "Epoch 25/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2865 - accuracy: 0.3333 - val_loss: 0.2853 - val_accuracy: 0.3426\n", + "Epoch 26/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2859 - accuracy: 0.3348 - val_loss: 0.2846 - val_accuracy: 0.3420\n", + "Epoch 27/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2853 - accuracy: 0.3363 - val_loss: 0.2840 - val_accuracy: 0.3478\n", + "Epoch 28/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2847 - accuracy: 0.3382 - val_loss: 0.2834 - val_accuracy: 0.3448\n", + "Epoch 29/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2842 - accuracy: 0.3391 - val_loss: 0.2829 - val_accuracy: 0.3491\n", + "Epoch 30/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2837 - accuracy: 0.3415 - val_loss: 0.2824 - val_accuracy: 0.3465\n", + "Epoch 31/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2832 - accuracy: 0.3424 - val_loss: 0.2818 - val_accuracy: 0.3494\n", + "Epoch 32/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2827 - accuracy: 0.3446 - val_loss: 0.2813 - val_accuracy: 0.3489\n", + "Epoch 33/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2822 - accuracy: 0.3452 - val_loss: 0.2808 - val_accuracy: 0.3535\n", + "Epoch 34/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2818 - accuracy: 0.3465 - val_loss: 0.2804 - val_accuracy: 0.3524\n", + "Epoch 35/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2813 - accuracy: 0.3472 - val_loss: 0.2799 - val_accuracy: 0.3519\n", + "Epoch 36/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2809 - accuracy: 0.3489 - val_loss: 0.2795 - val_accuracy: 0.3533\n", + "Epoch 37/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2805 - accuracy: 0.3501 - val_loss: 0.2791 - val_accuracy: 0.3530\n", + "Epoch 38/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2801 - accuracy: 0.3502 - val_loss: 0.2787 - val_accuracy: 0.3531\n", + "Epoch 39/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2797 - accuracy: 0.3513 - val_loss: 0.2784 - val_accuracy: 0.3569\n", + "Epoch 40/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2793 - accuracy: 0.3533 - val_loss: 0.2779 - val_accuracy: 0.3593\n", + "Epoch 41/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2790 - accuracy: 0.3531 - val_loss: 0.2776 - val_accuracy: 0.3578\n", + "Epoch 42/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2786 - accuracy: 0.3549 - val_loss: 0.2772 - val_accuracy: 0.3548\n", + "Epoch 43/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2783 - accuracy: 0.3555 - val_loss: 0.2768 - val_accuracy: 0.3580\n", + "Epoch 44/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2779 - accuracy: 0.3565 - val_loss: 0.2765 - val_accuracy: 0.3576\n", + "Epoch 45/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2776 - accuracy: 0.3575 - val_loss: 0.2762 - val_accuracy: 0.3593\n", + "Epoch 46/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2773 - accuracy: 0.3589 - val_loss: 0.2758 - val_accuracy: 0.3574\n", + "Epoch 47/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2770 - accuracy: 0.3592 - val_loss: 0.2756 - val_accuracy: 0.3598\n", + "Epoch 48/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2767 - accuracy: 0.3606 - val_loss: 0.2752 - val_accuracy: 0.3622\n", + "Epoch 49/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2764 - accuracy: 0.3623 - val_loss: 0.2750 - val_accuracy: 0.3578\n", + "Epoch 50/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2761 - accuracy: 0.3621 - val_loss: 0.2747 - val_accuracy: 0.3615\n", + "Epoch 51/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2758 - accuracy: 0.3628 - val_loss: 0.2744 - val_accuracy: 0.3620\n", + "Epoch 52/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2755 - accuracy: 0.3637 - val_loss: 0.2741 - val_accuracy: 0.3609\n", + "Epoch 53/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2752 - accuracy: 0.3647 - val_loss: 0.2739 - val_accuracy: 0.3619\n", + "Epoch 54/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2749 - accuracy: 0.3649 - val_loss: 0.2736 - val_accuracy: 0.3641\n", + "Epoch 55/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2747 - accuracy: 0.3650 - val_loss: 0.2733 - val_accuracy: 0.3652\n", + "Epoch 56/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2744 - accuracy: 0.3666 - val_loss: 0.2731 - val_accuracy: 0.3619\n", + "Epoch 57/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2742 - accuracy: 0.3658 - val_loss: 0.2728 - val_accuracy: 0.3670\n", + "Epoch 58/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2739 - accuracy: 0.3672 - val_loss: 0.2726 - val_accuracy: 0.3665\n", + "Epoch 59/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2736 - accuracy: 0.3671 - val_loss: 0.2724 - val_accuracy: 0.3656\n", + "Epoch 60/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2734 - accuracy: 0.3682 - val_loss: 0.2721 - val_accuracy: 0.3674\n", + "Epoch 61/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2732 - accuracy: 0.3694 - val_loss: 0.2719 - val_accuracy: 0.3665\n", + "Epoch 62/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2729 - accuracy: 0.3701 - val_loss: 0.2716 - val_accuracy: 0.3681\n", + "Epoch 63/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2727 - accuracy: 0.3694 - val_loss: 0.2715 - val_accuracy: 0.3656\n", + "Epoch 64/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2724 - accuracy: 0.3711 - val_loss: 0.2712 - val_accuracy: 0.3700\n", + "Epoch 65/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2722 - accuracy: 0.3710 - val_loss: 0.2710 - val_accuracy: 0.3717\n", + "Epoch 66/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2720 - accuracy: 0.3714 - val_loss: 0.2708 - val_accuracy: 0.3711\n", + "Epoch 67/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2718 - accuracy: 0.3712 - val_loss: 0.2706 - val_accuracy: 0.3706\n", + "Epoch 68/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2716 - accuracy: 0.3729 - val_loss: 0.2704 - val_accuracy: 0.3687\n", + "Epoch 69/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2714 - accuracy: 0.3725 - val_loss: 0.2703 - val_accuracy: 0.3715\n", + "Epoch 70/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2711 - accuracy: 0.3731 - val_loss: 0.2699 - val_accuracy: 0.3739\n", + "Epoch 71/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2709 - accuracy: 0.3743 - val_loss: 0.2699 - val_accuracy: 0.3719\n", + "Epoch 72/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2707 - accuracy: 0.3743 - val_loss: 0.2696 - val_accuracy: 0.3722\n", + "Epoch 73/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2705 - accuracy: 0.3745 - val_loss: 0.2694 - val_accuracy: 0.3733\n", + "Epoch 74/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2703 - accuracy: 0.3750 - val_loss: 0.2693 - val_accuracy: 0.3739\n", + "Epoch 75/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2701 - accuracy: 0.3766 - val_loss: 0.2690 - val_accuracy: 0.3739\n", + "Epoch 76/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2699 - accuracy: 0.3772 - val_loss: 0.2689 - val_accuracy: 0.3731\n", + "Epoch 77/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2697 - accuracy: 0.3774 - val_loss: 0.2688 - val_accuracy: 0.3743\n", + "Epoch 78/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2695 - accuracy: 0.3771 - val_loss: 0.2686 - val_accuracy: 0.3743\n", + "Epoch 79/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2693 - accuracy: 0.3772 - val_loss: 0.2684 - val_accuracy: 0.3761\n", + "Epoch 80/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2692 - accuracy: 0.3785 - val_loss: 0.2682 - val_accuracy: 0.3752\n", + "Epoch 81/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2690 - accuracy: 0.3792 - val_loss: 0.2681 - val_accuracy: 0.3748\n", + "Epoch 82/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2688 - accuracy: 0.3798 - val_loss: 0.2678 - val_accuracy: 0.3783\n", + "Epoch 83/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2686 - accuracy: 0.3804 - val_loss: 0.2677 - val_accuracy: 0.3774\n", + "Epoch 84/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2684 - accuracy: 0.3801 - val_loss: 0.2675 - val_accuracy: 0.3776\n", + "Epoch 85/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2683 - accuracy: 0.3810 - val_loss: 0.2674 - val_accuracy: 0.3783\n", + "Epoch 86/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2681 - accuracy: 0.3808 - val_loss: 0.2672 - val_accuracy: 0.3772\n", + "Epoch 87/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2679 - accuracy: 0.3821 - val_loss: 0.2671 - val_accuracy: 0.3774\n", + "Epoch 88/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2678 - accuracy: 0.3817 - val_loss: 0.2670 - val_accuracy: 0.3798\n", + "Epoch 89/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2676 - accuracy: 0.3830 - val_loss: 0.2668 - val_accuracy: 0.3789\n", + "Epoch 90/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2674 - accuracy: 0.3829 - val_loss: 0.2666 - val_accuracy: 0.3819\n", + "Epoch 91/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2673 - accuracy: 0.3840 - val_loss: 0.2665 - val_accuracy: 0.3822\n", + "Epoch 92/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2671 - accuracy: 0.3848 - val_loss: 0.2664 - val_accuracy: 0.3813\n", + "Epoch 93/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2669 - accuracy: 0.3848 - val_loss: 0.2662 - val_accuracy: 0.3789\n", + "Epoch 94/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2668 - accuracy: 0.3856 - val_loss: 0.2660 - val_accuracy: 0.3824\n", + "Epoch 95/100\n", + "95/95 [==============================] - 1s 8ms/step - loss: 0.2666 - accuracy: 0.3864 - val_loss: 0.2659 - val_accuracy: 0.3841\n", + "Epoch 96/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2665 - accuracy: 0.3864 - val_loss: 0.2658 - val_accuracy: 0.3839\n", + "Epoch 97/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2663 - accuracy: 0.3868 - val_loss: 0.2656 - val_accuracy: 0.3819\n", + "Epoch 98/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2662 - accuracy: 0.3868 - val_loss: 0.2655 - val_accuracy: 0.3819\n", + "Epoch 99/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2660 - accuracy: 0.3884 - val_loss: 0.2654 - val_accuracy: 0.3815\n", + "Epoch 100/100\n", + "95/95 [==============================] - 1s 9ms/step - loss: 0.2658 - accuracy: 0.3877 - val_loss: 0.2652 - val_accuracy: 0.3830\n", + "188/188 [==============================] - 1s 3ms/step - loss: 0.2656 - accuracy: 0.4020\n", + "test_accuracy=0.4020000100135803\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 1000x500 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import tensorflow as tf\n", + "from utils.read_cifar import read_cifar\n", + "from utils.split_dataset import split_dataset\n", + "\n", + "split_factor = 0.9\n", + "d_h = 64\n", + "learning_rate = 0.1\n", + "num_epochs = 100\n", + "batch_size = 512\n", + "\n", + "data, labels = read_cifar('data/cifar-10-batches-py')\n", + "data_train, labels_train, data_test, labels_test = split_dataset(data, labels, split_factor)\n", + "labels_train = tf.keras.utils.to_categorical(labels_train)\n", + "labels_test = tf.keras.utils.to_categorical(labels_test)\n", + "\n", + "model = tf.keras.models.Sequential([\n", + " tf.keras.layers.Dense(d_h, activation='sigmoid'),\n", + " tf.keras.layers.Dense(10, activation='sigmoid')\n", + "])\n", + "model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=learning_rate),\n", + " loss=tf.keras.losses.BinaryCrossentropy(),\n", + " metrics=['accuracy'])\n", + "history = model.fit(data_train, labels_train, epochs=num_epochs, batch_size=batch_size, validation_split=0.1)\n", + "test_loss, test_accuracy = model.evaluate(data_test, labels_test)\n", + "\n", + "print(f'test_accuracy={test_accuracy}')\n", + "loss = history.history['loss']\n", + "epochs = np.arange(1, len(loss)+1)\n", + "save_plot_as_image(epochs, loss, 'Loss', 'Epoch', 'images/mlp_loss_tf.png')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(6000, 10)\n", + "[7 9 4 ... 3 9 0]\n", + "188/188 [==============================] - 0s 2ms/step\n" + ] + }, + { + "data": { + "text/plain": [ + "<AxesSubplot: >" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 2 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "print(labels_test.shape)\n", + "print(labels_test.argmax(axis=1))\n", + "cm = tf.math.confusion_matrix(labels_test.argmax(axis=1), model.predict(data_test).argmax(axis=1))\n", + "sns.heatmap(cm, annot=True, fmt='d')" + ] + } + ], + "metadata": { + "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.10.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/images/knn_accuracy.png b/images/knn_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..d0572c403d00ffafb7487486c3331ef705c5876e GIT binary patch literal 33180 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 literal 0 HcmV?d00001 diff --git a/images/mlp_loss.png b/images/mlp_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9f7dcd4d8b63c61c21e45d46d4d9cc82c4d835 GIT binary patch literal 23034 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 literal 0 HcmV?d00001 diff --git a/images/mlp_loss_tf.png b/images/mlp_loss_tf.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0165fd98fd248e70c795ffac2edfb979b19830 GIT binary patch literal 21189 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 a|M?>yXUb{(UbY<6r1y07b6Mw<&;$TQyp_xV literal 0 HcmV?d00001 diff --git a/utils/binary_cross_entropy.py b/utils/binary_cross_entropy.py new file mode 100644 index 0000000..5622383 --- /dev/null +++ b/utils/binary_cross_entropy.py @@ -0,0 +1,8 @@ +import numpy as np + +def binary_cross_entropy(predictions: np.ndarray, targets: np.ndarray): + # compute the binary cross-entropy loss (1e-7 is added to avoid log(0)) + predictions = np.clip(predictions, 1e-7, 1 - 1e-7) + term_0 = (1-targets) * np.log(1-predictions) + term_1 = targets * np.log(predictions) + return -np.mean(term_0+term_1) \ No newline at end of file diff --git a/utils/distance_matrix.py b/utils/distance_matrix.py new file mode 100644 index 0000000..7895932 --- /dev/null +++ b/utils/distance_matrix.py @@ -0,0 +1,8 @@ +import numpy as np + +def distance_matrix(X: np.ndarray, Y: np.ndarray): + # compute the distance matrix between two sets of samples + x2 = np.sum(X**2, axis=1, keepdims=True) + y2 = np.sum(Y**2, axis=1, keepdims=True) + xy = X.dot(Y.T) + return np.sqrt(x2 - 2 * xy + y2.T) \ No newline at end of file diff --git a/utils/evaluate_knn.py b/utils/evaluate_knn.py new file mode 100644 index 0000000..2096045 --- /dev/null +++ b/utils/evaluate_knn.py @@ -0,0 +1,10 @@ +from utils.knn_predict import knn_predict +from utils.distance_matrix import distance_matrix +import numpy as np + +def evaluate_knn(data_train, labels_train, data_test, labels_test, k): + # compute the accuracy of the kNN model + dists = distance_matrix(data_test, data_train) + y_pred = knn_predict(dists, labels_train, k) + accuracy = np.mean(y_pred == labels_test) + return accuracy \ No newline at end of file diff --git a/utils/forward_pass.py b/utils/forward_pass.py new file mode 100644 index 0000000..b5dad28 --- /dev/null +++ b/utils/forward_pass.py @@ -0,0 +1,10 @@ +from utils.sigmoid import sigmoid +import numpy as np + +def forward_pass(w1, b1, w2, b2, data): + # compute the forward pass of the MLP with sigmoid activations + z1 = np.matmul(data, w1) + b1 + a1 = sigmoid(z1) + z2 = np.matmul(a1, w2) + b2 + a2 = sigmoid(z2) + return a1, a2 \ No newline at end of file diff --git a/utils/knn_predict.py b/utils/knn_predict.py new file mode 100644 index 0000000..5e6ca7c --- /dev/null +++ b/utils/knn_predict.py @@ -0,0 +1,11 @@ +import numpy as np + +def knn_predict(dists: np.ndarray, labels_train, k): + # predict labels based on k nearest neighbors + n = dists.shape[0] + y_pred = np.zeros(n, dtype=np.int64) + for i in range(n): + closest_y = [] + closest_y = labels_train[np.argsort(dists[i])[:k]] + y_pred[i] = np.argmax(np.bincount(closest_y)) + return y_pred \ No newline at end of file diff --git a/utils/learn_once_cross_entropy.py b/utils/learn_once_cross_entropy.py new file mode 100644 index 0000000..8ce9c48 --- /dev/null +++ b/utils/learn_once_cross_entropy.py @@ -0,0 +1,25 @@ +import numpy as np +from utils.forward_pass import forward_pass +from utils.binary_cross_entropy import binary_cross_entropy + +def adjust_weights_binary_cross_entropy(a1, a2, w1, b1, w2, b2, data, targets, learning_rate): + batch_size = data.shape[0] + dCdZ2 = a2 - targets + dCdW2 = np.matmul(a1.T, dCdZ2) / batch_size + dCdB2 = np.sum(dCdZ2, axis=0, keepdims=True) / batch_size + dCdA1 = np.matmul(dCdZ2, w2.T) + dCdZ1 = dCdA1 * a1 * (1 - a1) + dCdW1 = np.matmul(data.T, dCdZ1) / batch_size + dCdB1 = np.sum(dCdZ1, axis=0, keepdims=True) / batch_size + + w2 -= learning_rate * dCdW2 + w1 -= learning_rate * dCdW1 + b1 -= learning_rate * dCdB1 + b2 -= learning_rate * dCdB2 + return w1, b1, w2, b2 + +def learn_once_cross_entropy(w1,b1,w2,b2,data,targets,learning_rate): + a1, a2 = forward_pass(w1, b1, w2, b2, data) + loss = binary_cross_entropy(a2, targets) + w1, b1, w2, b2 = adjust_weights_binary_cross_entropy(a1, a2, w1, b1, w2, b2, data, targets, learning_rate) + return w1, b1, w2, b2, loss \ No newline at end of file diff --git a/utils/learn_once_mse.py b/utils/learn_once_mse.py new file mode 100644 index 0000000..71d33dc --- /dev/null +++ b/utils/learn_once_mse.py @@ -0,0 +1,27 @@ +import numpy as np +from utils.forward_pass import forward_pass + +def adjust_weights_mse(a1, a2, w1, b1, w2, b2, data, targets, learning_rate): + batch_size = data.shape[0] + N_out = targets.shape[1] + dCdA2 = 2 * (a2 - targets) / N_out + dCdZ2 = dCdA2 * a2 * (1 - a2) + dCdW2 = np.matmul(a1.T, dCdZ2) / batch_size + dCdB2 = np.sum(dCdZ2, axis=0, keepdims=True) / batch_size + dCdA1 = np.matmul(dCdZ2, w2.T) + dCdZ1 = dCdA1 * a1 * (1 - a1) + dCdW1 = np.matmul(data.T, dCdZ1) / batch_size + dCdB1 = np.sum(dCdZ1, axis=0, keepdims=True) / batch_size + + w2 -= learning_rate * dCdW2 + w1 -= learning_rate * dCdW1 + b1 -= learning_rate * dCdB1 + b2 -= learning_rate * dCdB2 + return w1, b1, w2, b2 + + +def learn_once_mse(w1: np.ndarray, b1: np.ndarray, w2: np.ndarray, b2: np.ndarray, data: np.ndarray, targets: np.ndarray, learning_rate: float): + a1, a2 = forward_pass(w1, b1, w2, b2, data) + loss = np.mean(np.square(a2 - targets)) + w1, b1, w2, b2 = adjust_weights_mse(a1, a2, w1, b1, w2, b2, data, targets, learning_rate) + return w1, b1, w2, b2, loss \ No newline at end of file diff --git a/utils/mlp_training.py b/utils/mlp_training.py new file mode 100644 index 0000000..8d3da4a --- /dev/null +++ b/utils/mlp_training.py @@ -0,0 +1,42 @@ +import tqdm +import numpy as np +from utils.forward_pass import forward_pass +from utils.one_hot import one_hot +from utils.learn_once_cross_entropy import learn_once_cross_entropy + + +def train_mlp(w1, b1, w2, b2, data_train, labels_train, learning_rate, num_epochs, batch_size, n_classes): + # train the MLP for num_epochs epochs, using batches of size batch_size + losses = [] + for epoch in range(num_epochs): + for i in tqdm.tqdm(range(0, data_train.shape[0], batch_size)): + data = data_train[i:i+batch_size] + targets = one_hot(labels_train[i:i+batch_size], n_classes) + w1, b1, w2, b2, loss = learn_once_cross_entropy(w1, b1, w2, b2, data, targets, learning_rate) + losses.append(loss) + print(f'epoch={epoch}, loss={loss}') + return losses, w1, b1, w2, b2 + +def test_mlp(w1, b1, w2, b2, data_test, labels_test): + # test the MLP on data_test, and return the accuracy + _, a2 = forward_pass(w1, b1, w2, b2, data_test) + predictions = np.argmax(a2, axis=1) + test_accuracy = np.mean(predictions == labels_test) + return test_accuracy + +def initialize_mlp(d_in, d_h, d_out): + # initialize the weights and biases of the MLP + w1 = 2 * np.random.rand(d_in, d_h) - 1 + b1 = np.zeros((1, d_h)) + w2 = 2 * np.random.rand(d_h, d_out) - 1 + b2 = np.zeros((1, d_out)) + return w1, b1, w2, b2 + +def run_mlp_training(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epochs, batch_size, n_classes = 10): + # run the training and testing of the MLP on data_train and data_test + d_in = data_train.shape[1] + d_out = np.max(labels_train) + 1 + w1, b1, w2, b2 = initialize_mlp(d_in, d_h, d_out) + losses, w1, b1, w2, b2 = train_mlp(w1, b1, w2, b2, data_train, labels_train, learning_rate, num_epochs, batch_size, n_classes) + test_accuracy = test_mlp(w1, b1, w2, b2, data_test, labels_test) + return losses, test_accuracy \ No newline at end of file diff --git a/utils/one_hot.py b/utils/one_hot.py new file mode 100644 index 0000000..112ef85 --- /dev/null +++ b/utils/one_hot.py @@ -0,0 +1,8 @@ +import numpy as np + +def one_hot(labels: np.ndarray, n_classes: int): + # convert an array of labels to a one-hot representation + n = labels.shape[0] + one_hot_labels = np.zeros((n, n_classes)) + one_hot_labels[np.arange(n), labels] = 1 + return one_hot_labels \ No newline at end of file diff --git a/utils/process_image.py b/utils/process_image.py new file mode 100644 index 0000000..c553733 --- /dev/null +++ b/utils/process_image.py @@ -0,0 +1,17 @@ +import matplotlib.pyplot as plt +def plot_image_with_label(img, label): + # plot image with label + plt.imshow(img) + plt.title(label) + plt.show() + +def save_plot_as_image(X, Y, y_label, x_label, save_path): + # plot and save image as png + plt.figure(figsize=(10,5)) + plt.plot(X, Y) + plt.ylabel(y_label) + plt.xlabel(x_label) + plt.savefig(save_path) + plt.show() + plt.close() + \ No newline at end of file diff --git a/utils/read_cifar.py b/utils/read_cifar.py new file mode 100644 index 0000000..dff0e6c --- /dev/null +++ b/utils/read_cifar.py @@ -0,0 +1,24 @@ +import glob +import numpy as np +import pickle + +def read_cifar_batch(batch_path): + # read a batch of cifar data + with open(batch_path, 'rb') as f: + batch = pickle.load(f, encoding='bytes') + data=np.array(batch[b'data'],dtype=np.float32)/255.0 + labels=np.array(batch[b'labels'],dtype=np.int64) + + return data, labels + +def read_cifar(directory): + # read all cifar data in a directory + files = glob.glob(f'{directory}/*_batch*') + data = np.empty((0, 3072), dtype=np.float32) + labels = np.empty((0), dtype=np.int64) + for file in files: + batch_data, batch_labels = read_cifar_batch(file) + data = np.vstack((data, batch_data)) + labels = np.hstack((labels, batch_labels)) + #print(data.shape, labels.shape) + return data, labels diff --git a/utils/sigmoid.py b/utils/sigmoid.py new file mode 100644 index 0000000..0aae9d1 --- /dev/null +++ b/utils/sigmoid.py @@ -0,0 +1,3 @@ +import numpy as np +def sigmoid(x): + return 1 / (1 + np.exp(-x)) \ No newline at end of file diff --git a/utils/split_dataset.py b/utils/split_dataset.py new file mode 100644 index 0000000..497798d --- /dev/null +++ b/utils/split_dataset.py @@ -0,0 +1,17 @@ +import numpy as np + +def split_dataset(data, labels, split: float)-> (np.ndarray, np.ndarray, np.ndarray, np.ndarray): + # split dataset into train and test + assert data.shape[0] == labels.shape[0] + # shuffle data + indices = np.arange(data.shape[0]) + np.random.shuffle(indices) + data = data[indices] + labels = labels[indices] + # split data + split_index = int(data.shape[0] * split) + train_data = data[:split_index] + train_labels = labels[:split_index] + test_data = data[split_index:] + test_labels = labels[split_index:] + return train_data, train_labels, test_data, test_labels \ No newline at end of file -- GitLab