Skip to content

Instantly share code, notes, and snippets.

@kristoff-it
Last active December 18, 2015 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kristoff-it/5823034 to your computer and use it in GitHub Desktop.
Save kristoff-it/5823034 to your computer and use it in GitHub Desktop.
Notebook di IPython per Appunti sulle reti neurali
{
"metadata": {
"name": "Introduzione alle reti neurali artificiali"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": "import random\nimport numpy as np\nfrom PIL import Image",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": "def load_img(filename):\n img = Image.open(filename)\n return np.matrix([int(x != (255,255,255,0)) for x in img.getdata()]).transpose()",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": "def risultato_atteso(indice):\n return np.array([int(x == indice) for x in range(0,3)])\n #esempio: [0, 0, 1] se l'immagine \u00e8 un 3",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": "esempi = [{\n'immagine': load_img('lettere/%i%s.png' % (i, c)),\n'categoria': risultato_atteso(i-1)\n} for i in range(1,4) for c in 'abcd']",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": "# STAMPA DEGLI ESEMPI\n\ndef pprint(img):\n\tfor x in range(8):\n\t\tfor y in range(8):\n\t\t\tval = img[8*x + y]\n\t\t\tif val:\n\t\t\t\tprint '#',\n\t\t\telse:\n\t\t\t\tprint '.',\n\t\tprint ''\n\tprint ''\n\nfor i in range(len(esempi)):\n x = esempi[i]['immagine']\n e = esempi[i]['categoria']\n pprint(x)\n print e\n",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": ". . . . # . . . \n. . . # # . . . \n. . # . # . . . \n. . # . # . . . \n. . . . # . . . \n. . . . # . . . \n. . . . # . . . \n. . . . # . . . \n\n[1 0 0]\n. . . . # . . . \n. . . # # . . . \n. . # # # . . . \n. # . . # . . . \n. . . . # # . . \n. . . . # . . . \n. . . . # . . . \n. . . . # . . . \n\n[1 0 0]\n. . . . # . . . \n. . . # # . . . \n. . # # . . . . \n. # . . # . . . \n. . . . # # . . \n. . . . # # . . \n. . . . # . . . \n. . . . # . . . \n\n[1 0 0]\n. . . . # . . . \n. . # # # # . . \n. # # . # # . . \n# # . . # # . . \n. . . . # # . . \n. . . . # # . . \n. . . . # . . . \n. . . . # . . . \n\n[1 0 0]\n. . . # # . . . \n. . # # # # . . \n. # . . . # . . \n. # . . . # # . \n. . . . . # . . \n. . . # # . . . \n. # # # . . . . \n. # # # # # # . \n\n[0 1 0]\n. . . # # . . . \n. # # . . # . . \n. . . . . . # . \n. . . . . # # . \n. . . . # # . . \n. . # # . . . . \n. # # . . . . . \n. # # # # # # . \n\n[0 1 0]\n. . # # # . . . \n. # # . # # . . \n# . . . . # # . \n. . . . . # # . \n. . . . # . . . \n. . # # . . . . \n. # # . . . . . \n# # # # # # # . \n\n[0 1 0]\n. . . # # # . . \n. # # . . . # . \n. # . . . . # # \n. . . . . . # . \n. . . . . # . . \n. . . # # . . . \n. # # # . . . . \n. # # # # # # . \n\n[0 1 0]\n. . . # # # . . \n. # # . . # # . \n. . . . . . # . \n. . . . . # # . \n. # # # # # . . \n. . . . . . # . \n. . . . . # # . \n. # # # # # . . \n\n[0 0 1]\n. . # # # # # . \n. # # . . . # . \n. . . . . # # . \n. . # # # # . . \n. . . . . # # . \n. . . . . . # . \n. . # . . . # # \n. . # # # # # . \n\n[0 0 1]\n. . # # # # # . \n. # # . . # # . \n. # . . . . # . \n. . . . . # # . \n. . # # # # . . \n. . . . . # # . \n. . . . . . # . \n. # # # # # # . \n\n[0 0 1]\n. # # # # # . . \n. # . . . . # . \n. . . . . . # . \n. . # # # # # . \n. . # # # # # . \n. . . . . . # . \n. # # . . . # . \n. # # # # # # . \n\n[0 0 1]\n"
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": "pesi = np.zeros((3, 64))",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": "epsilon = 0.2\n\nruns = 0\nerrori = True\n\nwhile errori:\n errori = False\n random.shuffle(esempi)\n for esempio in esempi:\n img, atteso = esempio['immagine'], esempio['categoria']\n prova = (pesi * img > 0).transpose()\n if not all(prova == atteso):\n errori = True\n \n delta = epsilon * img * (atteso - prova)\n pesi += delta.transpose()\n runs += 1\nprint 'Training completato in %i passi' % runs",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Training completato in 36 passi\n"
}
],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": "import pylab as pl\n\nfor i in range(0, 3):\n print 'Classe %i:' % (i + 1)\n x = np.reshape(pesi[i], (8,8))\n x = np.flipud(x) # in memoria le immagini sono caricate a testa in gi\u00f9 :)\n pl.pcolor(array(x))\n pl.colorbar()\n pl.show()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Classe 1:\n"
},
{
"output_type": "display_data",
"png": "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\n"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "Classe 2:\n"
},
{
"output_type": "display_data",
"png": "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\nRU5ErkJggg==\n"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "Classe 3:\n"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": "for esempio in esempi:\n img, atteso = esempio['immagine'], esempio['categoria']\n prova = pesi *img > 0\n pprint(img)\n print 'riconosciuto come:', [i + 1 for i in range(len(prova)) if prova[i]]\n print '\\n\\n'",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": ". . . . # . . . \n. . . # # . . . \n. . # # . . . . \n. # . . # . . . \n. . . . # # . . \n. . . . # # . . \n. . . . # . . . \n. . . . # . . . \n\nriconosciuto come: [1]\n\n\n\n. # # # # # . . \n. # . . . . # . \n. . . . . . # . \n. . # # # # # . \n. . # # # # # . \n. . . . . . # . \n. # # . . . # . \n. # # # # # # . \n\nriconosciuto come: [3]\n\n\n\n. . . # # # . . \n. # # . . # # . \n. . . . . . # . \n. . . . . # # . \n. # # # # # . . \n. . . . . . # . \n. . . . . # # . \n. # # # # # . . \n\nriconosciuto come: [3]\n\n\n\n. . . # # # . . \n. # # . . . # . \n. # . . . . # # \n. . . . . . # . \n. . . . . # . . \n. . . # # . . . \n. # # # . . . . \n. # # # # # # . \n\nriconosciuto come: [2]\n\n\n\n. . # # # # # . \n. # # . . . # . \n. . . . . # # . \n. . # # # # . . \n. . . . . # # . \n. . . . . . # . \n. . # . . . # # \n. . # # # # # . \n\nriconosciuto come: [3]\n\n\n\n. . . . # . . . \n. . # # # # . . \n. # # . # # . . \n# # . . # # . . \n. . . . # # . . \n. . . . # # . . \n. . . . # . . . \n. . . . # . . . \n\nriconosciuto come: [1]\n\n\n\n. . . # # . . . \n. # # . . # . . \n. . . . . . # . \n. . . . . # # . \n. . . . # # . . \n. . # # . . . . \n. # # . . . . . \n. # # # # # # . \n\nriconosciuto come: [2]\n\n\n\n. . # # # # # . \n. # # . . # # . \n. # . . . . # . \n. . . . . # # . \n. . # # # # . . \n. . . . . # # . \n. . . . . . # . \n. # # # # # # . \n\nriconosciuto come: [3]\n\n\n\n. . . . # . . . \n. . . # # . . . \n. . # . # . . . \n. . # . # . . . \n. . . . # . . . \n. . . . # . . . \n. . . . # . . . \n. . . . # . . . \n\nriconosciuto come: [1]\n\n\n\n. . . # # . . . \n. . # # # # . . \n. # . . . # . . \n. # . . . # # . \n. . . . . # . . \n. . . # # . . . \n. # # # . . . . \n. # # # # # # . \n\nriconosciuto come: [2]\n\n\n\n. . # # # . . . \n. # # . # # . . \n# . . . . # # . \n. . . . . # # . \n. . . . # . . . \n. . # # . . . . \n. # # . . . . . \n# # # # # # # . \n\nriconosciuto come: [2]\n\n\n\n. . . . # . . . \n. . . # # . . . \n. . # # # . . . \n. # . . # . . . \n. . . . # # . . \n. . . . # . . . \n. . . . # . . . \n. . . . # . . . \n\nriconosciuto come: [1]\n\n\n\n"
}
],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": "# Dataset con immagini 16x16\ndata = file('semeion.data')\nesempi16 = [(np.matrix(map(lambda x: float(x) > 0, l.split()[:256])).transpose(), np.array(map(int, l.split()[256:]))) for l in data]\nrandom.shuffle(esempi16)\n\ntest_set = esempi16[:500]\nesempi16 = esempi16[500:]\n\npesi16 = np.random.random((10, 256))",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 66
},
{
"cell_type": "code",
"collapsed": false,
"input": "epsilon = 0.2\n\nruns = 0\nerrori = True\n\nwhile errori:\n errori = False\n random.shuffle(esempi16)\n for esempio in esempi16:\n img, atteso = esempio\n prova = (pesi16 * img > 0).transpose()\n if not all(prova == atteso):\n errori = True\n \n delta = epsilon * img * (atteso - prova)\n pesi16 += delta.transpose()\n runs += 1\nprint 'Training completato in %i passi' % runs",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Training completato in 54 passi\n"
}
],
"prompt_number": 67
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = np.reshape(pesi16[0], (16,16))\nx = np.flipud(x)\npl.pcolor(array(x))\npl.colorbar()\npl.show()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAV8AAAD9CAYAAAAbFnTQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X1cVGXeP/DPKGNarookkAwmqdwMzyQuyaaN5WjayhqS\nt5jJik93z5Ya6q92wV0RMzdN2+7WfMB0tYfNpCRaSceHWHwIE3/pLWbMLYhgPqCymMB47j9IEmVg\nONcZzszx8369zuvlDOf6zmf3hV9P11znOjpJkiQQEVGbaqd2ACKi2xGbLxGRCth8iYhUwOZLRKQC\nNl8iIhWw+RIRqaDZ5pucnAwfHx+EhYU1en/58uUwGo0IDQ1FSkqKUwMSEWmRR3M/nDRpEp5//nlM\nnDix4b0dO3YgKysLhYWF0Ov1+PHHH50ekohIa5q98h00aBA8PT0bvffOO+9g7ty50Ov1AIAePXo4\nLx0RkUY1e+XblOPHj2PXrl2YN28eOnbsiDfeeAPR0dGNztHpdIoFJCLtE73R9k6dDlccPNfT0xPn\nz58X+jwltLr51tXV4cKFC8jPz8f+/fsxduxY/PDDD7ecN0ZaLxTsHyf/U2g8AGDRn4FnU4VKDAze\nITS+JDUTpW+tFarhff6k0HgAuDd1KgakDheqcQTBQuOtqeth7SX2e4EQseEAgN+mAj1ShUoMO5Il\nNP5E6kacuLRRqAYqxYYDANbMBTBXrMbjXcTGbxa/WLsCINXBc1MvXBD+PCW0erWDwWBAfHw8AGDA\ngAFo164dzp07p3gwIqLW8HDwcBWtbr6jR4/G9u3bAQBFRUWoqamBl5eX4sGIiFpD7+DhKpptvomJ\niYiNjUVRURH8/f2xZs0aJCcn44cffkBYWBgSExOxbt26tsraegNMaidAF1OE2hEAAD1NfdSOgG6m\ncLUj1LvTpHYCeJpC1Y7wswfVDqAYd7vybTbLxo1Nz0m9//77TgmjuF+b1E6ArqZItSMAAPxMfdWO\nUN98b/16oO3dZVI7AbqbwgCxaWOFDFI7gGI6qR2glVzpHwIiItlcaUrBEWy+RKQJ7tbM3C0vEVGT\neOVLRKQCd2tm7paXiKhJvPIlIlIBmy8RkQq41IyISAXu1szcLS8RUZM47fCzSBwUGh/d64Bwhjfx\nknCNYBwRrvGvlCFC45/HW8IZXit6Q7jGwECxHd4AYHLy20Ljp+A94QzvH3lKuMZf//qycA3RO3vn\nxf9BOEJ69HzhGggSHL9ZPALgfleS7paXiKhJ7nblywdoEpEmyN1Yp6SkBEOGDEFISAhCQ0Px1lv2\n/0tz//798PDwwCeffKJIXiIityf3ylev1+PNN99EZGQkqqqq0L9/f5jNZhiNxkbn2Ww2pKSk4NFH\nHxV+8gbAK18i0ohODh438/X1RWRk/e6DnTt3htFoRFlZ2S3nLV++HAkJCYo9t5JXvkSkCfaufP/1\n8+EIq9WKgwcPIiYmptH7p06dwpYtW7B9+3bs379fkedUsvkSkSbYa2aD0HjX4r/YOa+qqgoJCQlY\ntmwZOnfu3OhnM2bMQEZGBnQ6HSRJUmTagc2XiDRB72g3q7v1rdraWowZMwYTJkzA6NGjb/n5N998\ng3HjxgEAzp49iy+++AJ6vR5xcXGy87L5EpEmeMhsvpIkYfLkyQgODsaMGTOaHHLjE9onTZqEUaNG\nCTVegM2XiDRC317euK+//hrr169HeHg4oqKiAADp6ek4efIkAGD69OlKRWyk2eabnJyMrVu3wtvb\nG4cPH270syVLlmD27Nk4e/Ysunfv7pRwRESOcvjK9yYPPvggrl275vD5a9askfdBN2l2qdmkSZOQ\nk5Nzy/slJSXYtm0b7r33XkVCEBGJ0t/h2OEqmm2+gwYNgqen5y3vv/zyy3j99dedFoqIqNXc7Nnx\nrY6yZcsWGAwGhIeHN3ve9tS8hj8HmPwRYPJvfToi0p5vLcAhi/J1XaixOkIntbBgzWq1YtSoUTh8\n+DCqq6sxZMgQbNu2DV26dEFAQAAOHDgALy+vxkV1OoySPhQKdhXi/33wz+1i30YCAJaKl3gt6/8J\njc/GSOEM3qgQrqHEjmJ3oEZo/GMlXwlniPJ3dMm9fX/Gq8I1zsKr5ZOakfSj2N8xAPikxwjhGmM+\nyRYsoBNeN6vT6SDd5+C5P0CRdbqiWnV78YkTJ2C1WhEREYGAgACUlpaif//+OHPmjLPyERE5pr2D\nh4to1YV6WFgYKip+uYIKCAjAN998w9UORKQ+N5t2aPbKNzExEbGxsSgqKoK/v/8tSyyUuL+ZiEgR\ndzh4uIhm/63YuHFjs4NvvOuDiEhVbnbl62ZxiYjscLNu5mZxiYjscKEv0xzB5ktE2uBm3czN4hIR\n2eFm3czN4hIR2eFm3czN4hIR2eFCy8gcweZLRNrgZt3MzeISEdnB1Q5ERCpws27mtLjP4K9C49fg\n9+IhfhQv8XnWUOEav+2eKzQ+5XyacIbL+JVwjVexQPUcUf4HhTN8+8kDwjXejH9JuMYkiD0RYVeP\nXwtniP/6C+Ea0kCxbQYU26RAZjdr7ok9QP0DMydMmIDy8nLU1dVh1qxZ+P3vfy+WFa3c1YyIyGXJ\n3NXM3hN7rluxYgWioqLw7bffwmKxYObMmaira+IRyK3E5ktE2iDzSRb2nthz3T333INLly4BAC5d\nugQvLy94yH1g3E1xiYjcX8em37acqj/kmjp1Kh5++GH07NkTly9fxocfim9iD7D5EpFW2FntYOpV\nf1yXtq91ZdPT0xEZGQmLxYITJ07AbDbj0KFD+NWvxL6/4LQDEWmDkx6gmZeXhyeeeAIA0KdPHwQE\nBODYsWPCcdl8iUgbnNR8g4KCkJtbv2KpoqICx44dw333OfjAuBbiEhG5P5k3WSQmJmLnzp04e/Ys\n/P39kZaWhtraWgDA9OnTMW/ePEyaNAkRERG4du0aXn/9dUUencbmS0TaILObtfTEnrvvvhufffaZ\nvOLNYPMlIm1ws27W7JxvcnIyfHx8EBYW1vDe7NmzYTQaERERgfj4eFy8eNHpIYmIWuRmD9Bstvk2\ndefHsGHD8N133+HQoUMIDAzEwoULnRqQiMghTvrCzVmajTJo0CBYrdZG75nN5oY/x8TE4B//+EeT\nY9en/jIu3NQN4aZu8lMSkWZY8gDLv5xQ2IUaqyOE4q5evRqJiYlN/mxCam+R0kSkUabY+uO6tCUK\nFb5dtpRcsGABOnTogPHjxzf581hbnuxQAPB++6eExgMA/i1eYg7Ep1VmnM8QGp+FOOEMR3tGCdfA\n6fPiNdLEluiUVvYVjrDiL1OEa/w3pgvXyECK0Pi/4GXhDIIRAABpX4vXUMTtcOW7du1aZGdn46uv\nvlI6DxGRPFpvvjk5OVi8eDF27tyJjh3t7GRBRNTW3GzaodnVDomJiYiNjcWxY8fg7++P1atX4/nn\nn0dVVRXMZjOioqLwzDPPtFVWIiL7Ojp4uIhmr3ybuvMjOTnZaWGIiGTT+rQDEZFLcrNpBzZfItIG\nN+tmbhaXiMgON+tmbhaXiMgOTjsQEanAhVYyOILNl4i0gVe+REQqcLNuxme4EZE2yNxSsql9y2+0\nYcMGREREIDw8HL/5zW9QWFioSFw2XyLSBpnNt6l9y2903333YdeuXSgsLMRrr72GadOmKRbXKSzt\nTULjO6BGPESdeAlrdYBwjaWVLwmNf63nfOEMf7IosKuZRfyhgUgVGz6sLEs4wmLMEq6RgI+Fayz5\n56tC481n9ghnuPKtcAn8safY+NQy8QwAZM/5NrVv+Y0GDhzY8OeYmBiUlpbK+6CbuNksCRGRHXa6\nmWVf/aGEVatWYeTIkYrUYvMlIm2w83w206D647q0t+WV37FjB1avXo2vv1ZmA2M2XyLSBid2s8LC\nQkydOhU5OTnw9PRUpCabLxFpg5O62cmTJxEfH4/169ejb1/xJ6lcx+ZLRNogs5slJiZi586dOHv2\nLPz9/ZGWloba2loAwPTp0zF//nxcuHABTz/9NABAr9dj3z7xSWQ2XyLSBEnmaoem9i2/0XvvvYf3\n3ntPXvFmsPkSkSbY3KybuVlcIqKmuVvzbfYOt6Zuuzt//jzMZjMCAwMxbNgwVFZWOj0kEVFLrt7R\nwaHDVTTbfJu67S4jIwNmsxlFRUV45JFHkJGR4dSARESOsLVv79DhKpptvoMGDbplTVtWVhaSkpIA\nAElJSfj000+dl46IyEE2tHfocBWtniWpqKiAj48PAMDHxwcVFRVNnrcx9UTDn0NNnggzKbAvABG5\nPctVwKLA1i03q3OhxuoIoSlqnU4HnU7X5M8SU/uIlCYijTLdUX9cl3ZZmbo2N1s/0Oq0Pj4+KC8v\nh6+vL06fPg1vb+8mzwvEMaFga09OERoPAAgSL1GVc7d4ET+x4X8at0A8gwL/MxR5TIvgVwRn0PTv\nW2v872rxX4wlb4jtSAYA6C02fFb2n4QjvLHzNeEahSsDxQroioQzAHCpKQVHtHo/37i4OGRmZgIA\nMjMzMXr0aMVDERG1lqbmfG++7W7+/PmYM2cOxo4di1WrVqF379748MMP2yorEZFdV+E6y8gc0Wzz\ntXfbXW5urlPCEBHJpfk5XyIiV+RKUwqOYPMlIk1g8yUiUsFttc6XiMhVcM6XiEgFnHYgIlJBjZaW\nmhERuQt3m/Nt9R1uRESuyAYPh46m5OTkICgoCP369cOiRYuaPMdisSAqKgqhoaEwmUzCeXnlS0Sa\nIHfO12az4bnnnkNubi78/PwwYMAAxMXFwWg0NpxTWVmJZ599Fl9++SUMBgPOnj0rnJdXvkSkCXL3\ndti3bx/69u2L3r17Q6/XY9y4cdiyZUujc/7+979jzJgxMBgMAIC77xbfqcppV77fIFpo/IheWcIZ\n7ux1RbhGJA4K13it4A2h8V1zy4UzXDzgK1xjROwnwjW+eDleaPy33z8gnAFHxUugrwI1BHPsRYx4\nhufES4SfVmZXMlH25nz/v+UcvrOctzvu1KlT8Pf3b3htMBiwd+/eRuccP34ctbW1GDJkCC5fvowX\nX3wRTz31lFBeTjsQkSbU4I4m3w809USgqWfD6w/Tvm/0c3t7kt+otrYWBQUF+Oqrr1BdXY2BAwfi\ngQceQL9+/WTnZfMlIk2QO+fr5+eHkpKShtclJSUN0wvX+fv74+6770anTp3QqVMnDB48GIcOHRJq\nvpzzJSJNqEN7h46bRUdH4/jx47BaraipqcEHH3yAuLi4Ruf87ne/w549e2Cz2VBdXY29e/ciODhY\nKC+vfIlIE+TeXuzh4YEVK1Zg+PDhsNlsmDx5MoxGI959910AwPTp0xEUFIRHH30U4eHhaNeuHaZO\nncrmS0QEiN1ePGLECIwYMaLRe9OnT2/0etasWZg1a5bsz7gZmy8RaQL3diAiUgGbLxGRCq7aWWrm\nqmSvdli4cCFCQkIQFhaG8ePH4+rVq0rmIiJqFXd7erGs5mu1WrFy5UoUFBTg8OHDsNls2LRpk9LZ\niIgc5m7NV9a0Q5cuXaDX61FdXY327dujuroafn5+SmcjInKYu20pKav5du/eHTNnzkSvXr3QqVMn\nDB8+HEOHDm10ziepRxr+bDT1gNHUQywpEWmCJQ+w/Ev5urfFY4ROnDiBpUuXwmq1omvXrnjiiSew\nYcMGPPnkkw3nxKeKLUAmIm0yxdYf16UtUaauK00pOEJW8z1w4ABiY2Ph5eUFAIiPj0deXl6j5iv6\nzeMkrBUaDwDtUSdcwxOVwjVS7k8TGr+4Qnxh99jYTOEaH36SJFwDHQXH/+lr8QzP/0a8Rm/xEogU\nG75nqlk4wpyVqcI1nsFfBSucEc4AuF/zlfWFW1BQEPLz83HlyhVIkoTc3FzhW+2IiERcRQeHDlch\n68o3IiICEydORHR0NNq1a4f7778f06ZNUzobEZHDbos5XwB45ZVX8MorryiZhYhINnebdnCvfyqI\niOxg8yUiUsFtsc6XiMjV3DZzvkREroTTDkREKqhxoWVkjuAz3IhIE+Q+ww0AcnJyEBQUhH79+mHR\nokVNnvPCCy+gX79+iIiIwMGDB4XzsvkSkSbY4OHQccs4mw3PPfcccnJycOTIEWzcuBFHjx5tdE52\ndja+//57HD9+HH/729/w9NNPC+dl8yUiTZC7peS+ffvQt29f9O7dG3q9HuPGjcOWLVsanZOVlYWk\npPrb62NiYlBZWYmKigqhvJzzJSJNsPeF21nLdzhnOdLkzwDg1KlT8Pf3b3htMBiwd+/eFs8pLS2F\nj4+P7LxsvkSkCfbmc7uZwtHNFN7wuijto0Y/1+l0DtWXJEnWOHuc1nzPwUto/BV0Es5Qhp7CNdJ3\nzReu0e4//i00/tqXdwln+LBUgR3JuomXwE+iBRTYkUx8ozrgAQVq+Eotn9MM433fCkf4Nfa2fFIL\nsjFSsMJa4QyA/HW+fn5+KCkpaXhdUlICg8HQ7DmlpaXCD5DgnC8RaUINOjh03Cw6OhrHjx+H1WpF\nTU0NPvjgA8TFxTU6Jy4uDuvWrQMA5Ofno1u3bkJTDgCnHYhII+TeXuzh4YEVK1Zg+PDhsNlsmDx5\nMoxGI959910AwPTp0zFy5EhkZ2ejb9++uOuuu7BmzRrhvGy+RKQJIrcXjxgxAiNGjGj03vTp0xu9\nXrFihez6TWHzJSJN4O3FREQqYPMlIlIBmy8RkQpEH9rb1th8iUgT3O3KV/Y638rKSiQkJMBoNCI4\nOBj5+flK5iIiahW5ezuoRfaV74svvoiRI0fi448/Rl1dHf79b7G7uIiIRNwWjxG6ePEidu/ejczM\nzPoiHh7o2rWrosGIiFrjtniMUHFxMXr06IFJkybh0KFD6N+/P5YtW4Y777yz4Zxtqb/cM36fyQ99\nTIamShHRbabIUo4iS7nidV1pSsERsppvXV0dCgoKsGLFCgwYMAAzZsxARkYG5s//ZRMac2qMYiGJ\nSDsCTb4INPk2vN6aJr5BEOB+zVcn3bxPmgPKy8sxcOBAFBcXAwD27NmDjIwMfP755/VFdTqMl1YJ\nBfPGGaHxADAIu4RrvIcpwjW+QbTQeNs18V+qc6+K7cAEQIEdyQC8+Y5gAZNwhN9LO4VrdFNga7Sl\nf5gjVqC3cARF1jt1+O0lofE1Xl1v2a6xtXQ6HbpePe3QuRfvuEf485Qga7WDr68v/P39UVRUBADI\nzc1FSEiIosGIiFrDVufh0OEqZCdZvnw5nnzySdTU1KBPnz6K7PJDRCSXrc69ph1kN9+IiAjs379f\nySxERLLdNs2XiMiV1NWy+RIRtblrNvdqZ+6VlojIHk47EBGp4Cf3amd8gCYRaUOdg0crnD9/Hmaz\nGYGBgRg2bBgqK5te3y1nozE2XyLSBic034yMDJjNZhQVFeGRRx5BRkZGk+dd32js6NGjKCwshNFo\nbLE2my8RaYMTmm9WVhaSkpIAAElJSfj0009vOef6RmPJyckAHN9ozL0mSYiI7Km1836Bpf6QoaKi\nAj4+PgAAHx8fVFRU3HKOIxuNNYXNl4i0wWbn/QhT/XHde2mNfmw2m1FefusuawsWLGj0WqfTQafT\n3XKeIxuNNYXNl4i0oZVTCtdt27bN7s98fHxQXl4OX19fnD59Gt7e3recYzAYYDAYMGDAAABAQkKC\n3bnhGzmt+fqjRGh8JMS3mQvGEeEaU/CecA1PwR2wxrT7WDjDmEezhWtgtHgJDHpaaHjkLvHHVb2E\nN4VrRNx/TLgGDortBuYtie+sdmZXL+EaNZ92Ea6hCCV23btJXFwcMjMzkZKSgszMTIwefetfghs3\nGgsMDHR4ozF+4UZE2uCEL9zmzJmDbdu2ITAwENu3b8ecOfXbgJaVleGxxx5rOO/6RmMREREoLCzE\nvHnzWqzNaQci0gaZ0w7N6d69O3Jzc295v2fPnti6dWvDazkbjbH5EpE2OKH5OhObLxFpg72lZi6K\nzZeItMHeUjMXxeZLRNrAaQciIhU4YamZM7H5EpE2uNmVr+x1vjabDVFRURg1apSSeYiI5HHCOl9n\nkt18ly1bhuDg4CbvdSYianO3Q/MtLS1FdnY2pkyZAkmSlM5ERNR6tQ4eLkLWnO9LL72ExYsX49Il\n+/em70m1NPy5l6k3epl6y/koItKa/7EAxyzK19X6UrPPP/8c3t7eiIqKgsVisXveotTLN7w6/PPh\nuGp0am20W+zGYOEaazBJuMbh6jCh8e3vVOC36g3xEhgnXqLdH/8tNP4/8YFwhv/CfwvXwHrxEvhM\nbEOaM4UKbGhTJV4CfVt7vgn4remX11lp9s5sHa2vdsjLy0NWVhays7Px008/4dKlS5g4cSLWrVvn\njHxERI5xoflcR7R6zjc9PR0lJSUoLi7Gpk2b8PDDD7PxEpH6boc53xtxtQMRuQStz/ne6KGHHsJD\nDz2kVBYiIvncbNqBd7gRkTaw+RIRqcCF5nMdwccIEZE2XHXwaIWPPvoIISEhaN++PQoKCpo8p6Sk\nBEOGDEFISAhCQ0Px1ltvOVSbzZeItMEJtxeHhYVh8+bNGDzY/j0Der0eb775Jr777jvk5+fj7bff\nxtGjR1uszWkHItIGJ0w7BAUFtXiOr68vfH19AQCdO3eG0WhEWVkZjEZjs+PYfIlIG+wtNfvRApy1\ntEkEq9WKgwcPIiYmpsVz2XyJSBvsTSl4muqP6/6n8e3MZrMZ5eXltwxLT09v1Za5VVVVSEhIwLJl\ny9C5c+cWz2fzJSJtkLnUbNu2bcIfXVtbizFjxmDChAkYPXq0Q2PYfIlIG5y81Mze9rmSJGHy5MkI\nDg7GjBkzHK6nk5ywIa9Op8Nr0jyhGv+BY8I5huNL4Rrz8QfhGn/AfKHxuRgqnEEJscgTrvExEoTG\n78WvhTN8qPuVcA3cHS9eI1JwfDfxCPhYgRrfCI7vrxPeF1yn0wGDHKyx2/HP27x5M1544QWcPXsW\nXbt2RVRUFL744guUlZVh6tSp2Lp1K/bs2YPBgwcjPDy8YbuFhQsX4tFHH222Nq98iUgbnHCH2+OP\nP47HH3/8lvd79uyJrVu3AgAefPBBXLt2rdW12XyJSBvc7A43Nl8i0obbaVczIiKXwY11iIhUwOZL\nRKQCzvkSEamglTuWqY3Nl4i0gdMOREQqcLNpB1n7+crdPJiIyGlsDh4uQtaV7/XNgyMjI1FVVYX+\n/fvDbDa3uH8lEZHTuNm0g6wrX19fX0RG1t+YfuPmwUREqnHCkyycSXjO197mwTtTdzf8+V5TL/Q2\n3Sv6UUSkBQcswDcW5eu62Zyv0K5mVVVVMJlMePXVVxvtYanT6YBTP4klW3uH2HgAXnNOCdc4l+8n\nXOOe2GKh8WVv3SecAd7iJdLGpQjXuENwPdDc+DeFM8BXvAQ+UqDG2UuCBcR/v4EPxUu8/Uex8c8q\ntKsZHK0h/nlKkP0ATTmbBxMRUT1ZzVfu5sFERFRPVvP9+uuvsX79euzYsQNRUVGIiopCTk6O0tmI\niDRL1hducjcPJiJyHvf6xo13uBGRRrjQOjIHyP7CjYjItdQ6eDjuo48+QkhICNq3b4+CggK75y1c\nuBAhISEICwvD+PHjcfVqy6t62HyJSCOuOHg4LiwsDJs3b8bgwYPtnmO1WrFy5UoUFBTg8OHDsNls\n2LRpU4u1Oe1ARBqh/JxvUFBQi+d06dIFer0e1dXVaN++Paqrq+Hn1/L9AWy+RKQR9uZ8838+nKN7\n9+6YOXMmevXqhU6dOmH48OEYOnRoi+M47UBEGmFvjrc/gGdvOBozm80ICwu75fjss88c+tQTJ05g\n6dKlsFqtKCsrQ1VVFTZs2NDiOF75EpFGyFvtsG3bNqFPPXDgAGJjY+Hl5QUAiI+PR15eHp588slm\nx/HKl4g0QvnVDjeytx9EUFAQ8vPzceXKFUiShNzcXAQHB7dYj82XiDRC+dUOmzdvhr+/P/Lz8/HY\nY49hxIgRAICysjI89thjAICIiAhMnDgR0dHRCA8PBwBMmzatxdpCu5rZLarTARsEyxrEc5gGi9/y\n/Ge8Klzj4fPbhcbv7z5AOMOXGC5coxsqhWtMK1onNP7zwJa/yGhJBwWetDjsD7tbPqkld4kN/3XK\nLuEI+6baX0LlqKdWrhQa/75umkK7mu1x8OwHXWJXM875EpFG8PZiIiIVuNftxWy+RKQRvPIlIlIB\nr3yJiFTAK18iIhW0bhmZ2th8iUgjeOVLRKQC95rz1fQdbpWWQrUj4KDlstoRAAAnLKVqR8AxS7na\nEQAAhywX1Y4AWC1qJ6h32qJ2AgU59/Zipcluvjk5OQgKCkK/fv2waNEiJTMphs33Fz9YTqkdAUWW\nCrUjAAAKXaH5/q9F7QT1NNV86xw8XIOs5muz2fDcc88hJycHR44cwcaNG3H06FGlsxERtcJtcOW7\nb98+9O3bF71794Zer8e4ceOwZcsWpbMREbWCe135ytpY5+OPP8aXX36JlT9vqLF+/Xrs3bsXy5cv\nry+q0ymbkog0TZmNdRzj6emJ8+fPC32eEmStdmjpf6gr7BhERLcPd+w5sqYd/Pz8UFJS0vC6pKQE\nBoMCe0ASEd0mZDXf6OhoHD9+HFarFTU1Nfjggw8QFxendDYiIs2SNe3g4eGBFStWYPjw4bDZbJg8\neTKMRqPS2YiINEv2Ot8RI0bg2LFj+P777zF37tyG911h/W9JSQmGDBmCkJAQhIaG4q233lIlB1C/\nLC8qKgqjRo1SLUNlZSUSEhJgNBoRHByM/HznPUbbnoULFyIkJARhYWEYP348rl4Vf5qEI5KTk+Hj\n44OwsLCG986fPw+z2YzAwEAMGzYMlZXiT+hobYbZs2fDaDQiIiIC8fHxuHjR+WuPm8px3ZIlS9Cu\nXTunfxFlL8Py5cthNBoRGhqKlJQUp2ZwGZKC6urqpD59+kjFxcVSTU2NFBERIR05ckTJj3DI6dOn\npYMHD0qSJEmXL1+WAgMDVckhSZK0ZMkSafz48dKoUaNU+XxJkqSJEydKq1atkiRJkmpra6XKyso2\n/fzi4mIpICBA+umnnyRJkqSxY8dKa9eubZPP3rVrl1RQUCCFhoY2vDd79mxp0aJFkiRJUkZGhpSS\nktLmGf6d9/3vAAAEXUlEQVT5z39KNptNkiRJSklJcXoGezkkSZJOnjwpDR8+XOrdu7d07ty5Ns+w\nfft2aejQoVJNTY0kSZJ05swZp2ZwFYreXuwq6399fX0RGRkJAOjcuTOMRiPKysraPEdpaSmys7Mx\nZcoU1b6NvXjxInbv3o3k5GQA9VNGXbt2bdMMXbp0gV6vR3V1Nerq6lBdXQ0/P782+exBgwbB09Oz\n0XtZWVlISkoCACQlJeHTTz9t8wxmsxnt2tX/9YuJiUFpqfNv/24qBwC8/PLLeP31153++fYyvPPO\nO5g7dy70ej0AoEePHm2SRW2KNt9Tp07B39+/4bXBYMCpU+re1mq1WnHw4EHExMS0+We/9NJLWLx4\nccNfMjUUFxejR48emDRpEu6//35MnToV1dXVbZqhe/fumDlzJnr16oWePXuiW7duGDpU/EGYclVU\nVMDHxwcA4OPjg4oKdW97Xr16NUaOHKnKZ2/ZsgUGg6HhqbtqOH78OHbt2oUHHngAJpMJBw4cUC1L\nW1K0K7jazRVVVVVISEjAsmXL0Llz5zb97M8//xze3t6IiopSdQ1iXV0dCgoK8Mwzz6CgoAB33XUX\nMjIy2jTDiRMnsHTpUlitVpSVlaGqqgobNmxo0wz26HQ6VX9vFyxYgA4dOmD8+PFt/tnV1dVIT09H\nWlpaw3tq/K7W1dXhwoULyM/Px+LFizF27Ng2z6AGRZuvK63/ra2txZgxYzBhwgSMHj26zT8/Ly8P\nWVlZCAgIQGJiIrZv346JEye2eQ6DwQCDwYABA+ofP5+QkICCgoI2zXDgwAHExsbCy8sLHh4eiI+P\nR15eXptmuJGPjw/Ky+t3WDt9+jS8vb1VybF27VpkZ2er9g/RiRMnYLVaERERgYCAAJSWlqJ///44\nc+ZMm+YwGAyIj48HAAwYMADt2rXDuXPn2jSDGhRtvq6y/leSJEyePBnBwcGYMWNGm38+AKSnp6Ok\npATFxcXYtGkTHn74Yaxbt67Nc/j6+sLf3x9FRUUAgNzcXISEhLRphqCgIOTn5+PKlSuQJAm5ubkI\nDg5u0ww3iouLQ2ZmJgAgMzNTlX+cc3JysHjxYmzZsgUdO3Zs888HgLCwMFRUVKC4uBjFxcUwGAwo\nKCho83+MRo8eje3btwMAioqKUFNTAy8vrzbNoAqlv8HLzs6WAgMDpT59+kjp6elKl3fI7t27JZ1O\nJ0VEREiRkZFSZGSk9MUXX6iSRZIkyWKxqLra4dtvv5Wio6Ol8PBw6fHHH2/z1Q6SJEmLFi2SgoOD\npdDQUGnixIkN32w727hx46R77rlH0uv1ksFgkFavXi2dO3dOeuSRR6R+/fpJZrNZunDhQptmWLVq\nldS3b1+pV69eDb+fTz/9tFMz3JijQ4cODf9f3CggIMDpqx2aylBTUyNNmDBBCg0Nle6//35px44d\nTs3gKmRtrENERGI0/SQLIiJXxeZLRKQCNl8iIhWw+RIRqYDNl4hIBWy+REQq+D8bwkAiBkFBxQAA\nAABJRU5ErkJggg==\n"
}
],
"prompt_number": 68
},
{
"cell_type": "code",
"collapsed": false,
"input": "def pprint16(img):\n\tfor x in range(16):\n\t\tfor y in range(16):\n\t\t\tval = img[16*x + y]\n\t\t\tif val:\n\t\t\t\tprint '#',\n\t\t\telse:\n\t\t\t\tprint '.',\n\t\tprint ''\n\tprint ''\n\nprint '% errori:',\nx = sum([1 for img, atteso in esempi16 if not all((pesi16 * img > 0).transpose() == atteso)])/float(len(esempi16))\nprint x\nif x:\n print \"Prova a eseguire un altro ciclo di training!\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "% errori: "
},
{
"output_type": "stream",
"stream": "stdout",
"text": "0.0\n"
}
],
"prompt_number": 69
},
{
"cell_type": "code",
"collapsed": false,
"input": "print 'Test sugli esempi NON usati come training:\\n\\n\\n' \n\nprint '% errori:',\nx = sum([1 for img, atteso in test_set if not all((pesi16 * img > 0).transpose() == atteso)])/float(len(test_set))\nprint x\n\n\nprint \"alcuni esempi:\"\nfor esempio in random.sample(test_set, 10):\n img, atteso = esempio\n prova = pesi16 * img > 0\n pprint16(img)\n print 'riconosciuto come:', [i for i in range(len(prova)) if prova[i]]\n print '\\n\\n'\n",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Test sugli esempi NON usati come training:\n\n\n\n% errori: 0.278\nalcuni esempi:\n. . . . . . . . . . # # . . . . \n. . . . . . . . . . # # . . . . \n. . . . . . . . . . # # . . . . \n. . . . . . . . . # # # . . . . \n. . . . . . . . . # # # . . . . \n. . . . . . . . # # # # . . . . \n. . . . . . . # # # # # . . . . \n. . . . . . . # . . . # . . . . \n. . . . . . # # . . . # # . . . \n# . . . # # # . . . . # # . . . \n# # # # # . . . . . . # # . . . \n# # # # . . . . . . . # # # . . \n. . . . . . . . . . . . # # . . \n. . . . . . . . . . . . . # # . \n. . . . . . . . . . . . . # # # \n. . . . . . . . . . . . . . # # \n\nriconosciuto come: [1]\n\n\n\n. . . # # # # # # # # . . . . . \n. . # # # # # # # # # . . . . . \n. # # # # . . # # # . . . . . . \n# # # # . . # # # # . . . . . . \n# # # . . . # # # . . . . . . . \n# # # . . # # # # . . . . . . . \n. . . . . # # # # . . . . . . . \n. . . . # # # . . . . . . . . . \n. . . # # # # . . . . . . . . . \n. . . # # # . . . . . . . . . . \n. . # # # . . . . . . . . . . . \n. # # # # . . . . . . . . . . . \n. # # # # . . . . . . . . . # # \n. # # # # # # # # # # # # # # # \n. # # # # # # # # # # # # . . . \n. . . # # # # # # . . . . . . . \n\nriconosciuto come: [2, 8]\n\n\n\n. . . . . . . . # # # # # # # # \n. . . . . . # # # # . . . . # # \n. . . . . . # # . . . . . . # # \n. . . . . # # # . . . . . . # # \n. . . . # # # . . . . . . # # . \n. . . . # # # . . . . # # # # . \n. . . . . # # . . . # # # . . . \n. . . . . # # # # # # # . . . . \n. . . . . # # # # # # # # . . . \n. . . . # # # . . # # # # # # . \n. . # # # . . . . . . . . # # # \n. # # # . . . . . . . . . . # # \n# # # . . . . . . . . . . # # # \n# # . . . . . . . . . # # # . . \n# # # . . . # # # # # # # . . . \n. # # # # # # # . . . . . . . . \n\nriconosciuto come: []\n\n\n\n. . . . . . . . . . . . . . # # \n. . . . . . . . . . . . . . # # \n. . . . . . . . . . . . . # # # \n. . . . . . . . . . . . . # # . \n. . . . . . . . . . . . # # # . \n. . . . . . . . . . . . # # # . \n. . . . . . . . . . . # # # . . \n. . . . . . . . . . # # # # . . \n. . . . . . . . . # # # # # . . \n. . . . . . . # # # # # # # . . \n. . . . . . # # # . . # # . . . \n. . . . # # # . . . . # # . . . \n# # # # # # . . . . . # # . . . \n# # # . . . . . . . . # # . . . \n. . . . . . . . . . . # # . . . \n. . . . . . . . . . . # # . . . \n\nriconosciuto come: []\n\n\n\n. . . . # # # # # # # # . . . . \n. . # # # # # # # # # # # . . . \n# # # # # . . . . . # # # # # . \n# # . . . . . . . . . . . # # . \n# # # . . . . . . . . . . . # # \n. # # . . . . . . . . . . . # # \n. # # # # # . . . . . . . # # # \n. . . # # # # # . # # # # # # . \n. . # # # # # # # # # # # # . . \n. # # # # # # # # # # # . . . . \n# # # . . . . . . . # # # . . . \n# # . . . . . . . . . # # # . . \n. # # . . . . . . . . # # # . . \n. # # # # . . . . . . # # # . . \n. . . # # # # # # # # # # . . . \n. . . . . . # # # # # # . . . . \n\nriconosciuto come: [8]\n\n\n\n. . . . . . . . . . . . # # # # \n. . . . . # # # # # # # # # # . \n. "
},
{
"output_type": "stream",
"stream": "stdout",
"text": ". . . # # # # . . . . . . . . \n. . # # # # . . . . . . . . . . \n. . . # # . . . . . . . . . . . \n. . . # # . . . . . . . . . . . \n. . . # # # . . . . . . . . . . \n. . . . # # . . . . . . . . . . \n. . . . # # . . . . . . . . . . \n# # . . # # . . . . . . . . . . \n# # . . # # . . . . . . . . . . \n# # . . # # # . . . . . . . . . \n# # . . # # . . . . . . . . . . \n# # . . # # . . . . . . . . . . \n. # # # # . . . . . . . . . . . \n. . # # . . . . . . . . . . . . \n\nriconosciuto come: [2, 6, 8]\n\n\n\n. . . . . # # # # # # # # . . . \n. . . . . # # . . . . # # # . . \n. . . . # # . . . . . . # # # . \n. . . . # # . . . . . . . # # . \n. # # . # # . . . . . . . . # # \n# # . . . . . . . . . . . . # # \n# # . . . . . . . . . . . . # # \n# # . . . . . . . . . . . . # # \n# # . . . . . . . . . . . . # # \n# # . . . . . . . . . . . . # . \n# # . . . . . . . . . . . # # . \n# # . . . . . . . . . . # # # . \n# # # . . . . . . . . . # # . . \n. # # # . . . . . # # # # . . . \n. . # # # # # . # # # # . . . . \n. . . # # # # # # # . . . . . . \n\nriconosciuto come: [0]\n\n\n\n. . . . . . . # # # # # # # # # \n. . . # # # # # # # . . # # # . \n# # # # # # . . . . . # # # # . \n. . . . . . . . . . . # # . . . \n. . . . . . . . . # # # # . . . \n. . . . . . . . . # # # . . . . \n. . . . . . . . # # # . . . . . \n. . . . # # . . # # . . . . . . \n. . . . # # # # # # . . . . . . \n. . . . . # # # # # # # # # # # \n. . . . . . # # . . # # # # . . \n. . . . . # # # . . . . . . . . \n. . . . . # # . . . . . . . . . \n. . . . # # # . . . . . . . . . \n. . . . # # # . . . . . . . . . \n. . . . . # # . . . . . . . . . \n\nriconosciuto come: [7]\n\n\n\n. . . # # # # # # # # . . . . . \n. . . # # # . . . # # # . . . . \n. . . # . . . . . . # # . . . . \n. . . . . . . . . . # # . . . . \n. . . . . . . . . # # # . . . . \n. . . . . . . . # # . . . . . . \n. . . . . . # # # . . . . . . . \n. . . . . . # # . . . . . . . . \n. . . # # # # . . . . . . . . . \n. . # # # . . . . . . . . . . . \n. # # # . . . . . . . . . . . . \n# # # . . . . . . . . . . . . . \n# # . . . . . . . . . . . . . . \n# # . . . . . . . . . . . . . . \n# # # # # # # # # # # # # # # # \n. . . # # # # # . . . . . . . . \n\nriconosciuto come: [2]\n\n\n\n. . . . . . . . # # # # # # # # \n. . . . . . . # # # # # . . . . \n. . . . # # # # # # . . . . . . \n. . . . # # # # . . . . . . . . \n. . # # # # # . . . . . . . . . \n. . # # # # . . . . . . . . . . \n. # # # # # # # # . . . . . . . \n. # # # # # # # # # # # . . . . \n# # # # # . . . . # # # # . . . \n# # # # . . . . . . . # # # . . \n# # # . . . . . . . . . # # . . \n# # # . . . . . . . . . # # . . \n# # # # . . . . . . . # # # . . \n. # # # # # # . . # # # # # . . \n. . . # # # # # # # # # . . . . \n. . . . # # # # # # . . . . . . \n\nriconosciuto come: [6]\n\n\n\n"
}
],
"prompt_number": 70
},
{
"cell_type": "code",
"collapsed": false,
"input": "",
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment