{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# L'esempio di costruzione, addestramento e uso di una semplice rete neurale per leggere cifre scritte a mano\n", "Luca Mari, Dennis Remigio, aggiornamento maggio 2024\n", "\n", "Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 4.0 Internazionale. \n", "\n", "\n", "[i file di questa attività: [mnist.ipynb](mnist.ipynb), [mnistutils.py](mnistutils.py)]\n", "\n", "**Obiettivi**: comprendere la struttura di una semplice rete neurale, il suo addestramento e il suo funzionamento, per come specificati in Python mediante un modulo di alto livello come `PyTorch`. \n", "**Precompetenze**: basi di Python (il codice Python è ovunque semplice, perché richiama funzioni che nascondono molti dettagli, salvo che in alcuni punti in cui i dettagli stessi sono considerati di particolare interesse).\n", "\n", "1. Il dataset \n", "2. Prima opzione: un *MultiLayer Perceptron* \n", "3. Un miglioramento del metodo di classificazione \n", "4. Seconda opzione: una *Convolutional Neural Network*\n", "\n", "> Per eseguire questo notebook, supponiamo con VSCode, occorre:\n", "> * installare un interprete Python\n", "> * scaricare da https://code.visualstudio.com/download e installare VSCode\n", "> * eseguire VSCode e attivare le estensioni per Python e Jupyter\n", "> * ancora in VSCode:\n", "> * creare una cartella di lavoro e renderla la cartella corrente\n", "> * copiare nella cartella questo notebook e aprirlo\n", "> * creare un ambiente virtuale locale Python (Select Kernel | Python Environments | Create Python Environment | Venv, e scegliere un interprete Python):\n", "> * installare i moduli Python richiesti, eseguendo dal terminale: \n", "> `pip install torch torchvision torchsummary numpy matplotlib`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### 1. Il dataset\n", "\n", "La rete che costruiremo dovrà imparare a riconoscere cifre scritte a mano, e quindi, concretamente, a classificare immagini, appunto di cifre scritte a mano, in categorie, ognuna relativa a una delle 10 cifre. Per questo useremo sia per l'addestramento sia per il funzionamento della rete [il dataset MNIST](https://en.wikipedia.org/wiki/MNIST_database), in cui ogni immagine, digitalizzata in una matrice di 28x28 punti in cui a ogni punto è associato un colore nella scala dei grigi, è l'immagine di una cifra.\n", "\n", "Dopo aver importato i moduli Python necessari, carichiamo le immagini del dataset MNIST, distinguendo tra _training set_ e _test set_ (la prima volta i file con le immagini saranno scaricati dal web e copiati in una cartella locale)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numero di immagini nel training set: 60000\n", "Numero di immagini nel test set: 10000\n" ] } ], "source": [ "from mnistutils import load_data, show_images, train_loop, test_loop, test_with_prob, test_loop_with_trace \n", "\n", "train_data, test_data = load_data()\n", "\n", "print(f\"Numero di immagini nel training set: {len(train_data)}\")\n", "print(f\"Numero di immagini nel test set: {len(test_data)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Possiamo perciò mostrare qualche esempio delle immagini che contengono le cifre che vogliamo addestrare la rete a riconoscere, insieme con l'indicazione della cifre corretta, informazione anch'essa contenuta nei file che abbiamo scaricato." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_images(train_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La varietà e l'irregolarità della scrittura a mano in queste immagini suggeriscono che ideare un algoritmo per risolvere il nostro problema di classificazione e poi implementarlo in un programma potrebbe essere estremamente complesso, come infatti confermano i limitati risultati ottenuti dai sistemi software sviluppati in accordo a questa strategia. \n", "Cerchiamo dunque invece di risolvere il problema con la logica del _machine learning_, costruendo e poi addestrando una rete neurale artificiale. Lo faremo partendo da una rete con una struttura molto semplice (una rete _fully connected_, o _MultiLayer Perceptron_, MLP), per passare poi a una rete più complessa (una _Convolutional Neural Network_, CNN).\n", "\n", "\n", "### 2. Prima opzione: un *MultiLayer Perceptron*\n", "\n", "Cominciamo a progettare la rete in accordo all'opzione più semplice, dunque come un *MultiLayer Perceptron*, definendo una classe che eredita da `torch.Module` e inizializzando gli strati (*layer*) della rete nel costruttore della classe:\n", "* lo strato di input contiene 28*28 neuroni, dunque uno per ogni punto di un'immagine, ognuno di essi connesso a ognuno dei neuroni del primo strato nascosto;\n", "* il primo strato nascosto contiene 512 neuroni, ognuno di essi connesso a ognuno dei neuroni del secondo strato nascosto;\n", "* il secondo strato nascosto contiene 512 neuroni, ognuno di essi connesso a ognuno dei neuroni dello strato di output;\n", "* lo strato di output contiene 10 neuroni, uno per ogni categoria in cui classificare un'immagine, e quindi uno per ogni possibile cifra riconoscibile." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Questa è dunque la struttura della rete: \n", "\n", "![rete](net.drawio.svg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ogni volta che faremo funzionare questa rete sottoponendole un'immagine da classificare, e dunque assegnando un valore a ognuno dei 28x28 neuroni dello strato di input, otterremo un valore per ognuno dei 10 neuroni dello strato di output, dove l'insieme di questi 10 valori è una distribuzione di probabilità che rappresenta l'informazione inferenziale prodotta dalla rete sulla probabilità che la cifra nell'immagine sia uno 0, o un 1, e così via.\n", "\n", "Insieme con il suo costruttore `__init__`, implementiamo nella classe il metodo `forward`, che realizza le operazioni che devono essere compiute sui dati di input.\n", "\n", "Creiamo quindi la rete istanziando la classe. A questo punto i parametri della rete sono inizializzati come valori casuali." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Questa è dunque una rete con 669706 parametri.\n" ] } ], "source": [ "import torch\n", "from torch import nn\n", "\n", "class MLP_NN(nn.Module):\n", " \n", " def __init__(self):\n", " super().__init__()\n", " self.network = nn.Sequential( # Sequential() costruisce una successione di componenti\n", " nn.Linear(28*28, 512), # Linear(x, y) costruisce la connessione tra tutti gli x neuroni di uno strato e gli y neuroni dello strato successivo\n", " nn.ReLU(), # ReLU() stabilisce che la funzione di attivazione per il segnale in uscita dai neuroni sia ReLu (rectified linear unit)\n", " nn.Linear(512, 512),\n", " nn.ReLU(),\n", " nn.Linear(512, 10)\n", " )\n", "\n", " def forward(self, x):\n", " x = nn.Flatten()(x) # Flatten() rende unidimensionale l'input, adattando così le immagini allo strato di input\n", " return self.network(x)\n", " \n", "network = MLP_NN()\n", "\n", "num_MLP_params = sum(p.numel() for p in network.parameters())\n", "print(f\"Questa è dunque una rete con {num_MLP_params} parametri.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Già ora possiamo chiedere una previsione a questa rete, ancora prima di averla addestrata e quindi, come abbiamo detto, con i suoi parametri inizializzati come valori casuali, ma ovviamente non ne otterremo nulla di utile. Lo si vede dal confronto tra la cifra prevista (\"prev\") e quella corretta (\"corr\") per un'immagine scelta a caso, in cui come cifra prevista scegliamo quella più probabile nella distribuzione risultato dell'inferenza, cioè la moda della distribuzione. E infatti la distribuzione che otteniamo è praticamente uniforme, cioè è in condizioni \"di minima informazione\" (e quindi di massima ignoranza / entropia), a indicare che la rete può essere già fatta funzionare ma, senza addestramento, non è ancora in grado di riconoscere cifre." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_with_prob(test_data, network)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Per poter addestrare la rete, specifichiamone allora dei valori per gli iperparametri, oltre che la funzione di errore e la funzione di ottimizzazione per la _backpropagation_." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "learning_rate = 1e-3 # gli iperparametri per l'addestramento \n", "batch_size = 50\n", "num_batches = 500\n", "epochs = 20\n", "\n", "loss_fn = nn.CrossEntropyLoss()\n", "optimizer = torch.optim.SGD(network.parameters(), lr=learning_rate)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Addestriamo finalmente la rete in accordo a questi iperparametri e, contestualmente, mettiamola alla prova, in modo da valutare se sta davvero imparando a classificare correttamente le immagini che sottoponiamo." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoca\tAccuratezza\n", "1\t28.0%\n", "2\t46.0%\n", "3\t50.0%\n", "4\t64.0%\n", "5\t60.0%\n", "6\t68.0%\n", "7\t68.0%\n", "8\t68.0%\n", "9\t72.0%\n", "10\t74.0%\n", "11\t66.0%\n", "12\t78.0%\n", "13\t90.0%\n", "14\t80.0%\n", "15\t80.0%\n", "16\t82.0%\n", "17\t88.0%\n", "18\t84.0%\n", "19\t84.0%\n", "20\t88.0%\n", "Processo completato in 60.23 secondi\n" ] }, { "data": { "image/png": "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JnqDwMGmREREFsbwcZPzeRqUVtXAU+aCrsEKscshIiJySAwfN6m/5BIb6QtXF/7VEBERWQK/YW9SHz7YUp2IiMhyGD7qCILA8EFERGQFDB91LhWWoahcC7mrFD1ClWKXQ0RE5LAYPuqk1J316BveFnJXF5GrISIiclwMH3XqL7nwFlsiIiLLYvhA7XiPlMsc70FERGQNDB8Asm9UIk9TBTcXCfqEtxW7HCIiIofG8AEgJaMIANAz1AceMo73ICIisiSGD/x3sCnHexAREVkewwc42JSIiMianD585KorkXWjAlIJ0C+C4z2IiIgszenDR/1Zj24hSni7u4lcDRERkeNz+vDB8R5ERETW5fThg+M9iIiIrMupw8f1smpcLCgDAAyIZPggIiKyBqcOH4frznp0VnmjradM5GqIiIicg1OHD473ICIisj6nDh8c70FERGR9Ths+1BU6nMvTAOBkckRERNbktOHjSOYNCAIQ5e+JQIW72OUQERE5DZPCx5IlS9CzZ08oFAooFArEx8djy5Ytxterqqowd+5c+Pn5wcvLC0lJScjPzzd70eZgvOTCu1yIiIisyqTwERoainfffRepqak4cuQIhg4dirFjx+LMmTMAgOeffx4///wz1q1bhz179iAnJwfjx4+3SOGtVT/YNC6a4YOIiMiaJIIgCK1Zga+vLz744ANMmDABAQEBWLNmDSZMmAAAOH/+PLp06YLk5GQMHDjwrtan0WigVCqhVquhUChaU1qTyqtr0PON36A3CNj38n0IbdvGItshIiJyFqZ8f7d4zIder8d3332H8vJyxMfHIzU1FTqdDomJicZlYmJiEB4ejuTk5JZuxiKOZhVDbxDQzseDwYOIiMjKXE19w6lTpxAfH4+qqip4eXlh48aN6Nq1K44fPw6ZTAYfH58Gy6tUKuTl5TW5vurqalRXVxt/1mg0ppZkMt5iS0REJB6Tz3x07twZx48fR0pKCubMmYNp06bh7NmzLS5g4cKFUCqVxkdYWFiL13W3Ui7Xjfdg+CAiIrI6k8OHTCZDhw4dEBsbi4ULF6JXr174z3/+g6CgIGi1WpSUlDRYPj8/H0FBQU2ub8GCBVCr1cZHdna2yTthiiqdHseza2vkmQ8iIiLra3WfD4PBgOrqasTGxsLNzQ07d+40vpaWloasrCzEx8c3+X65XG68dbf+YUkn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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import time\n", "import matplotlib.pyplot as plt\n", "\n", "start_time = time.time()\n", "accuracy = []\n", "print(\"Epoca\\tAccuratezza\")\n", "for t in range(epochs):\n", " train_loop(train_data, batch_size, num_batches, network, loss_fn, optimizer)\n", " correct = test_loop(test_data, batch_size, network) / batch_size * 100\n", " print(f\"{t + 1}\\t{correct:.1f}%\")\n", " accuracy.append(correct)\n", "end_time = time.time()\n", "\n", "print(f\"Processo completato in {end_time - start_time:.2f} secondi\")\n", "plt.plot(range(epochs), accuracy)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A rete addestrata, possiamo valutare quantitativamente l'accuratezza delle previsioni che è in grado di fare." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuratezza: 85.1%\n" ] } ], "source": [ "batch_size = 1000\n", "correct = test_loop(test_data, batch_size, network) /batch_size * 100\n", "print(f\"Accuratezza: {correct:.1f}%\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "E possiamo ora anche valutare qualitativamente l'accuratezza delle previsioni, confrontando la cifra prevista (\"prev\") e quella corretta (\"corr\") per 10 immagini a caso." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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iA6Mj48jm82yvd9KUg62czgcKBQKmJychNVqZa9ns1kEg8GLstuSOBr9/f2oq6tj3w8MDKBYLDJ1ifNhsVig0WhQKBRw9dVXX/Dv3HrrrfjoRz/Kjor6+vrwz//8z4u65x07dgA4W90/nWw2i0AgAIvFsqjrLpRytF2psJZsR48lI5HIkl53LtaS3Vaacrbd5z73OTz66KP4j//4D7zrXe+6qGsthnK2nVQqxa5du9j3tNnhfO5nKShn253LSs51QPnb7uc//zkIISuaNgWUp93Gx8fxxBNPzJn6vn37dmzduhUnT55c1LUXQjnarr29HQBw9OhR3Hjjjez1o0ePolgssp8vhiWp0fjud78743vaSfCGG254098TiUR4xzvegaeeegqnT5+e9XO/3z/je71ej+uuuw6/+tWv8Itf/AJSqRS33nrrjPfMV8rr8ssvh9VqxeOPPz5DduzHP/4xCoUCrrnmmgteYykoR9uVCuVou0AgMGe+5H/9138BAHbu3HnBa1ws5Wi3UqFcbfe1r30NX//61/E//+f/xH333Tev31lqytV259Lf34/vfe97eOtb37piJxrlaLtSmOuA8rTddJ544glUV1dj3759C/q9i6Uc7fb000/P+qL1Cj/96U/xzW9+84LXWArK0XZXXnkljEYjHn744RmvP/zww1AqlbjpppsueI3zsuikKzJbyuu73/0uk/J697vfPeO9AMi999476xper5fU1NQQpVJJ7rvvPvLII4+Qhx56iNxxxx3EYDDMev/PfvYzAoBoNBpy8803z/r5QtQJfvKTnxAAZNeuXeTb3/42+exnP0skEgnZv3//iks+lpvtfvvb35IHH3yQPPjgg0QqlZJt27ax76crKywH5Wy7b37zm6S5uZn80z/9E3nkkUfI17/+dXLNNdcQAHNedykpZ7sRwsfcuczXdr/5zW8IANLY2Egee+yxWV9UBnG5KGfbEUJIa2sr+eIXv0j+67/+i3zhC18gRqOR1NTUEJfLNU8LLJ5ytt1qznWElLftKJ2dnQQA+fznPz/v37lY1oLd5vo8qyFvW262o7Ldt99+O/nBD35A3v/+9xMA5Ctf+co8LTA3S+JonDlzhtx+++1Eo9EQg8FAPvGJT8zqcHg+oxJytgDm3nvvJVVVVUQikRC73U6uuuoq8v3vf3/We6PRKFEoFAQA+dnPfjbr54uR3tu6dSuRyWTEZrORT3ziE8uuU01I+dvu7rvvPm+x0qOPPjqvayyWcrbd3//+d3LHHXeQ6upqIpPJiEqlItu3byff+MY3VkxXvhztRggfc+cyX9vRez/f1wsvvDA/IyyScrYdIWdlJauqqohUKiUVFRXkYx/72Cyt+eWinG23mnMdIeVtO8rnP/95AmBF5IApa8Fuc32elXQ0ytl23//+90lzczORSqWkoaGBfPOb3yTFYnHevz8XS+JolHpr91KE227xcNstDm63xcNtt3i47RYPt93i4bZbHNxui4fbbm6WpEaDw+FwOBwOh8PhcKbDHQ0Oh8PhcDgcDoez5HBHg8PhcDgcDofD4Sw5AkLm2dedw+FwOBwOh8PhcOYJP9HgcDgcDofD4XA4Sw53NDgcDofD4XA4HM6Swx0NDofD4XA4HA6Hs+SsW0cjm83i3//939HS0gK5XA6bzYabbroJLpdrtW+tpHnuuedwzz33YNOmTRCJRKitrV3tWyoL/v3f/x2XXnopLBYL5HI5Ghsb8elPfxp+v3+1b63k4WNu8RSLRXzve99De3s71Go1bDYbbrjhBhw8eHC1b63kufzyyyEQCGZ9XX/99at9ayUPn+8Wx8jIyJxjjn59+MMfXu1bLAvC4TCsVisEAgF+/etfr/btlAUHDx7Evn37oFQqYbfb8alPfQrxeHxJri1ekquUGblcDjfddBMOHjyID3/4w9iyZQumpqZw+PBhRCIROJ3O1b7FkuWJJ57AL3/5S2zfvh0VFRWrfTtlw7Fjx9De3o677roLGo0G3d3d+MEPfoA//OEPOHnyJFQq1WrfYsnCx9zi+dznPodvfOMbeO9734uPf/zjCIfDeOSRR3DgwAG89tpr2L1792rfYknjdDrx0EMPzXiNj8ELw+e7xWGxWPDYY4/Nev1Pf/oTHn/8cVx77bWrcFflxxe/+EUkk8nVvo2y4eTJk7jqqqvQ2tqKb3zjG3C5XPj617+O/v5+PPvssxf/B1a7Y+B8SKVSpFAozPmzeDy+4Ot99atfJRKJhBw+fPhib63kWWrbTUxMkGw2Swgh5KabbiI1NTUXc3sly1LbbS5+/etfEwDk5z//+ZJcr1TgY27xLKXtcrkcUSgU5Pbbb5/x+tDQEAFAPvWpTy36PkuRpR53Bw4cIG1tbRd7W2UBn+8Wz0rY7qqrriJarZakUqkluV4psFx26+zsJGKxmDzwwAMEAHnyyScXfa1SZaltd8MNNxCHw0EikQh77Qc/+AEBQP785z8v+j4pS5Y6NTExgXvuuQcVFRWQyWSoq6vDP/zDPyCbzbL3DA0N4Y477oDRaIRSqcSll16KP/zhDzOu8+KLL0IgEOAXv/gF/uVf/gWVlZVQKpWIRqP4wAc+ALVajcHBQdx4443QaDR4z3veAwAIBALo6em5oBdbLBbxrW99C7fddht2796NfD6/6p5vudgOOBvNk0gkS2uARVJOdpsLmgIUDocX9fsXQznZrpTGHFA+tsvlckilUrDZbDNet1qtEAqFUCgUS2SR+VMutptOPp9fshSCi6EcbTcdPt8tznYejwcvvPAC3v72t0Mul1+cIRZIOdrtvvvuw2233Yb9+/cvjREWSbnYLhqN4i9/+Qve+973QqvVstff//73Q61W41e/+tVF22JJUqfcbjd2796NcDiMj3zkI2hpacHExAR+/etfI5lMQiqVwufz4bLLLkMymcSnPvUpmEwm/OQnP8Ett9yCX//617jttttmXPPBBx+EVCrFZz/7WWQyGUilUgBnJ/3rrrsO+/btw9e//nUolUoAwHe+8x3cf//9eOGFF3D55Zef917PnDkDt9uNLVu24CMf+Qh+8pOfIJvNYvPmzfjWt76FK664YilMMm/KyXalRDnajRCCYDCIfD6P/v5+fP7zn4dIJFpxm5ej7UqFcrKdQqHAJZdcgh//+MfYs2cP9u/fj3A4jAcffBAGgwEf+chHls1Oc1FOtqP09fVBpVIhm83CZrPhwx/+ML74xS+uuONbjrbj893SzHe/+MUvUCwW2QZypShHuz355JM4ePAguru7MTIystQmmTflZLvOzk7k83ns3LlzxutSqRTt7e04ceLExRvkos9ECCHvf//7iVAoJH//+99n/axYLBJCCPn0pz9NAJBXXnmF/SwWi5G6ujpSW1vLjoFeeOEFAoDU19eTZDI541p33303AUA+//nPz/o7//Zv/0YAkBdeeOFN7/U3v/kNAUBMJhNpbGwkjz76KHn00UdJY2MjkUqlpKOjY6Ef/6IoJ9udy2qmsZSj3TweDwHAvpxOJ/nlL38534+8ZJSj7SirnTpVbrbr7+8n27dvnzHu6uvrSU9Pz0I+9pJQbrb70Ic+RL70pS+Rp556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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_loop_with_trace(test_data, network)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nel caso di una singola immagine, possiamo visualizzare la distribuzione di probabilità risultato dell'inferenza, da cui, come prima, si sceglie la cifra prevista come quella più probabile. È qui evidente l'effetto dell'addestramento: anche se la struttura della rete non è cambiata, e dunque non abbiamo modificato la rete riprogrammandola, la distribuzione non è più uniforme, ma con una o poche categorie a probabilità elevata. Insomma, questa significativa differenza di comportamento è interamente dovuta all'addestramento a cui abbiamo sottoposto la rete." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_with_prob(test_data, network)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### 3. Un miglioramento del metodo di classificazione\n", "\n", "Ora che siamo stati in grado di addestrare la rete, possiamo chiederci se raffinare il metodo di classificazione, per tener conto delle situazioni in cui la distribuzione di probabilità porterebbe a una decisione incerta, perché la probabilità della moda non è abbastanza grande o la differenza fra le due probabilità più grandi della distribuzione non è abbastanza grande. In tali casi si potrebbe decidere di non proporre alcuna previsione, e quindi di ammettere che il caso è dubbio. \n", "Assegniamo allora un valore ai due nuovi iperparametri." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "min_mode_prob = 0.3 # probabilità minima per considerare una previsione corretta\n", "min_diff_prob = 0.2 # differenza minima tra le due probabilità più grandi per considerare una previsione corretta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "Per mostrare questa logica di decisione, lasciamo in evidenza il codice Python." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "*** Risultati del test senza aggiustamento ***\n", "Accuratezza: 86.2%\n", "Errore: 13.8%\n", "\n", "*** Risultati del test con aggiustamento ***\n", "(probabilità minima per considerare una previsione corretta: 0.3)\n", "(differenza minima tra le due probabilità più alte per considerare una previsione corretta: 0.2)\n", "Accuratezza: 72.2%\n", "Previsioni sospese perché dubbie: 22.6%\n", "Errore: 5.2%\n" ] } ], "source": [ "\n", "from torch.utils.data import DataLoader\n", "network.eval() # metti in modalità di test\n", "dataloader = iter(DataLoader(test_data, batch_size=batch_size, shuffle=True)) # crea un iteratore sul test set\n", "\n", "with torch.no_grad(): # non calcolare i gradienti\n", " X, y = next(dataloader) # prendi un batch di immagini ed etichette\n", " logits = network(X) # calcola le previsioni\n", "pred_prob = nn.Softmax(dim=1)(logits) # converti le previsioni in distribuzioni di probabilità\n", "\n", "y_pred = pred_prob.argmax(1)\n", "corr_pred = torch.eq(y_pred, y)\n", "print(\"*** Risultati del test senza aggiustamento ***\")\n", "print(f\"Accuratezza: {100 * corr_pred.sum().item() / batch_size:.1f}%\")\n", "print(f\"Errore: {100 * (batch_size - corr_pred.sum().item()) / batch_size:.1f}%\")\n", "\n", "two_max_prob = torch.topk(pred_prob, 2).values\n", "suff_high_prob = two_max_prob[:,0] > min_mode_prob\n", "suff_diff_prob = (two_max_prob[:,0] - two_max_prob[:,1]) > min_diff_prob\n", "suff_quality = suff_high_prob * suff_diff_prob\n", "adj_corr_pred = corr_pred * suff_quality\n", "doubtful_pred = torch.logical_not(suff_quality)\n", "print(\"\\n*** Risultati del test con aggiustamento ***\")\n", "print(f\"(probabilità minima per considerare una previsione corretta: {min_mode_prob})\")\n", "print(f\"(differenza minima tra le due probabilità più alte per considerare una previsione corretta: {min_diff_prob})\")\n", "print(f\"Accuratezza: {100 * adj_corr_pred.sum().item() / batch_size:.1f}%\")\n", "print(f\"Previsioni sospese perché dubbie: {100 * doubtful_pred.sum().item() / batch_size:.1f}%\")\n", "print(f\"Errore: {100 * (suff_quality * torch.logical_not(corr_pred)).sum().item() / batch_size:.1f}%\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Come si vede, questo aggiustamento riduce l'accuratezza, perché tratta come dubbi dei casi che erano stati riconosciuti correttamente, ma anche l'errore della previsione, perché tratta come dubbi anche dei casi che erano stati riconosciuti non correttamente.\n", "\n", "Ecco qualche esempio di immagine la cui classificazione è incerta, secondo i criteri che abbiamo stabilito." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Esempi di immagini per cui non si è sicuri della previsione:\n" ] }, { "data": { "image/png": "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q+0OHjzI3Xzzzdz3vvc97pVXXuG+9a1vcXK5nLv77rvndb2LoZxtd+LECU4kEnFbt27l9u3bxw0ODnL/83/+T04ikXAAuAcffPCirzlXytluZ5NIJLjOzk5Op9NxTqdzwde7EOVsu+UccxzHbLcQytl2HMfWifna7jOf+Qwnk8lmfa+qqoq74447Lvqac6Wc7cZxbF9XivN1URyN4eHhaa9ns1mOz+dzn//85//+iwDuM5/5zLTPeb3eaZ7TbH+mFqDceOONXHNzM/3/r3/965xQKJzXAHr++ec5kUjE9fX1zfg+Szkgy9F2Q0NDnFwu51566aVpr//yl7/kAHB//vOfL/qaF0M5247jOO7FF1/kDAYD/V1Wq5V76qmnOADco48+Oq9rzoVytxshn89zt912GycWi6cV6V5Kyt12yzXmOI7ZbiGUs+3YOjF/25VCRKMc7cb2daU5X4W4BPB4vFlfP7uYpFgsAgA+8YlP4IEHHpj1Z9atW0f/+7777sOnP/1pHD9+HJ2dnXjhhRewa9eueUmWffnLX8Y999wDsViM0dFRAEA4HAZwRrM/m82ioqLioq+7UMrBdr/85S+RTqdx6623Tnv99ttvBwDs27cPN91000Vfd6GUg+0A4O6778btt9+OEydOoFAoYOPGjdizZw8AoLm5eV7XXAjlYjfCZz/7Wbz66qt49tlnpxXpLgflYrtSG3MAs91CKAfbsXVi/raz2WwoFAqYnJyE2Wymr2ezWQQCAbY3OQdsX1ea83VRHI2BgQHU1dXR/x8cHESxWERtbe15f85kMkGlUqFQKOC666674O+588478fnPfx6//e1vAQD9/f3413/913nd88TEBJ577jk899xzM97buHEj1q9fj+PHj8/r2hdDOdrO6/WC4zgUCoVpr+dyOQBAPp+f13UvlnK0HUEsFmPLli30/0njubncz0IpZ7t9+ctfxi9+8Qv8n//zf/Cxj31sQdeaD+Vsu+UccwCz3UIoR9uxdWL+tuvs7AQAHD58GDfffDN9/fDhwygWi/T9S0k52o3t60pzvi5KZ/Ann3xy2v+T7pUX8n4EAgE+8pGP4He/+x26u7tnvO/z+ab9v1arxY033ogXXngBzz//PMRiMe68885pn5mrlNfvf//7GX8++tGPAgB+/etf40c/+tEFr7EYlKPtmpubwXEcXnjhhWmv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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "doubtful_data = [(X[i], y[i]) for i in range(batch_size) if doubtful_pred[i]]\n", "print(\"Esempi di immagini per cui non si è sicuri della previsione:\")\n", "test_loop_with_trace(doubtful_data, network)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ed ecco qualche esempio di immagine la cui classificazione è invece sbagliata, sempre secondo i criteri che abbiamo stabilito." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Esempi di immagini per cui la previsione è sbagliata:\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wrong_pred = [(X[i], y[i]) for i in range(batch_size) if (suff_quality * torch.logical_not(corr_pred))[i]]\n", "print(\"Esempi di immagini per cui la previsione è sbagliata:\")\n", "test_loop_with_trace(wrong_pred, network)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sebbene questa rete abbia prdotto previsioni abbastanza accurate, non è ideale per la classificazione di immagini. I *MultiLayer Perceptron* (MLP) richiedono infatti di trasformare le immagini su cui operare, che hanno una struttura bidimensionale, in successioni di valori unidimensionali, perdendo così l'informazione appunto sulla posizione relativa dei punti. In più, l'efficienza dei MLP diminuisce all'aumentare delle dimensioni delle immagini da analizzare, perché il numero di parametri del modello e quindi la capacità di calcolo necessaria per l'addestramento crescono significativamente con l'aumento di tali dimensioni.\n", "\n", "\n", "### 4. Seconda opzione: una *Convolutional Neural Network*\n", "\n", "Per superare questi ostacoli, si usano tipicamente delle *Convolutional Neural Network* (CNN), che operano mantenendo l'informazione sulla disposizione spaziale dei punti delle immagini da classificare, in modo da apprenderne il contenuto in modo più efficace ed efficiente.\n", "\n", "Realizziamo dunque una CNN, nuovamente come una classe che eredita da `torch.Module`, con questa successione di strati, inizializzati nel costruttore della classe:\n", "* un primo strato convoluzionale, in cui:\n", " * 1 è il numero di canali di input, dato che si tratta di immagini in scala di grigi (per immagini RGB sarebbe 3);\n", " * 32: il numero di canali di output, cioè il numero di filtri convoluzionali dello strato, assumendo che ogni filtro estragga una caratteristica dall'immagine;\n", " * kernel_size=3 specifica che la dimensione del filtro è 3x3;\n", " * stride=1 specifica che il filtro si muove di 1 pixel alla volta durante la scansione dell'immagine;\n", " * padding=1 indica di aggiungere un bordo di 1 pixel, di valore zero, attorno all'immagine, per permettere al filtro di lavorare anche sui bordi dell'immagine, mantenendo la stessa dimensione dell'output come l'input;\n", " \n", " durante l'operazione di convoluzione, ciascuno dei 32 filtri si sposta attraverso l'immagine di input:\n", " * ogni filtro ha una griglia di pesi 3x3 che viene moltiplicata per i valori dei pixel corrispondenti dell'immagine sotto il filtro (più un bias);\n", " * questi prodotti sono sommati per ottenere un singolo valore di output per quella posizione specifica del filtro sull'immagine;\n", " * poiché il stride è 1 e il padding è 1, il filtro si sposta di un pixel alla volta e lavora su tutta l'area dell'immagine, inclusi i bordi, producendo un'immagine di output della stessa dimensione dell'immagine di input, ma con 32 canali differenti, uno per ogni filtro;\n", "\n", "* una funzione di attivazione non lineare, in questo caso *Rectified Linear Unit* (ReLU), per introdurre non linearità nel processo di apprendimento;\n", "* uno strato di *pooling* in cui:\n", " * kernel_size=2 specifica che il filtro è un quadrato 2x2;\n", " * stride=2 specifica che il filtro si muove di 2 pixel alla volta e quindi che ogni operazione di pooling è completamente non sovrapposta con la precedente, dimezzando così la dimensione dell'output;\n", "* un secondo strato convoluzionale, ancora seguito da una funzione di ReLU e uno strato di pooling;\n", "* la unidimensionalizzazione (*flatten*) della struttura;\n", "* uno strato *fully connected* per ottenere i 10 output possibili della classificazione.\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Questa è dunque una rete con 50186 parametri, invece dei 669706 della precedente.\n" ] } ], "source": [ "import torch\n", "from torch import nn\n", "import torch.nn.functional as F \n", "\n", "class CNN(nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", " self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1) # Convolutional Layer 1: prende 1 canale di input, produce 32 canali di output, kernel di 3x3\n", " self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) # Max Pooling Layer 1: finestra di pooling 2x2\n", " self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1) # Convolutional Layer 2: prende 32 canali di input, produce 64 canali di output, kernel di 3x3\n", " self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) # Max Pooling Layer 2: finestra di pooling 2x2\n", " self.fc = nn.Linear(64 * 7 * 7, 10) # Fully connected layer: converte i canali di output del layer convoluzionale in classi\n", "\n", "\n", " def forward(self, x):\n", " x = self.pool1(F.relu(self.conv1(x))) # Applica il primo layer convoluzionale, seguito da ReLU e max pooling\n", " x = self.pool2(F.relu(self.conv2(x))) # Applica il secondo layer convoluzionale, seguito da ReLU e max pooling\n", " x = torch.flatten(x, 1) # Appiattisci l'output per passarlo al fully connected layer\n", " x = self.fc(x) # Applica il fully connected layer\n", " return x\n", " \n", "network = CNN()\n", "\n", "num_CNN_params = sum(p.numel() for p in network.parameters())\n", "print(f\"Questa è dunque una rete con {num_CNN_params} parametri, invece dei {num_MLP_params} della precedente.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Questa rete ha dunque un numero di parametri è un ordine di grandezza inferiore alla precedente. Per capire meglio la struttura della CNN, è interessante vedere come si giunge a questo numero di parametri:\n", "* conv1 ha un kernel di dimensione 3x3, 1 canale di input e 32 canali di output; quindi per ciascun filtro ci sono 3×3×13×3×1 parametri, più un bias per ogni canale di output: (3×3×1+1)×32=320;\n", "* conv2 Ha un kernel di dimensione 3x3, 32 canali di input e 64 canali di output; ci sono 3×3×323×3×32 pesi per filtro, più un bias per ogni canale di output: (3×3×32+1)×64=18496;\n", "* fc: dopo i due strati di pooling con kernel 2x2 e stride 2, le dimensioni spaziali dell'input sono ridotte di un fattore di 4 (da 28x28 a 7x7); l'input ha perciò dimensioni 7x7 per ciascuno dei 64 canali di output di conv2, e ci sono 10 output: (7×7×64+1)×10=31370\n", "\n", "Sommando tutti i parametri dei layer, otteniamo il numero totale di parametri della rete: 320+18496+31370=50186." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Per mettere alla prova questa rete rispetto alla precedente, addestriamola nelle stesse condizioni: stessi iperparametri, stessa funzione di errore, stessa funzione di ottimizzazione per la backpropagation." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "learning_rate = 1e-3\n", "batch_size = 50\n", "num_batches = 500\n", "epochs = 20\n", "\n", "loss_fn = nn.CrossEntropyLoss()\n", "optimizer = torch.optim.SGD(network.parameters(), lr=learning_rate)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Addestriamo la rete in accordo a questi iperparametri e, contestualmente, mettiamola alla prova." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoca\tAccuratezza\n", "1\t74.0%\n", "2\t62.0%\n", "3\t80.0%\n", "4\t82.0%\n", "5\t86.0%\n", "6\t90.0%\n", "7\t82.0%\n", "8\t88.0%\n", "9\t86.0%\n", "10\t94.0%\n", "11\t90.0%\n", "12\t94.0%\n", "13\t96.0%\n", "14\t98.0%\n", "15\t98.0%\n", "16\t90.0%\n", "17\t82.0%\n", "18\t92.0%\n", "19\t94.0%\n", "20\t92.0%\n", "Processo completato in 152.76 secondi\n" ] }, { "data": { "image/png": "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SLGmpkYURc95X61MJpOYlJQkPvvss5fc587va2Njo7h3715x7969IgDxjTfeEPfu3Wtb3fHqq6+KoaGh4vr168UDBw6Ic+bMEVNTU8XW1lbbOa6++mpx+fLltp97+8xLqafXazAYxNmzZ4sJCQnivn37On2O9Xq97Rw/f729fRak0tNrbWxsFJ966imxsLBQLC4uFvPz88WxY8eKgwcPFtva2mzncJf3trd/x6IoilqtVgwICBBXrFjR5Tnc5X11Jo9KPkRRFJcvXy4mJSWJvr6+4oQJE8Tt27fb7ps2bZp43333dTr+008/FYcMGSL6+vqKI0aMEL/55hsXR2w/AF3eVq5caTvm56/1iSeesP1/iYmJEa+99lpxz549rg++H2677TYxLi5O9PX1FQcNGiTedtttYlFRke1+T3lfrfLy8kQA4vHjxy+5z53f1++//77Lf7fW12M2m8XnnntOjImJEdVqtTh9+vRL/h8kJyeLL7zwQqff9fSZl1JPr7e4uLjbz/H3339vO8fPX29vnwWp9PRaW1paxJkzZ4pRUVGij4+PmJycLP7qV7+6JIlwl/e2t3/HoiiK7733nujv7y82NDR0eQ53eV+dSRBFUXTq0AoRERHRRTym5oOIiIjcA5MPIiIicikmH0RERORSTD6IiIjIpZh8EBERkUsx+SAiIiKXYvJBRERELsXkg4iIiFyKyQcRERG5FJMPIiIicikmH0RERORSTD6IiIjIpf5/BFe0CnwFsiEAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "start_time = time.time()\n", "accuracy = []\n", "print(\"Epoca\\tAccuratezza\")\n", "for t in range(epochs):\n", " train_loop(train_data, batch_size, num_batches, network, loss_fn, optimizer)\n", " correct = test_loop(test_data, batch_size, network) / batch_size * 100\n", " print(f\"{t + 1}\\t{correct:.1f}%\")\n", " accuracy.append(correct)\n", "end_time = time.time()\n", "\n", "print(f\"Processo completato in {end_time - start_time:.2f} secondi\")\n", "plt.plot(range(epochs), accuracy)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Come si vede, nonostante il numero molto inferiore di parametri, la CNN ha un'accuratezza analoga o migliore di quella del MLP, ma richiede un tempo di addestramento più che doppio.\n", "\n", "A rete addestrata, valutiamo quantitativamente l'accuratezza delle previsioni che è in grado di fare." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuratezza: 92.1%\n" ] } ], "source": [ "batch_size = 1000\n", "correct = test_loop(test_data, batch_size, network) / batch_size * 100\n", "print(f\"Accuratezza: {correct:.1f}%\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Valutiamo qualitativamente l'accuratezza delle previsioni, confrontando la cifra prevista (\"prev\") e quella corretta (\"corr\") per 10 immagini a caso." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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Fkgl2242BgYGiFwuv2DButRUut342mT1jdclcTToQp3S29tLAJBvfetb7/4hgLznPe+Z9rlSqUT0ej154IEHiN/vn/bz+OOPEwBk//79hJDznqpYLCZf/epX2fdPnTpFAJDHHntsQed/ww03kA984AMXXM9yOhqVarsjR46Qffv2kX/8x38k//mf/0m+8Y1vEKVSSe68884FHW8+VLrtylkJR6OS7eb1esnvf/978qtf/Yp89rOfJddccw05dOjQgo83V6rBdhQ6Qf36179e9LHmQjXZbqUcjUq03b333ksAkK6uLlIsFtnrNFjw4x//eN7HnA+VbLuZJJNJsnnzZmIwGMjk5OSij3cpKt1ufG2y+sbrkjgaQ0ND017P5XJEKBSSz3zmM+/+IYDce++90z7n8/mmeZ2z/ZQX79xyyy2ko6OD/f7Vr36ViMXiBTkGv/jFL4hEIiFnz5694HqW09GoRNudO3eOKJVK8uyzz057/YknniAAyEsvvTTvY86HSrbdTFbC0agGu1H+8R//kajV6iteDF5Ntrv++uuJ0WgkuVxu0ceaC9Vku5VyNCrRdp/73OcIAPLQQw9Ne71QKBCxWEw+/elPz/uY86GSbVdOoVAgt912G5FKpeTVV19d1LHmQiXbja9NVud4vSLythcrnJtZiFMqlQAAn/jEJ3DPPffM+p2NGzey/7/77rvx6U9/GidOnMDmzZvxy1/+EjfddNMFRVNz4ctf/jLuuusuSKVSjIyMAHi3oHR8fBy5XA4Oh2Pex10slWC7J554AplMBh/4wAemvX777bcDAA4cOIBbb7113sddLJVgu9VIJdvtzjvvxN/93d/h17/+NT7zmc8s2XHnSqXZbmxsDG+++SYeeOABSCSSRR1rsVSa7VYTlWA7On/OLMwViUQwmUwIh8PzPuZSUAm2K+f+++/HCy+8gKeeego33njjoo61GCrBbnxtsjrH65I4GgMDA2hubma/Dw4OolQqMUWYi2GxWKDRaFAsFnHzzTdf9u986EMfwmc+8xk888wzAID+/n78j//xPxZ0zuPj43j66adn1d/funUrNm3ahBMnTizo2POhEm3n8/lACEGxWJz2OlUoKBQKCzrufKlE260Gqslu6XQawPkmTctBpdvu5z//OQghy6I2NZNKt91KUom227ZtG4DzCjrl5HI5BAIBWCyWBR13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befxePD666/jwx/+MORy+eIMsQAqyXZ8zC7MdqVSCd///vdxxx13YOfOnSgUCgse50tBpdjNbDajq6vrgtfvuOMOAEBvb+9iTTFvKsV2q21tAlSO7ZZjvC5J6pTb7cbOnTsRiUTwwAMPoLOzE5OTk3j22WeRSqUglUrh8/mwa9cupFIpfOELX4DJZMJPf/pT3H777Xj22WfZYKI8/PDDkEql+Ju/+Rtks1lIpVIAQKFQwC233ILdu3fju9/9LpRKJQDgkUcewUMPPYTXX38de/bsuei5ZrNZALjgxqPHefvtt5fCJHOmkmynUChw1VVX4YknnsA111yD6667DpFIBA8//DAMBgMeeOCBK2anmVSS3VYblWg7QgiCwSAKhQIGBgbwla98BSKRaNntXom2K+cXv/gFSqUSm4yWk0q33UpSSbY7c+YM3G43Nm7ciAceeAA//elPkcvlsGHDBnz/+9/He97znitmp5lUkt0uhtfrBXDeEVlOKsl2q2ltAlSW7ZZlvC7FtsgnP/lJIhQKydGjRy94r1QqEUII+dKXvkQAkDfffJO9F4/HSXNzM3G5XGwb6PXXXycASEtLC0mlUtOOdc899xAA5Ctf+coFf+frX/86AUBef/31S57rc889RwCQJ598ctrr//Zv/0YAkPXr18/pmpeKSrIdIYQMDAyQrVu3EgDsp6WlhfT19c3nshdNpdmtnJVOw6hE23k8nmn3XH19PXnmmWfmeslLRiXarpxt27YRu91+0W33K0kl246P2bnb7vnnnycAiMlkIu3t7eTxxx8njz/+OGlvbydSqXRZ05MryW6zkc1mybp160hzczPJ5/Pz/v5iqDTbrZa1CSGVZbvlGK+LdjSKxSLRarXkgx/84CU/19HRQXbu3HnB69/61rcIAHLq1ClCyLtGfeihhy74LDXq6Ojogs83nU6TpqYmYrPZyHPPPUdGRkbIM888Q0wmExGLxaS1tXXBx54vlWY7Qgjxer3kL/7iL8jnPvc58vzzz5N//dd/JY2NjaSzs5P4/f5FHXuuVKLdylnJRUul2i6bzZLf//735Le//S355je/STZv3kz+z//5P4s+7nyoVNtRzp49SwCQv/7rv16yY86VSrcdH7Nz52c/+xkBQKRSKRkbG2Ovj46OEolEQj7+8Y8v+NjzodLsNhv3338/AUBefPHFJT3u5ahE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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_loop_with_trace(test_data, network)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Valutiamo il caso di una singola immagine, confrontando la cifra prevista (\"prev\") e quella corretta (\"corr\"), e visualizziamo la distribuzione di probabilità risultato dell'inferenza, da cui si sceglie la cifra prevista come quella più probabile." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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//039u3bBw8PD7Xbs0RERFS5etXjR9rl4MGD2L17NywtLaGjowMdHR306NED8fHxmDBhAv7880+5QyQiIqpXNDrxK32btVevXuXW3bNnj2Tdzc1N/GxgYCDZlpKSIll/9nVvzs7Okm2lpxJ54403xM+VPQBAL0alUsHExATA09/CtWvX0KZNGzg4OCAjI0Pm6IiIiOofjU78SLt16NABf/31F5ycnODl5YX58+dDqVQiKSlJLUEnIiKiyjHxI401Y8YMFBQUAHg6qfLrr7+OV155BU2bNkVycrLM0REREdU/TPxIY/n6+oqfW7VqhfT0dNy+fRvm5uZqb24hIiKiyml04te8efMK15/l6ekpWX92zN/WrVsl27788sty23n33XerESHVlStXrgAAWrRoIXMkRERE9RencyGN9eTJE8ycORNmZmZwdHSEo6MjzMzMMGPGDL4nmYiI6DlodI8fabfx48fju+++w/z589GtWzcAT6d4iYmJwa1bt7Bs2TKZIyQiIqpfmPiRxlq/fj02bNgAf39/sczd3R0tWrTA0KFDmfgRERFVk0Ynfg8fPix3vfTcfHPmzJGsx8TEiJ+r82qv0k+LLl26VLIeHBwsfuY8frVLT08Pjo6OauVOTk5QKpV1HxAREVE9xzF+pLEiIiIwe/ZsFBYWimWFhYWYM2cOIiIiZIyMiIioftLoHj/SPgMHDpSs79q1C82bN0fHjh0BAH/99ReKiorQp08fOcIjIiKq1zQ68Sv9Wq7o6Gjxc1FRkWTb4sWLJevFxcXPdcySCYNLnD17VrLOW4y1y8zMTLL+5ptvStY5nQsREdHz0+jEj7TPqlWr5A6BiIiowWLiRxrv5s2bYu9vmzZt0KxZM5kjIiIiqp/4cAdprIKCAowcORK2trZ49dVX8eqrr8LOzg7vvPMOHjx4IHd4RERE9U696vH77LPPav0YpccOnjhxQrLeqlWrWo+BnoqMjMTevXvx448/onv37gCA/fv3Y8KECfjggw84jx8REVE11avEj7TLli1bsHnzZvTq1Uss69evHwwMDDB48GAmfkRERNXEW72ksR48eABra2u1cisrK97qJSIieg7s8avEunXrJOtbtmwRP3fo0EGy7dSpU3USk7bo1q0boqOjsXbtWujr6wN4+vaW2NhY8d29REREVHVM/EhjJSQkwM/PT20CZ319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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_with_prob(test_data, network)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ovviamente, come nel caso del _MultiLayer Perceptron_, anche per questa rete convoluzionale potremmo raffinare variamente il metodo di decisione, invece di affidarci semplicemente alla scelta della cifra più probabile. Ma ora ci fermiamo qui." ] } ], "metadata": { "kernelspec": { "display_name": "torch", "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }