{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Notes to discuss with prof\n", "\n", "1. since the data is very skewed it won't make sense for us to do cross validation where we randomly choose which data to use for training and which data to use for testing, because if do that after duplicating the low count data then most of the data in testing set will be in training set\n", "2. what is the difference between training the network after performing oversampling and just training the network on the same data but more epochs\n", "3. can we train the model with just 64 examples but keep the positive class data same and randomly choose rest of 32 negative class data?" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from mygrad import Layer\n", "from mygrad import Value" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open('data.pckl', 'rb') as file:\n", " data = pickle.load(file)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from sklearn.utils import shuffle\n", "data = shuffle(data)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1024" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = [list(number) for number in data['number']]\n", "Y = [label for label in data['label']]\n", "\n", "len(X)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "for ix, row in enumerate(X):\n", " X[ix] = [Value(float(item)) for item in row]\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "Xtrain, Xtest, Ytrain, Ytest = X[:int(len(X)*0.8)], X[int(len(X)*0.8):], Y[:int(len(X)*0.8)], Y[int(len(X)*0.8):]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[Value(data=-0.4269173833626292), Value(data=1.5598219958582367), Value(data=-0.9060772972552846), Value(data=-1.7986536298166897), Value(data=-1.6629470204105083), Value(data=1.033417037918746), Value(data=-0.6271032437628579), Value(data=-0.08921159991615646), Value(data=-0.9441026687737217), Value(data=-1.1184262058721397), Value(data=0.3875233603513344), Value(data=-1.1191317646049086), Value(data=0.10773546057187167), Value(data=-0.13759482796954892), Value(data=-0.35568237147978543), Value(data=-0.648468795325317), Value(data=-1.5011307241514515), Value(data=-1.690738455164726), Value(data=1.086651726656151), Value(data=-1.2386293546252176), Value(data=1.3113078129753322), Value(data=-1.0788557253441757), Value(data=-1.8867888938773758)]\n" ] } ], "source": [ "hiddenLayer1 = Layer(10, 1, activation='reLu')\n", "outputLayer = Layer(11, 1, activation='sigmoid')\n", "parameters = outputLayer.parameters() + hiddenLayer1.parameters()\n", "print(parameters)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def predict(x):\n", " x1 = hiddenLayer1(x) \n", " final = outputLayer([x1] + x)\n", " return final" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import accuracy_score, precision_score, f1_score, recall_score\n", "def getAccuracy(X, Y):\n", " predicted = [1 if predict(x).data > 0.5 else 0 for x in X ]\n", " return accuracy_score(Y, predicted)\n", "def getPrecision(X, Y):\n", " predicted = [1 if predict(x).data > 0.5 else 0 for x in X ]\n", " return precision_score(Y, predicted)\n", "def getf1(X, Y):\n", " predicted = [1 if predict(x).data > 0.5 else 0 for x in X ]\n", " return f1_score(Y, predicted)\n", "def getRecall(X, Y):\n", " predicted = [1 if predict(x).data > 0.5 else 0 for x in X ]\n", " return recall_score(Y, predicted)\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5219512195121951" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "getAccuracy(Xtest, Ytest)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4 fold cross validation without momentum" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fold no. 1\n", "loss: 0.37573595553895384 epoch: 0\n", "loss: 0.33397055440340734 epoch: 1\n", "loss: 0.3018161127415282 epoch: 2\n", "loss: 0.27680608399065376 epoch: 3\n", "loss: 0.25879246704249065 epoch: 4\n", "loss: 0.2468074865295087 epoch: 5\n", "loss: 0.23748972817642466 epoch: 6\n", "loss: 0.22921592248421788 epoch: 7\n", "loss: 0.22258545130356772 epoch: 8\n", "loss: 0.21719074030855862 epoch: 9\n", "loss: 0.2124606473917233 epoch: 10\n", "loss: 0.20828183852046642 epoch: 11\n", "loss: 0.20459067797450095 epoch: 12\n", "loss: 0.20129295819299053 epoch: 13\n", "loss: 0.198302944113399 epoch: 14\n", "loss: 0.19554594755074953 epoch: 15\n", "loss: 0.19302387597139112 epoch: 16\n", "loss: 0.19068211124109144 epoch: 17\n", "loss: 0.18846860228271742 epoch: 18\n", "loss: 0.18646297932958714 epoch: 19\n", "loss: 0.1845893025363569 epoch: 20\n", "loss: 0.18288100150665237 epoch: 21\n", "loss: 0.1811183858945435 epoch: 22\n", "loss: 0.17952228728423725 epoch: 23\n", "loss: 0.17798156816842317 epoch: 24\n", "loss: 0.17652089873416205 epoch: 25\n", "loss: 0.17537759548297105 epoch: 26\n", "loss: 0.17435246000303037 epoch: 27\n", "loss: 0.17263594849028185 epoch: 28\n", "loss: 0.17149597721569307 epoch: 29\n", "loss: 0.1706257533615121 epoch: 30\n", "loss: 0.16914430082467521 epoch: 31\n", "loss: 0.16810937216249427 epoch: 32\n", "loss: 0.16716654938204006 epoch: 33\n", "loss: 0.16599156503054782 epoch: 34\n", "loss: 0.16510101354642268 epoch: 35\n", "loss: 0.16419733049043764 epoch: 36\n", "loss: 0.16366629273719377 epoch: 37\n", "loss: 0.16311990931859954 epoch: 38\n", "loss: 0.16207796105830802 epoch: 39\n", "loss: 0.1614108249989092 epoch: 40\n", "loss: 0.1606460448700579 epoch: 41\n", "loss: 0.15974552139859902 epoch: 42\n", "loss: 0.1596599143952281 epoch: 43\n", "loss: 0.15826975912343522 epoch: 44\n", "loss: 0.1584276565803635 epoch: 45\n", "loss: 0.15678038192837696 epoch: 46\n", "loss: 0.15703013795427326 epoch: 47\n", "loss: 0.15566588412309512 epoch: 48\n", "loss: 0.15630263935162528 epoch: 49\n", "loss: 0.15403329987960063 epoch: 50\n", "loss: 0.15405031141825168 epoch: 51\n", "loss: 0.15407512023298076 epoch: 52\n", "loss: 0.15512835889188498 epoch: 53\n", "loss: 0.15200033685381262 epoch: 54\n", "loss: 0.15339022139270628 epoch: 55\n", "loss: 0.15425244464253499 epoch: 56\n", "loss: 0.15118459332737497 epoch: 57\n", "loss: 0.1507747184705248 epoch: 58\n", "loss: 0.15170648332575293 epoch: 59\n", "loss: 0.14880846470120732 epoch: 60\n", "loss: 0.14875118695696332 epoch: 61\n", "loss: 0.15005737402197827 epoch: 62\n", "loss: 0.14734267076488938 epoch: 63\n", "loss: 0.1468527978310063 epoch: 64\n", "loss: 0.14703703896756531 epoch: 65\n", "loss: 0.1505778958303549 epoch: 66\n", "loss: 0.14782963779548441 epoch: 67\n", "loss: 0.14532354052029284 epoch: 68\n", "loss: 0.14572240209885337 epoch: 69\n", "loss: 0.14766963045587533 epoch: 70\n", "loss: 0.149479861279388 epoch: 71\n", "loss: 0.14679302832754168 epoch: 72\n", "loss: 0.14425733859970524 epoch: 73\n", "loss: 0.14597448119384554 epoch: 74\n", "loss: 0.14736700397107766 epoch: 75\n", "loss: 0.14480804167497072 epoch: 76\n", "loss: 0.1424616018303761 epoch: 77\n", "loss: 0.14443726399504458 epoch: 78\n", "loss: 0.1461971091659815 epoch: 79\n", "loss: 0.14373642765048164 epoch: 80\n", "loss: 0.14147056954029877 epoch: 81\n", "loss: 0.1448244152156758 epoch: 82\n", "loss: 0.1448567660467712 epoch: 83\n", "loss: 0.14250982540223295 epoch: 84\n", "loss: 0.14033485944796284 epoch: 85\n", "loss: 0.14191925084633508 epoch: 86\n", "loss: 0.1431900128117084 epoch: 87\n", "loss: 0.14091185774918394 epoch: 88\n", "loss: 0.1394048482512208 epoch: 89\n", "loss: 0.14139970030956792 epoch: 90\n", "loss: 0.13933014344215056 epoch: 91\n", "loss: 0.1410064939645472 epoch: 92\n", "loss: 0.14291859256194253 epoch: 93\n", "loss: 0.1406950597509687 epoch: 94\n", "loss: 0.13868251712845947 epoch: 95\n", "loss: 0.13892985603088473 epoch: 96\n", "loss: 0.14070626917126233 epoch: 97\n", "loss: 0.13865749240896025 epoch: 98\n", "loss: 0.1369015189042515 epoch: 99\n", "loss: 0.13783138418762694 epoch: 100\n", "loss: 0.13720850013853184 epoch: 101\n", "loss: 0.1398483031082388 epoch: 102\n", "loss: 0.1378487782097135 epoch: 103\n", "loss: 0.136012290286936 epoch: 104\n", "loss: 0.13952711293902167 epoch: 105\n", "loss: 0.14034887865495008 epoch: 106\n", "loss: 0.13829917663543997 epoch: 107\n", "loss: 0.13646420483617036 epoch: 108\n", "loss: 0.1351315026838636 epoch: 109\n", "loss: 0.13586202481625942 epoch: 110\n", "loss: 0.1351469802839512 epoch: 111\n", "loss: 0.13740262587432187 epoch: 112\n", "loss: 0.13562316286528917 epoch: 113\n", "loss: 0.13388518163789864 epoch: 114\n", "loss: 0.1346693384612657 epoch: 115\n", "loss: 0.13525973947235753 epoch: 116\n", "loss: 0.13821507146360093 epoch: 117\n", "loss: 0.13621396710238776 epoch: 118\n", "loss: 0.13451159554352363 epoch: 119\n", "loss: 0.13315645758562347 epoch: 120\n", "loss: 0.13563311462583874 epoch: 121\n", "loss: 0.133962562208412 epoch: 122\n", "loss: 0.13265582880747312 epoch: 123\n", "loss: 0.13493762801086215 epoch: 124\n", "loss: 0.13328611763241505 epoch: 125\n", "loss: 0.13260728378220396 epoch: 126\n", "loss: 0.13644543059782474 epoch: 127\n", "loss: 0.13460765233803126 epoch: 128\n", "loss: 0.13299829379307632 epoch: 129\n", "accuracy test 0.94921875 train 0.9557291666666666\n", "f1score test 0.953405017921147 train 0.9570707070707071\n", "precision test 0.910958904109589 train 0.9176755447941889\n", "recall test 1.0 train 1.0\n", "\n", "fold no. 2\n", "loss: 0.4866973252558418 epoch: 0\n", "loss: 0.41644531508789806 epoch: 1\n", "loss: 0.3689243389632629 epoch: 2\n", "loss: 0.3337170714299505 epoch: 3\n", "loss: 0.30742804758322 epoch: 4\n", "loss: 0.2869560810726914 epoch: 5\n", "loss: 0.2704587074814627 epoch: 6\n", "loss: 0.25681894780544334 epoch: 7\n", "loss: 0.245433564499355 epoch: 8\n", "loss: 0.2368568720930045 epoch: 9\n", "loss: 0.2299075838558373 epoch: 10\n", "loss: 0.22469050013447614 epoch: 11\n", "loss: 0.2208513559257093 epoch: 12\n", "loss: 0.21755402456146186 epoch: 13\n", "loss: 0.21456878903262075 epoch: 14\n", "loss: 0.21193787539089207 epoch: 15\n", "loss: 0.20955441719053092 epoch: 16\n", "loss: 0.207363022415751 epoch: 17\n", "loss: 0.20533016150921413 epoch: 18\n", "loss: 0.2034326388404791 epoch: 19\n", "loss: 0.20165280899132856 epoch: 20\n", "loss: 0.19997237003820692 epoch: 21\n", "loss: 0.19834516618470963 epoch: 22\n", "loss: 0.19680338976473316 epoch: 23\n", "loss: 0.19531986761328532 epoch: 24\n", "loss: 0.19384167305750583 epoch: 25\n", "loss: 0.1924368315599832 epoch: 26\n", "loss: 0.19109527632696532 epoch: 27\n", "loss: 0.18980929469795216 epoch: 28\n", "loss: 0.18853189787291996 epoch: 29\n", "loss: 0.18730180582761885 epoch: 30\n", "loss: 0.18607610811117803 epoch: 31\n", "loss: 0.1848951901961053 epoch: 32\n", "loss: 0.18375432785111362 epoch: 33\n", "loss: 0.182649994989443 epoch: 34\n", "loss: 0.1815702415591492 epoch: 35\n", "loss: 0.18048558540364895 epoch: 36\n", "loss: 0.1794326711856165 epoch: 37\n", "loss: 0.178409058406972 epoch: 38\n", "loss: 0.17741280668861395 epoch: 39\n", "loss: 0.17644104308585307 epoch: 40\n", "loss: 0.17545533508163685 epoch: 41\n", "loss: 0.17449485893888061 epoch: 42\n", "loss: 0.17355792450682705 epoch: 43\n", "loss: 0.1726432342110939 epoch: 44\n", "loss: 0.17174970008989127 epoch: 45\n", "loss: 0.17087636595695155 epoch: 46\n", "loss: 0.17002237122859362 epoch: 47\n", "loss: 0.16918693162615422 epoch: 48\n", "loss: 0.1683693270767674 epoch: 49\n", "loss: 0.1675809407759738 epoch: 50\n", "loss: 0.1668237042233324 epoch: 51\n", "loss: 0.16605008732365217 epoch: 52\n", "loss: 0.1653355372867922 epoch: 53\n", "loss: 0.16460301452410614 epoch: 54\n", "loss: 0.16391256773279347 epoch: 55\n", "loss: 0.16321033779463812 epoch: 56\n", "loss: 0.16259276596652725 epoch: 57\n", "loss: 0.1620396720088726 epoch: 58\n", "loss: 0.16128485215605076 epoch: 59\n", "loss: 0.16071922188828108 epoch: 60\n", "loss: 0.16020074341657894 epoch: 61\n", "loss: 0.15954134973882783 epoch: 62\n", "loss: 0.15904574563142063 epoch: 63\n", "loss: 0.15835414773921713 epoch: 64\n", "loss: 0.1577935039307171 epoch: 65\n", "loss: 0.15730158859826893 epoch: 66\n", "loss: 0.1568283297622172 epoch: 67\n", "loss: 0.1563308504311571 epoch: 68\n", "loss: 0.15588183532443461 epoch: 69\n", "loss: 0.15528213311177202 epoch: 70\n", "loss: 0.15485290040377145 epoch: 71\n", "loss: 0.1543431704779687 epoch: 72\n", "loss: 0.15391331959141738 epoch: 73\n", "loss: 0.15341499233645273 epoch: 74\n", "loss: 0.15312342926311223 epoch: 75\n", "loss: 0.1524494194009261 epoch: 76\n", "loss: 0.15209498043537348 epoch: 77\n", "loss: 0.15171328893722327 epoch: 78\n", "loss: 0.15133260958397693 epoch: 79\n", "loss: 0.1508079760237914 epoch: 80\n", "loss: 0.15058659904813881 epoch: 81\n", "loss: 0.15009703157042947 epoch: 82\n", "loss: 0.14994649428833284 epoch: 83\n", "loss: 0.1492487966313337 epoch: 84\n", "loss: 0.14888408836061698 epoch: 85\n", "loss: 0.14873044417577366 epoch: 86\n", "loss: 0.1484341326885224 epoch: 87\n", "loss: 0.1478014692926164 epoch: 88\n", "loss: 0.14768167853283617 epoch: 89\n", "loss: 0.14711927530212318 epoch: 90\n", "loss: 0.1470017556548842 epoch: 91\n", "loss: 0.1464696741361195 epoch: 92\n", "loss: 0.1464472986324771 epoch: 93\n", "loss: 0.1457880117450023 epoch: 94\n", "loss: 0.14562055499047288 epoch: 95\n", "loss: 0.1455201230648576 epoch: 96\n", "loss: 0.14485199019046094 epoch: 97\n", "loss: 0.14466170255789268 epoch: 98\n", "loss: 0.1444513939128172 epoch: 99\n", "loss: 0.1439710386743098 epoch: 100\n", "loss: 0.14374148068729606 epoch: 101\n", "loss: 0.1435144374980435 epoch: 102\n", "loss: 0.1433731830862707 epoch: 103\n", "loss: 0.14284937207690693 epoch: 104\n", "loss: 0.14275798612421567 epoch: 105\n", "loss: 0.14226737996051972 epoch: 106\n", "loss: 0.14220694961005217 epoch: 107\n", "loss: 0.14210183598540216 epoch: 108\n", "loss: 0.14151698430471588 epoch: 109\n", "loss: 0.14146732248006136 epoch: 110\n", "loss: 0.1409934618188285 epoch: 111\n", "loss: 0.14107636218846376 epoch: 112\n", "loss: 0.14074563085701025 epoch: 113\n", "loss: 0.14063090081942706 epoch: 114\n", "loss: 0.14030350105714756 epoch: 115\n", "loss: 0.14017190273107324 epoch: 116\n", "loss: 0.13982933342833243 epoch: 117\n", "loss: 0.13975283340327838 epoch: 118\n", "loss: 0.13933495611994912 epoch: 119\n", "loss: 0.139275796443558 epoch: 120\n", "loss: 0.1389856564091035 epoch: 121\n", "loss: 0.13938876710905834 epoch: 122\n", "loss: 0.1381564195769227 epoch: 123\n", "loss: 0.1383388044703441 epoch: 124\n", "loss: 0.13862408832590462 epoch: 125\n", "loss: 0.13919155736930047 epoch: 126\n", "loss: 0.13753120149186104 epoch: 127\n", "loss: 0.1384924441418665 epoch: 128\n", "loss: 0.13952732265554277 epoch: 129\n", "accuracy test 0.9609375 train 0.9544270833333334\n", "f1score test 0.963235294117647 train 0.9560853199498118\n", "precision test 0.9290780141843972 train 0.9158653846153846\n", "recall test 1.0 train 1.0\n", "\n", "fold no. 3\n", "loss: 1.0275432942083498 epoch: 0\n", "loss: 0.9578575931825666 epoch: 1\n", "loss: 0.9075661213592326 epoch: 2\n", "loss: 0.869464937494952 epoch: 3\n", "loss: 0.8364595174395587 epoch: 4\n", "loss: 0.8076249485763958 epoch: 5\n", "loss: 0.7828773863859919 epoch: 6\n", "loss: 0.7627155341727909 epoch: 7\n", "loss: 0.745109591986264 epoch: 8\n", "loss: 0.7297087779531674 epoch: 9\n", "loss: 0.7157146779566056 epoch: 10\n", "loss: 0.7034230301469935 epoch: 11\n", "loss: 0.6920224860492449 epoch: 12\n", "loss: 0.6817921764838848 epoch: 13\n", "loss: 0.6722606098064483 epoch: 14\n", "loss: 0.6634842272212922 epoch: 15\n", "loss: 0.6555368369402651 epoch: 16\n", "loss: 0.6480733238365858 epoch: 17\n", "loss: 0.6409903339739373 epoch: 18\n", "loss: 0.6342627572035959 epoch: 19\n", "loss: 0.6279952160507387 epoch: 20\n", "loss: 0.6223019337210842 epoch: 21\n", "loss: 0.6168465990618027 epoch: 22\n", "loss: 0.6116367354373334 epoch: 23\n", "loss: 0.606628050833703 epoch: 24\n", "loss: 0.6018563645022069 epoch: 25\n", "loss: 0.59733871975793 epoch: 26\n", "loss: 0.5929704010928328 epoch: 27\n", "loss: 0.5887435343817764 epoch: 28\n", "loss: 0.5846506382151457 epoch: 29\n", "loss: 0.5807060667034362 epoch: 30\n", "loss: 0.5769191114350246 epoch: 31\n", "loss: 0.5732545282920427 epoch: 32\n", "loss: 0.5696936943023108 epoch: 33\n", "loss: 0.5662194440747806 epoch: 34\n", "loss: 0.5628386681226026 epoch: 35\n", "loss: 0.5595590749255314 epoch: 36\n", "loss: 0.5563452400516654 epoch: 37\n", "loss: 0.5531938093094334 epoch: 38\n", "loss: 0.5501015394888932 epoch: 39\n", "loss: 0.5470652917454935 epoch: 40\n", "loss: 0.5440820252286511 epoch: 41\n", "loss: 0.5411487909400784 epoch: 42\n", "loss: 0.5382627258091738 epoch: 43\n", "loss: 0.5354210469740196 epoch: 44\n", "loss: 0.5326210462579407 epoch: 45\n", "loss: 0.529860084832287 epoch: 46\n", "loss: 0.527135588057184 epoch: 47\n", "loss: 0.5244450404928289 epoch: 48\n", "loss: 0.5217859810747116 epoch: 49\n", "loss: 0.5191559984471581 epoch: 50\n", "loss: 0.5165527264505789 epoch: 51\n", "loss: 0.5139738397589606 epoch: 52\n", "loss: 0.5114170496653553 epoch: 53\n", "loss: 0.5088801000146489 epoch: 54\n", "loss: 0.5063607632845634 epoch: 55\n", "loss: 0.503856836817702 epoch: 56\n", "loss: 0.5013661392098921 epoch: 57\n", "loss: 0.49888650686255714 epoch: 58\n", "loss: 0.4964157907101804 epoch: 59\n", "loss: 0.49395185313755563 epoch: 60\n", "loss: 0.4914925651060497 epoch: 61\n", "loss: 0.48903580351341264 epoch: 62\n", "loss: 0.4865794488180946 epoch: 63\n", "loss: 0.4841213829667756 epoch: 64\n", "loss: 0.48165948767309763 epoch: 65\n", "loss: 0.4791916431069109 epoch: 66\n", "loss: 0.4767157270670279 epoch: 67\n", "loss: 0.4742296147271185 epoch: 68\n", "loss: 0.4717311790646303 epoch: 69\n", "loss: 0.4692182921072701 epoch: 70\n", "loss: 0.4666888271616736 epoch: 71\n", "loss: 0.46414066222551276 epoch: 72\n", "loss: 0.46157168482885336 epoch: 73\n", "loss: 0.4589797986049265 epoch: 74\n", "loss: 0.4563629319560573 epoch: 75\n", "loss: 0.45371020021987635 epoch: 76\n", "loss: 0.4510022945294712 epoch: 77\n", "loss: 0.4482432527330932 epoch: 78\n", "loss: 0.44544214469120164 epoch: 79\n", "loss: 0.4425862974426577 epoch: 80\n", "loss: 0.43965910349153453 epoch: 81\n", "loss: 0.43663539248506716 epoch: 82\n", "loss: 0.4335121577125862 epoch: 83\n", "loss: 0.4303190452386826 epoch: 84\n", "loss: 0.4270544304183648 epoch: 85\n", "loss: 0.4237173380613914 epoch: 86\n", "loss: 0.4202598583767015 epoch: 87\n", "loss: 0.4166235441270236 epoch: 88\n", "loss: 0.4128982802818701 epoch: 89\n", "loss: 0.4090731860960545 epoch: 90\n", "loss: 0.4051452915010556 epoch: 91\n", "loss: 0.40107437682276964 epoch: 92\n", "loss: 0.3965781592629817 epoch: 93\n", "loss: 0.39199204237093954 epoch: 94\n", "loss: 0.3873371304277496 epoch: 95\n", "loss: 0.3826394143484092 epoch: 96\n", "loss: 0.377904210129592 epoch: 97\n", "loss: 0.3728845538230497 epoch: 98\n", "loss: 0.36778845778546976 epoch: 99\n", "loss: 0.36261656856940094 epoch: 100\n", "loss: 0.35748903723359776 epoch: 101\n", "loss: 0.35219209544312613 epoch: 102\n", "loss: 0.34705655029551236 epoch: 103\n", "loss: 0.34201302027358943 epoch: 104\n", "loss: 0.33672520439186315 epoch: 105\n", "loss: 0.33158637118168127 epoch: 106\n", "loss: 0.32668808044990133 epoch: 107\n", "loss: 0.3216823375714773 epoch: 108\n", "loss: 0.31666109748925264 epoch: 109\n", "loss: 0.3116808612615113 epoch: 110\n", "loss: 0.30615912826937103 epoch: 111\n", "loss: 0.30078871860094164 epoch: 112\n", "loss: 0.29538778084529943 epoch: 113\n", "loss: 0.2901180113634108 epoch: 114\n", "loss: 0.28518171706049406 epoch: 115\n", "loss: 0.2805460932939522 epoch: 116\n", "loss: 0.2762602928411815 epoch: 117\n", "loss: 0.2722645887042325 epoch: 118\n", "loss: 0.26852635578584627 epoch: 119\n", "loss: 0.2649899296163774 epoch: 120\n", "loss: 0.2613530818985914 epoch: 121\n", "loss: 0.2567660059300666 epoch: 122\n", "loss: 0.25084530739849675 epoch: 123\n", "loss: 0.24496334351865784 epoch: 124\n", "loss: 0.23966478031836 epoch: 125\n", "loss: 0.23489066068189943 epoch: 126\n", "loss: 0.2305873609363517 epoch: 127\n", "loss: 0.22670628419543995 epoch: 128\n", "loss: 0.22320352659354065 epoch: 129\n", "accuracy test 0.91796875 train 0.9296875\n", "f1score test 0.923076923076923 train 0.9346246973365617\n", "precision test 0.8571428571428571 train 0.8772727272727273\n", "recall test 1.0 train 1.0\n", "\n", "fold no. 4\n", "loss: 1.2896150996005096 epoch: 0\n", "loss: 1.1098244781718036 epoch: 1\n", "loss: 0.9998571158744017 epoch: 2\n", "loss: 0.9200168892957966 epoch: 3\n", "loss: 0.8530897731101232 epoch: 4\n", "loss: 0.7930237243172769 epoch: 5\n", "loss: 0.7376364782834288 epoch: 6\n", "loss: 0.6860504908563037 epoch: 7\n", "loss: 0.6377987025341514 epoch: 8\n", "loss: 0.5925062255983626 epoch: 9\n", "loss: 0.5497762995577337 epoch: 10\n", "loss: 0.5091863893128747 epoch: 11\n", "loss: 0.4703712931015841 epoch: 12\n", "loss: 0.43316792980827856 epoch: 13\n", "loss: 0.397768307769488 epoch: 14\n", "loss: 0.36478302017286485 epoch: 15\n", "loss: 0.3350603154790905 epoch: 16\n", "loss: 0.31000020516810467 epoch: 17\n", "loss: 0.2900867053332955 epoch: 18\n", "loss: 0.274451320716229 epoch: 19\n", "loss: 0.26277549542965856 epoch: 20\n", "loss: 0.25393478162001887 epoch: 21\n", "loss: 0.2466950588215587 epoch: 22\n", "loss: 0.2405540945265736 epoch: 23\n", "loss: 0.2352398623954112 epoch: 24\n", "loss: 0.23095061477958415 epoch: 25\n", "loss: 0.22723828935213888 epoch: 26\n", "loss: 0.22394044347611716 epoch: 27\n", "loss: 0.22095195938809176 epoch: 28\n", "loss: 0.21820742605082138 epoch: 29\n", "loss: 0.21566239814288812 epoch: 30\n", "loss: 0.21328456283658495 epoch: 31\n", "loss: 0.21104929031477085 epoch: 32\n", "loss: 0.20893720347265204 epoch: 33\n", "loss: 0.206932730118554 epoch: 34\n", "loss: 0.20502316764158696 epoch: 35\n", "loss: 0.20319803715340626 epoch: 36\n", "loss: 0.20144861491087668 epoch: 37\n", "loss: 0.19976758043063156 epoch: 38\n", "loss: 0.19814874595791884 epoch: 39\n", "loss: 0.1965868450943621 epoch: 40\n", "loss: 0.19506788275250345 epoch: 41\n", "loss: 0.19358164310046627 epoch: 42\n", "loss: 0.19215989854272547 epoch: 43\n", "loss: 0.19081388660177723 epoch: 44\n", "loss: 0.18951545444675028 epoch: 45\n", "loss: 0.18827170665617646 epoch: 46\n", "loss: 0.18703368099038217 epoch: 47\n", "loss: 0.18577167573734796 epoch: 48\n", "loss: 0.1845510124978676 epoch: 49\n", "loss: 0.18338915483269141 epoch: 50\n", "loss: 0.1822559141622845 epoch: 51\n", "loss: 0.18114049953210898 epoch: 52\n", "loss: 0.1800153601507127 epoch: 53\n", "loss: 0.17889632412291268 epoch: 54\n", "loss: 0.17780724821281582 epoch: 55\n", "loss: 0.17674192238224418 epoch: 56\n", "loss: 0.17565505921764607 epoch: 57\n", "loss: 0.17460120080136357 epoch: 58\n", "loss: 0.17356521040369535 epoch: 59\n", "loss: 0.17255047098040383 epoch: 60\n", "loss: 0.17155993470235767 epoch: 61\n", "loss: 0.170584836462083 epoch: 62\n", "loss: 0.16962920647454663 epoch: 63\n", "loss: 0.16869206738322404 epoch: 64\n", "loss: 0.16777269095084252 epoch: 65\n", "loss: 0.16687048787866365 epoch: 66\n", "loss: 0.16599308669804297 epoch: 67\n", "loss: 0.16514099951016217 epoch: 68\n", "loss: 0.16428614031402072 epoch: 69\n", "loss: 0.16346033815551123 epoch: 70\n", "loss: 0.16263388799001327 epoch: 71\n", "loss: 0.1618287421158048 epoch: 72\n", "loss: 0.1610183665012515 epoch: 73\n", "loss: 0.16025629787230405 epoch: 74\n", "loss: 0.1594746189961126 epoch: 75\n", "loss: 0.1587227071121282 epoch: 76\n", "loss: 0.15801892723108416 epoch: 77\n", "loss: 0.1572834736203767 epoch: 78\n", "loss: 0.15658860948581035 epoch: 79\n", "loss: 0.15596102794666303 epoch: 80\n", "loss: 0.1552032770890088 epoch: 81\n", "loss: 0.15452896773911393 epoch: 82\n", "loss: 0.1540579966418598 epoch: 83\n", "loss: 0.15362613212569431 epoch: 84\n", "loss: 0.15265519696812946 epoch: 85\n", "loss: 0.15207420393854093 epoch: 86\n", "loss: 0.15165428181992469 epoch: 87\n", "loss: 0.15126334322263002 epoch: 88\n", "loss: 0.15028359359603352 epoch: 89\n", "loss: 0.14983421700813068 epoch: 90\n", "loss: 0.14932646315469775 epoch: 91\n", "loss: 0.14906663462247666 epoch: 92\n", "loss: 0.1481563007887694 epoch: 93\n", "loss: 0.14788729777647658 epoch: 94\n", "loss: 0.14704809487240297 epoch: 95\n", "loss: 0.14664415968082953 epoch: 96\n", "loss: 0.1463263487725536 epoch: 97\n", "loss: 0.1459896868058639 epoch: 98\n", "loss: 0.1464982002984429 epoch: 99\n", "loss: 0.14511794515497187 epoch: 100\n", "loss: 0.14525330157685254 epoch: 101\n", "loss: 0.14393735568358107 epoch: 102\n", "loss: 0.1438839969678795 epoch: 103\n", "loss: 0.14344525502632716 epoch: 104\n", "loss: 0.14557580454157476 epoch: 105\n", "loss: 0.1423781674380431 epoch: 106\n", "loss: 0.14272257799875493 epoch: 107\n", "loss: 0.14642802629060592 epoch: 108\n", "loss: 0.14261609636982137 epoch: 109\n", "loss: 0.1431645359955052 epoch: 110\n", "loss: 0.1469681751234988 epoch: 111\n", "loss: 0.14307278839163914 epoch: 112\n", "loss: 0.14070026858408585 epoch: 113\n", "loss: 0.14138468806747653 epoch: 114\n", "loss: 0.14185109799342493 epoch: 115\n", "loss: 0.14591713019519778 epoch: 116\n", "loss: 0.1420075832788537 epoch: 117\n", "loss: 0.13938731281250807 epoch: 118\n", "loss: 0.13991096140069806 epoch: 119\n", "loss: 0.14140511548544157 epoch: 120\n", "loss: 0.1448300629646812 epoch: 121\n", "loss: 0.14102406946282525 epoch: 122\n", "loss: 0.138241318549996 epoch: 123\n", "loss: 0.13792448741285335 epoch: 124\n", "loss: 0.13988027533982947 epoch: 125\n", "loss: 0.14380289645608385 epoch: 126\n", "loss: 0.1400994570662787 epoch: 127\n", "loss: 0.13716470828099886 epoch: 128\n", "loss: 0.13734737657946916 epoch: 129\n", "accuracy test 0.9609375 train 0.9557291666666666\n", "f1score test 0.9606299212598425 train 0.9582309582309582\n", "precision test 0.9242424242424242 train 0.9198113207547169\n", "recall test 1.0 train 1.0\n", "\n" ] } ], "source": [ "accuracies = []\n", "f1scores = []\n", "precisionscores = []\n", "recallscores = []\n", "losss = []\n", "for i in range(4):\n", " print('fold no.', i+1)\n", " Xtrain, Xtest = X[:len(X)*i//4] + X[len(X)*(i+1)//4:], X[len(X)*i//4:len(X)*(i+1)//4] \n", " Ytrain, Ytest = Y[:len(X)*i//4] + Y[len(X)*(i+1)//4:], Y[len(X)*i//4:len(X)*(i+1)//4] \n", "\n", " hiddenLayer1 = Layer(10, 1, activation='reLu')\n", " outputLayer = Layer(11, 1, activation='sigmoid')\n", " for i in range(5):\n", " hiddenLayer1.neurons[0].w[i] = Value(5.0-i)\n", " hiddenLayer1.neurons[0].w[9-i] = Value(i-5.0)\n", " for i in range(5):\n", " outputLayer.neurons[0].w[i+1] = Value(5.0-i)\n", " outputLayer.neurons[0].w[9-i+1] = Value(i-5.0)\n", " parameters = outputLayer.parameters() + hiddenLayer1.parameters()\n", " prevchange = [0]*len(parameters)\n", " beta = 0.7 # parameter for momentum update\n", " lr = 0.5\n", " epochs = 130\n", "\n", " for _ in range(epochs):\n", " Y_pred = [predict(x) for x in Xtrain]\n", " loss = Value(0)\n", " for i in range(len(Ytrain)):\n", " if Ytrain[i] == 1:\n", " loss -= Y_pred[i].log()\n", " else:\n", " loss -= (Value(1) - Y_pred[i]).log()\n", " loss = loss/len(X)\n", " loss.backward()\n", "\n", " for ix, p in enumerate(parameters):\n", " change = lr*p.grad\n", " p.data = p.data -change\n", " prevchange[ix] = change\n", "\n", " for p in parameters:\n", " p.grad = 0\n", " losss.append(loss.data)\n", " print('loss:', loss.data,'epoch:', _)\n", " print( 'accuracy','test', getAccuracy(Xtest, Ytest),'train', getAccuracy(Xtrain, Ytrain))\n", " print( 'f1score','test', getf1(Xtest, Ytest),'train', getf1(Xtrain, Ytrain))\n", " print( 'precision','test', getPrecision(Xtest, Ytest),'train', getPrecision(Xtrain, Ytrain))\n", " print( 'recall','test',getRecall(Xtest, Ytest),'train',getRecall(Xtrain, Ytrain))\n", " print()\n", " accuracies.append(getAccuracy(Xtest, Ytest))\n", " f1scores.append(getf1(Xtest, Ytest))\n", " precisionscores.append(getPrecision(Xtest, Ytest))\n", " recallscores.append(getRecall(Xtest, Ytest))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "final accuracy: 0.9521484375\n", "final f1score 0.9539790139345543\n", "final precisionscore 0.920659892424684\n", "final recallscore 0.9903846153846154\n" ] } ], "source": [ "print('final accuracy:', sum(accuracies)/4)\n", "print('final f1score', sum(f1scores)/4)\n", "print('final precisionscore', sum(precisionscores)/4)\n", "print('final recallscore', sum(recallscores)/4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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BdT/2xo4cCC6dOmCl19+GYWFhfW+z5WvI9Q49ty0c4sXL25w3Y+HHnoIzz33HNauXYvhw4fjwQcfhMFgwHvvvYeysjK8+OKL8rHx8fEYNWoUBg4ciKCgIOzcuRPLly+X9/U5evQoxowZg9tvvx3x8fEwGAxYsWIFMjIy7AoAG/LSSy9h/PjxSEpKwt13342SkhK88cYbMJvN9fYY8vDwwC233IKlS5eiqKiowX2U3nrrLQwfPhx9+/bFvffei86dOyMjIwNbtmzB+fPnsXfv3lacxRq7d+9usHejS5cudoWD3bt3x913340dO3YgPDwcixcvRkZGBj766CP5mMceewxffPEFxo8fj7///e8ICgrCxx9/jFOnTuHrr7+Wi0enTp2KTz75BLNmzcL27dsxYsQIFBUVYd26dXjwwQdx4403Nrv9rb1WtsLblryRjhgxAgsWLIDZbEbfvn0BWANojx49cOTIkWat7jtw4EAAwBNPPIE77rgDHh4emDhxYosWSWvu3/nYsWPRoUMH3H333Xj00Ueh1+uxePFihIaG4uzZs/Xa9c477+C5555D165dERYWhquvvrrZbWqJ0NBQzJ49G/PmzcO1116LG264AUeOHMHbb7+NwYMHO3RRyQULFuCXX35BYmIi7r33XsTHxyMnJwe7d+/GunXrGlx/53IGDhyIZcuWYdasWRg8eDB8fX0xceJE9O7dG1deeSVmz56NnJwcBAUFYenSpaisrHTY42lKly5dEBAQgHfffRd+fn7w8fFBYmIiOnXqhA8++ADjx49H7969MX36dERHRyM1NRW//PIL/P398b///c8lbaQmKDBDi1TANs2ysdu5c+eEENY1ScaNGyd8fX2Ft7e3GD16tN3URSGEeO6558SQIUNEQECA8PLyEj179hTPP/+8vL5GVlaWmDFjhujZs6fw8fERZrNZJCYmii+//LJZbV23bp0YNmyY8PLyEv7+/mLixIni4MGDDR67du1aAUBIkiQ/hrpOnDghpk6dKiIiIoSHh4eIjo4W119/vVi+fHm989PUVPnaLjcVfNq0afKxHTt2FBMmTBCrV68W/fr1EyaTSfTs2VN89dVXDbb1tttuEwEBAcLT01MMGTLEbt0Xm+LiYvHEE0+ITp06CQ8PDxERESFuu+02eXqzrX0NTfFGrenVrb1WjzzyiIiPj2/WubL5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IiIicisMN0RERORWGG6IiIjIrTDcEBERkVthuCEiIiK3wnBDREREbsWgdANcTQgBAMjPz1e4JURERNRctvdt2/t4U9pduCkoKAAAxMbGKtwSIiIiaqmCggKYzeYmj5FEcyKQG7FYLLhw4QL8/PwgSZJDf3Z+fj5iY2Nx7tw5+Pv7O/Rnt3c8t87Dc+s8PLfOwfPqPGo+t0IIFBQUICoqCjpd01U17a7nRqfTISYmxqm/w9/fX3V/FO6C59Z5eG6dh+fWOXhenUet5/ZyPTY2LCgmIiIit8JwQ0RERG6F4caBTCYT5syZA5PJpHRT3A7PrfPw3DoPz61z8Lw6j7uc23ZXUExERETujT03RERE5FYYboiIiMitMNwQERGRW2G4ISIiIrfCcOMgb731FuLi4uDp6YnExERs375d6Sap3qZNmzBx4kRERUVBkiSsXLnS7utCCDz99NOIjIyEl5cXkpOTcezYMbtjcnJycOedd8Lf3x8BAQG4++67UVhY6MJHoU7z58/H4MGD4efnh7CwMNx00004cuSI3TGlpaWYMWMGgoOD4evri1tvvRUZGRl2x5w9exYTJkyAt7c3wsLC8Oijj6KystKVD0V13nnnHfTr109e5CwpKQk//vij/HWeV8dYsGABJEnCww8/LN/Hc9s6c+fOhSRJdreePXvKX3fL8yqozZYuXSqMRqNYvHixOHDggLj33ntFQECAyMjIULppqrZq1SrxxBNPiG+++UYAECtWrLD7+oIFC4TZbBYrV64Ue/fuFTfccIPo1KmTKCkpkY+59tprRUJCgti6davYvHmz6Nq1q5g8ebKLH4n6jBs3Tnz00Udi//79IiUlRVx33XWiQ4cOorCwUD7m/vvvF7GxsWL9+vVi586d4sorrxRDhw6Vv15ZWSn69OkjkpOTxZ49e8SqVatESEiImD17thIPSTW+++478cMPP4ijR4+KI0eOiMcff1x4eHiI/fv3CyF4Xh1h+/btIi4uTvTr10889NBD8v08t60zZ84c0bt3b5GWlibfLl68KH/dHc8rw40DDBkyRMyYMUP+d1VVlYiKihLz589XsFXaUjfcWCwWERERIV566SX5vtzcXGEymcQXX3whhBDi4MGDAoDYsWOHfMyPP/4oJEkSqampLmu7FmRmZgoAYuPGjUII67n08PAQX331lXzMoUOHBACxZcsWIYQ1fOp0OpGeni4f88477wh/f39RVlbm2gegcoGBgeKDDz7geXWAgoIC0a1bN7F27VoxcuRIOdzw3LbenDlzREJCQoNfc9fzymGpNiovL8euXbuQnJws36fT6ZCcnIwtW7Yo2DJtO3XqFNLT0+3Oq9lsRmJionxet2zZgoCAAAwaNEg+Jjk5GTqdDtu2bXN5m9UsLy8PABAUFAQA2LVrFyoqKuzOb8+ePdGhQwe789u3b1+Eh4fLx4wbNw75+fk4cOCAC1uvXlVVVVi6dCmKioqQlJTE8+oAM2bMwIQJE+zOIcC/2bY6duwYoqKi0LlzZ9x55504e/YsAPc9r+1u40xHy8rKQlVVld1FB4Dw8HAcPnxYoVZpX3p6OgA0eF5tX0tPT0dYWJjd1w0GA4KCguRjCLBYLHj44YcxbNgw9OnTB4D13BmNRgQEBNgdW/f8NnT+bV9rz/bt24ekpCSUlpbC19cXK1asQHx8PFJSUnhe22Dp0qXYvXs3duzYUe9r/JttvcTERCxZsgQ9evRAWloa5s2bhxEjRmD//v1ue14Zbojc3IwZM7B//378+uuvSjfFbfTo0QMpKSnIy8vD8uXLMW3aNGzcuFHpZmnauXPn8NBDD2Ht2rXw9PRUujluZfz48fL/9+vXD4mJiejYsSO+/PJLeHl5Kdgy5+GwVBuFhIRAr9fXqyzPyMhARESEQq3SPtu5a+q8RkREIDMz0+7rlZWVyMnJ4bmvNnPmTHz//ff45ZdfEBMTI98fERGB8vJy5Obm2h1f9/w2dP5tX2vPjEYjunbtioEDB2L+/PlISEjAf/7zH57XNti1axcyMzNxxRVXwGAwwGAwYOPGjXj99ddhMBgQHh7Oc+sgAQEB6N69O44fP+62f7MMN21kNBoxcOBArF+/Xr7PYrFg/fr1SEpKUrBl2tapUydERETYndf8/Hxs27ZNPq9JSUnIzc3Frl275GN+/vlnWCwWJCYmurzNaiKEwMyZM7FixQr8/PPP6NSpk93XBw4cCA8PD7vze+TIEZw9e9bu/O7bt88uQK5duxb+/v6Ij493zQPRCIvFgrKyMp7XNhgzZgz27duHlJQU+TZo0CDceeed8v/z3DpGYWEhTpw4gcjISPf9m1W6otkdLF26VJhMJrFkyRJx8OBBcd9994mAgAC7ynKqr6CgQOzZs0fs2bNHABALFy4Ue/bsEWfOnBFCWKeCBwQEiG+//Vb88ccf4sYbb2xwKviAAQPEtm3bxK+//iq6devGqeBCiAceeECYzWaxYcMGu+mfxcXF8jH333+/6NChg/j555/Fzp07RVJSkkhKSpK/bpv+OXbsWJGSkiJ++uknERoaqurpn67w2GOPiY0bN4pTp06JP/74Qzz22GNCkiSxZs0aIQTPqyPVni0lBM9ta/3zn/8UGzZsEKdOnRK//fabSE5OFiEhISIzM1MI4Z7nleHGQd544w3RoUMHYTQaxZAhQ8TWrVuVbpLq/fLLLwJAvdu0adOEENbp4E899ZQIDw8XJpNJjBkzRhw5csTuZ2RnZ4vJkycLX19f4e/vL6ZPny4KCgoUeDTq0tB5BSA++ugj+ZiSkhLx4IMPisDAQOHt7S1uvvlmkZaWZvdzTp8+LcaPHy+8vLxESEiI+Oc//ykqKipc/GjU5a677hIdO3YURqNRhIaGijFjxsjBRgieV0eqG254bltn0qRJIjIyUhiNRhEdHS0mTZokjh8/Ln/dHc+rJIQQyvQZERERETkea26IiIjIrTDcEBERkVthuCEiIiK3wnBDREREboXhhoiIiNwKww0RERG5FYYbIiIicisMN0TULkmShJUrVyrdDCJyAoYbInK5v/71r5Akqd7t2muvVbppROQGDEo3gIjap2uvvRYfffSR3X0mk0mh1hCRO2HPDREpwmQyISIiwu4WGBgIwDpk9M4772D8+PHw8vJC586dsXz5crvv37dvH66++mp4eXkhODgY9913HwoLC+2OWbx4MXr37g2TyYTIyEjMnDnT7utZWVm4+eab4e3tjW7duuG7776Tv3bp0iXceeedCA0NhZeXF7p161YvjBGROjHcEJEqPfXUU7j11luxd+9e3Hnnnbjjjjtw6NAhAEBRURHGjRuHwMBA7NixA1999RXWrVtnF17eeecdzJgxA/fddx/27duH7777Dl27drX7HfPmzcPtt9+OP/74A9dddx3uvPNO5OTkyL//4MGD+PHHH3Ho0CG88847CAkJcd0JIKLWU3rnTiJqf6ZNmyb0er3w8fGxuz3//PNCCOuu5vfff7/d9yQmJooHHnhACCHEokWLRGBgoCgsLJS//sMPPwidTifS09OFEEJERUWJJ554otE2ABBPPvmk/O/CwkIBQPz4449CCCEmTpwopk+f7pgHTEQuxZobIlLE6NGj8c4779jdFxQUJP9/UlKS3deSkpKQkpICADh06BASEhLg4+Mjf33YsGGwWCw4cuQIJEnChQsXMGbMmCbb0K9fP/n/fXx84O/vj8zMTADAAw88gFtvvRW7d+/G2LFjcdNNN2Ho0KGteqxE5FoMN0SkCB8fn3rDRI7i5eXVrOM8PDzs/i1JEiwWCwBg/PjxOHPmDFatWoW1a9dizJgxmDFjBl5++WWHt5eIHIs1N0SkSlu3bq337169egEAevXqhb1796KoqEj++m+//QadTocePXrAz88PcXFxWL9+fZvaEBoaimnTpuGzzz7Da6+9hkWLFrXp5xGRa7DnhogUUVZWhvT0dLv7DAaDXLT71VdfYdCgQRg+fDj++9//Yvv27fjwww8BAHfeeSfmzJmDadOmYe7cubh48SL+9re/4S9/+QvCw8MBAHPnzsX999+PsLAwjB8/HgUFBfjtt9/wt7/9rVnte/rppzFw4ED07t0bZWVl+P777+VwRUTqxnBDRIr46aefEBkZaXdfjx49cPjwYQDWmUxLly7Fgw8+iMjISHzxxReIj48HAHh7e2P16tV46KGHMHjwYHh7e+PWW2/FwoUL5Z81bdo0lJaW4tVXX8UjjzyCkJAQ3Hbbbc1un9FoxOzZs3H69Gl4eXlhxIgRWLp0qQMeORE5mySEEEo3goioNkmSsGLFCtx0001KN4WINIg1N0RERORWGG6IiIjIrbDmhohUh6PlRNQW7LkhIiIit8JwQ0RERG6F4YaIiIjcCsMNERERuRWGGyIiInIrDDdERETkVhhuiIiIyK0w3BAREZFbYbghIiIit/L/Af2czBl44DFlAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(losss)\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.title('Loss over Epochs / without momentum term')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Network Analysis" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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Jk6c6OkwCsU333wjHx8fvfvuu3rooYfUvXv3a+6za9cuffbZZ4UQnXdq3769Lly4kOvAfHfr16+fLly4oOrVqxf6uQFcR4Jy+fJljRs3TiEhIapRo4Zq1KihkJAQjR07VpcuXXJHjIBXSE5OVmBgoPz8/Aq0fWBgoG644QZNmjQp1yqKJ5w7d87TIdjw8fFRQECAzTPACouvr68CAgJsnjmGwmO230XTYZCsvWHDhmnevHmaNm2atm/fru3bt2vatGl699139eSTT7ojRhSyDz74QM2bN1dgYKBCQ0P1wAMPKDEx0Wab7777Tvfdd5+qVasmf39/RUZG6qmnntKFCxes28TExGjWrFmSrnRZZC+SdOTIEVksFk2fPl2zZs1SrVq1VKpUKXXt2lWJiYkyDEOTJ09W1apVFRgYqH/96186efKkTQyff/65evTooYiICPn7+6t27dqaPHmy3QMrs0vbW7duVZs2bRQYGKiaNWtqzpw5BXo/Ll++rMmTJ6t27dry9/dXjRo19Nxzz1knKcy+vvnz5+vcuXPW61ywYEG+x/Xx8dHYsWO1c+dOLV++/JpxpKena8KECapTp471PX/22Wdt4sh+X3M7t8Viselue+GFF2SxWPTLL7/owQcfVLly5XTrrbcW+JqlK2Mv/vnPf2rDhg1q2bKlAgICVKtWLb3//vs22126dEkTJ05U3bp1FRAQoPLly+vWW2/VmjVr8r3m3MagZP88f/nlF912220qVaqUqlSpomnTpl3zPbzaihUr1LBhQ/n7+6tBgwb6+uuvbV7PbbyIYRiaMmWKqlatqlKlSum2227Tzz//nOvxf/75Z3Xq1EmBgYGqWrWqpkyZoqys3Gvqq1atUrt27VS6dGkFBQWpR48edseNiYlRmTJldOzYMfXs2VNlypRRWFiYRo4c6bKHtO7cuVMxMTGqVauWAgICFB4erocfflh//fWXdZuEhARZLJZcf2eXLFkii8WijRs3Wtv27t2re++9V6GhoQoICFCLFi30xRdf2OyX/V5/++23euKJJ1SxYkVVrVrVJddUZBWDLh6H50FZsmSJPvroI91+++3WtsaNGysyMlK9e/fW7NmzXRognJeamqoTJ07YtedW8Zo6darGjRunXr16adCgQUpJSdGMGTPUvn17bd++XWXLlpUkffLJJzp//rwef/xxlS9fXj/88INmzJih33//XZ988okk6dFHH9Uff/yhNWvWaNGiRbnGtnjxYmVkZGjYsGE6efKkpk2bpl69eqlTp05at26dRo0apYMHD2rGjBkaOXKk3nvvPeu+CxYsUJkyZRQbG6syZcrom2++0fjx45WWlqZXXnnF5jynTp1S9+7d1atXL/Xu3VtLly7V448/Lj8/Pz388MP5vn+DBg3SwoULde+99+rpp5/W5s2bFRcXpz179lj/SC9atEjz5s3TDz/8oHfeeUeS1KZNm3yPK0kPPvigJk+erEmTJumuu+7K83/rWVlZuvPOO7VhwwY98sgjql+/vnbt2qXXX39d+/fv14oVK655rrzcd999qlu3rl588UVrJacg15zt4MGDuvfeezVw4ED1799f7733nmJiYtS8eXM1aNBA0pVkKC4uToMGDVLLli2VlpamLVu2aNu2bfrHP/7hcMynTp1St27ddPfdd6tXr15atmyZRo0apUaNGtn8bcrLhg0b9Nlnn+mJJ55QUFCQ3nrrLd1zzz06evSoypcvn+d+48eP15QpU9S9e3d1795d27ZtU9euXZWRkWGzXVJSkm677TZdvnxZo0ePVunSpTVv3jwFBgbaHXPRokXq37+/oqOj9fLLL+v8+fOaPXu2br31Vm3fvl01atSwbpuZmano6Gi1atVK06dP19q1a/Xqq6+qdu3aLrmLcs2aNfr11181YMAAhYeH6+eff9a8efP0888/a9OmTbJYLOrYsaMiIyO1ePFi3XXXXTb7L168WLVr11br1q0lXUnS2rZtqypVqljfh6VLl6pnz5769NNP7fZ/4oknFBYWpvHjx1NBgWQ4KCwszPjll1/s2n/55RejQoUKjh4ObjR//nxDUr5LgwYNrNsfOXLE8PX1NaZOnWpznF27dhklSpSwaT9//rzd+eLi4gyLxWL89ttv1rYhQ4YYuf2aHT582JBkhIWFGadPn7a2jxkzxpBkREVFGZcuXbK29+7d2/Dz8zMuXryYbwyPPvqoUapUKZvtOnToYEgyXn31VWtbenq60aRJE6NixYpGRkaG/Zv3Pz/99JMhyRg0aJBN+8iRIw1JxjfffGNt69+/v1G6dOk8j3W1q7dduHChIcn47LPPrK9LMoYMGWJdX7RokeHj42N89913NseZM2eOIcn473//axjG3+/r/Pnz7c4pyZgwYYJ1fcKECYYko3fv3td9zdWrVzckGevXr7e2JScnG/7+/sbTTz9tbYuKijJ69OhxrbfFTkJCgiHJSEhIsLZl/zzff/99a1t6eroRHh5u3HPPPdc8piTDz8/POHjwoLVtx44dhiRjxowZ1rbsz8/hw4et1+Xn52f06NHDyMrKsm733HPPGZKM/v37W9tGjBhhSDI2b95sbUtOTjZCQkJsjnnmzBmjbNmyxuDBg21iTEpKMkJCQmza+/fvb0gyJk2aZLNt06ZNjebNm1/zujt06GDzec9Nbp+pDz/80O5nPGbMGMPf39/ms5ucnGyUKFHC5nesc+fORqNGjWw+j1lZWUabNm2MunXrWtuy3+tbb73VuHz58jWvpThLTU01JBmpr8sw5ji3pL5+5XsgNTXV05eVK4e7eIYOHarJkyfblHrT09M1depU7jowqVmzZmnNmjV2S+PGjW22++yzz5SVlaVevXrpxIkT1iU8PFx169ZVQkKCddur/yd47tw5nThxQm3atJFhGNq+fXuBY7vvvvsUEhJiXW/VqpUkqW/fvipRooRNe0ZGhvXhlDljOHPmjE6cOKF27drp/Pnz2rt3r815SpQooUcffdS67ufnp0cffVTJycnaunVrnvGtXLlSkhQbG2vT/vTTT0uS/vOf/xT4WvPSp08f1a1bN9+xKJ988onq16+vevXq2fxsOnXqJEk2PxtHPfbYYzbrjl7zTTfdpHbt2lnXw8LCdOONN+rXX3+1tpUtW1Y///yzDhw4cN1xXq1MmTLq27evdd3Pz08tW7a0OWd+unTpotq1a1vXGzdurODg4Hz3X7t2rbXad3Wla8SIEXbbrly5UrfccotatmxpbQsLC1OfPn1stluzZo1Onz6t3r172/xcfX191apVq1x/rjl/Xu3atSvwdV/L1Z+pixcv6sSJE7rlllskyeZRJg899JDS09O1bNkya9vHH3+sy5cvW38uJ0+e1DfffKNevXpZP58nTpzQX3/9pejoaB04cMDm8yxdmWfL19fXJddS5BWDMSgF6uK5++67bdbXrl2rqlWrKioqSpK0Y8cOZWRkqHPnzq6PEE5r2bKlWrRoYdderlw5m66fAwcOyDAM1a1bN9fjXP3spaNHj2r8+PH64osvdOrUKZvtUlNTCxxbtWrVbNazk5XIyMhc268+188//6yxY8fqm2++UVpaWr4xREREqHTp0jZtN9xwg6Qr4zay/wjn9Ntvv8nHx0d16tSxaQ8PD1fZsmX122+/5Xt9BeHr66uxY8eqf//+WrFihV3ZW7rys9mzZ4/CwsJyPUZycvJ1n79mzZo2645ec86foXTld+vqn9WkSZP0r3/9SzfccIMaNmyobt26qV+/fnZJckFVrVrVrjusXLly2rlzZ4H2L0jMOWVfd87PR1hYmMqVK2e3bXayfbUbb7zRZj07YctONHMKDg62WQ8ICLD7HbhW3I44efKkJk6cqI8++sjud+rqz1S9evV08803a/HixRo4cKCkK907t9xyi/X35uDBgzIMQ+PGjdO4ceNyPV9ycrKqVKliXc/5u4h8FIOp7guUoFz9P1xJuueee2zWc36ZwDtlZWXJYrFo1apVuf4vJvt28szMTP3jH//QyZMnNWrUKNWrV0+lS5fWsWPHFBMTk+dAwNzk9b+lvNqzKwynT59Whw4dFBwcrEmTJql27doKCAjQtm3bNGrUKIdiKAh338nRp08f61iUnj172r2elZWlRo0a6bXXXst1/+zPYF5x5jeIMrdxEfkdK6dr/aykK7cLHzp0SJ9//rlWr16td955R6+//rrmzJmjQYMGFeg8jp7Tnfu7Svbv6aJFixQeHm73+tVVRCnvuF2lV69e+v777/XMM8+oSZMmKlOmjLKystStWze7z9RDDz2k4cOH6/fff1d6ero2bdqkmTNnWl/P3n7kyJGKjo7O9Xw5k+C8fhdRPBUoQZk/f76744AJ1K5dW4ZhqGbNmtbqQm527dql/fv3a+HChXrooYes7bndkeGuL/Z169bpr7/+0meffWYzR8bhw4dz3f6PP/7QuXPnbKoo+/fvlySbQYg5Va9eXVlZWTpw4IDq169vbT9+/LhOnz7tsjkysqsoMTEx+vzzz+1er127tnbs2KHOnTvn+55m/08+54M7Han0uOuaQ0NDNWDAAA0YMMA6C/ULL7xwXQmKJ2Rf94EDB2yeO5aSkmJXwahevXqu3Vn79u2zWc/uZqpYsaK6dOni6pAdcurUKcXHx2vixIkaP368tT2vbrkHHnhAsbGx+vDDD3XhwgWVLFlS999/v/X17PeoZMmSHr+2Iil7Jllnj2FihT+5AEzr7rvvlq+vryZOnGj3P0nDMKy3Gmb/L+7qbQzD0Jtvvml3zOyEwNVPus4thoyMDP373//OdfvLly9r7ty5NtvOnTtXYWFhat68eZ7nyZ5s7Y033rBpz65k9OjR47riz03fvn1Vp06dXCe269Wrl44dO6a3337b7rULFy5Y73gIDg5WhQoVtH79eptt8npfcuOOa776NlXpSjWuTp06drctm1mXLl1UsmRJzZgxw+b3Luf7JF15Dzdt2qQffvjB2paSkqLFixfbbBcdHa3g4GC9+OKLud5Vl5KS4roLuIbcPlNS7tcnSRUqVNDtt9+uDz74QIsXL1a3bt1UoUIF6+sVK1ZUx44dNXfuXP355592+xfmtRVJ3GZs76+//tL48eOVkJCg5ORku7Jfzrkq4D1q166tKVOmaMyYMTpy5Ih69uypoKAgHT58WMuXL9cjjzyikSNHql69eqpdu7ZGjhypY8eOKTg4WJ9++mmu/eDZX/5PPvmkoqOj5evrqwceeMDpWNu0aaNy5cqpf//+evLJJ2WxWLRo0aI8S/QRERF6+eWXdeTIEd1www36+OOP9dNPP2nevHk2Y2tyioqKUv/+/TVv3jxrt9IPP/yghQsXqmfPnrrtttucvpZsvr6+ev755zVgwAC71/r166elS5fqscceU0JCgtq2bavMzEzt3btXS5cu1f/93/9ZxxkNGjRIL730kgYNGqQWLVpo/fr11mpRQbjjmm+66SZ17NhRzZs3V2hoqLZs2aJly5Z51cD67DlH4uLi9M9//lPdu3fX9u3btWrVKpsvZkl69tlntWjRInXr1k3Dhw+33mZcvXp1m3EywcHBmj17tvr166dmzZrpgQceUFhYmI4ePar//Oc/atu2rU23ibNSUlI0ZcoUu/aaNWuqT58+at++vaZNm6ZLly6pSpUqWr16dZ5VSelKN8+9994rSbk+7mTWrFm69dZb1ahRIw0ePFi1atXS8ePHtXHjRv3+++/asWOHy64NRY/DCUq/fv108OBBDRw4UJUqVWKWxSJm9OjRuuGGG/T6669b/ycfGRmprl276s4775R0pWT75Zdf6sknn1RcXJwCAgJ01113aejQodaB09nuvvtuDRs2TB999JE++OADGYbhkgSlfPny+uqrr/T0009r7NixKleunPr27avOnTvn2t9drlw5LVy4UMOGDdPbb7+tSpUqaebMmRo8ePA1z/XOO++oVq1aWrBggZYvX67w8HCNGTNGEyZMcPo6curbt6+m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002FHru/v78mTJhg132EK3h/8sf7kz/en/zx/lyb171Hrhg/YvIxKBbDwXuhwsLC9P3336tu3bruigkAAOQiLS1NISEhSm0oBfs6eaxMKWT3lek0zDg2yeEunr59++rdd991RywAAKAgmKjN3uXLl/Xee+9p7dq1at68uUqXLm3zOk8zBgDAzbLk/G3GRWkMinTlCcbNmjWTJO3fv9/mNZ5mDAAAXMHrnmYMAECxVwwGyTqcoAAAAA8rBl08Dg+Sve2229SpU6c8F9ibNWuWatSooYCAALVq1Uo//PCDp0Myjbi4ON18880KCgpSxYoV1bNnT+3bt8/TYZnSSy+9JIvFohEjRng6FFM5duyY+vbtq/LlyyswMFCNGjXSli1bPB2WKWRmZmrcuHGqWbOmAgMDVbt2bU2ePLnYPshu/fr1uuOOOxQRESGLxaIVK1bYvG4YhsaPH6/KlSsrMDBQXbp00YEDBzwTLBxPUJo0aaKoqCjrctNNNykjI0Pbtm1To0aN3BGjV/v4448VGxurCRMmaNu2bYqKilJ0dLSSk5M9HZopfPvttxoyZIg2bdqkNWvW6NKlS+ratavOnTPjM24958cff9TcuXPVuHFjT4diKqdOnVLbtm1VsmRJrVq1Sr/88oteffVVlStXztOhmcLLL7+s2bNna+bMmdqzZ49efvllTZs2TTNmzPB0aB5x7tw5RUVFadasWbm+Pm3aNL311luaM2eONm/erNKlSys6OloXL14s5EgLIHuqe2cWk1dQZLjIhAkTjKefftpVhysyWrZsaQwZMsS6npmZaURERBhxcXEejMq8kpOTDUnGt99+6+lQTOPMmTNG3bp1jTVr1hgdOnQwhg8f7umQTGPUqFHGrbfe6ukwTKtHjx7Gww8/bNN29913G3369PFQROYhyVi+fLl1PSsrywgPDzdeeeUVa9vp06cNf39/48MPP/RAhLlLTU01JBmpkTKM6s4tqZG6cqzUVE9fVq4crqDkpW/fvnrvvfdcdbgiISMjQ1u3blWXLl2sbT4+PurSpYs2btzowcjMKzU1VZIUGhrq4UjMY8iQIerRo4fN7xGu+OKLL9SiRQvdd999qlixopo2baq3337b02GZRps2bRQfH2+943LHjh3asGGDbr/9dg9HZj6HDx9WUlKSzecsJCRErVq1Muffa6a6L7iNGzcqICDA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CapcubISEhJ08OBB3X///WrSpIkGDx7s0HszYcIEvfHGG6pWrZoefvhhPfjggwoKCtKbb76pUqVKqVevXho/frxmz55t3Sc+Pl4BAQFat26djhw5ogEDBqh8+fLWOZni4uL0wQcfaM6cOapbt67Wr1+vvn37KiwsTB06dLAeZ/To0Zo+fbpq1aqlcuXKORQ34AmuSDDMnqA4/DTjjh075rncdtttLn2SIVCUdOjQwbj11ltt2m6++WZj1KhRhmEYxnfffWcEBwcbFy9etNmmdu3axty5cw3DMIz+/fsb//rXv2xeHz58uNGhQweb8zRt2tRmm+eee8648cYbjaysLGvbrFmzjDJlyhiZmZkFii83/fv3N6pXr25cvnzZ2nbfffcZ999/v3VdkrF8+XKb/UJCQqxPrD58+LAhyXjnnXesr3/44YeGJCM+Pt7aFhcXZ9x444025w4NDTXOnTtnbZs9e7b1mi5evGiUKlXK+P77723OPXDgQKN3796GYfz9dNsVK1bkeY2AmWQ/zThFMtKdXFJk7qcZO1xBSUhIcG2GBBQjjRs3tlmvXLmykpOTJUk7duzQ2bNnVb58eZttLly4oEOHDjl0nubNm9us79mzR61bt7a5665t27Y6e/asfv/9d1WrVu2a8eWlQYMG8vX1tdln165dDsWb89yVKlWSJDVq1MimLWcsUVFRKlWqlHW9devWOnv2rBITE3X27FmdP3/ervqTkZGhpk2b2rS1aNHC4XgBT8r63+LsMczsuuZBAXB9cnaJWiwW61xCZ8+eVeXKlbVu3Tq7/cqWLStJ8vHxkZFjbsWrx3tkK126tMvju959LBZLgWK++jjZiVTOtmvFcrWzZ89Kkv7zn/+oSpUqNq/5+/vbrF/v+wV4SnHo4iFBAUyiWbNmSkpKUokSJVSjRo1ctwkLC9Pu3btt2n766Se7JCGn+vXr69NPP5VhGNYv///+978KCgpS1apVXRJ/XsLCwvTnn39a1w8cOKDz58+75Ng7duzQhQsXFBgYKEnatGmTypQpo8jISIWGhsrf319Hjx61GW8CwDs4fBcPAPfo0qWLWrdurZ49e2r16tU6cuSIvv/+ez3//PPasmWLJKlTp07asmWL3n//fR04cEATJkywS1hy88QTTygxMVHDhg3T3r179fnnn2vChAmKjY2Vj497/wx06tRJM2fO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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Text(0, 0.5, 'neuron number')" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGFCAYAAADXZwgoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABArUlEQVR4nO3dd1xT9/oH8E9ACUMIoiigiIhWnKigrVpFxarV9lbrT6t1AFftAhfuieCgWmfVK9XWXa9drt6qrUXE2bpX6x6VWinOUEAByff3hyU1JiAhCTmHfN6v13m1OTnjOccQHp7vOAohhAARERGRhNhZOwAiIiKiZzFBISIiIslhgkJERESSwwSFiIiIJIcJChEREUkOExQiIiKSHCYoREREJDnlrB0AERERFd+jR4+Qm5trlmM5ODjA0dHRLMcyNyYoREREMvHo0SP4+/sjLS3NLMfz8vLCtWvXJJmkMEEhIiKSidzcXKSlpSE1NRVubm4mHSsjIwO+vr7Izc1lgkJERESmc3Nzhpubs4lHeWyWWCyFCQoREZHsPIbpCYa0ExSO4iEiIiLJYQWFiIhIdsp+BYUJChERkeyU/QSFTTxEREQkOUxQiIiIZCcf/1RRSrrkG33Wmzdvon///qhUqRKcnJzQqFEjHD161PTLMYBNPERERLJT+k089+/fR+vWrdG+fXvs2LEDnp6euHTpEipWrGhiHIYxQSEiIrJhGRkZOq+VSiWUSqXedrNnz4avry9WrVqlXefv72+xuNjEQ0REJDumNu/8U4Hx9fWFSqXSLgkJCQbPuG3bNoSEhKBXr16oUqUKmjZtihUrVljsCllBISIikh3zNfE8O22+oeoJAFy9ehXLli1DTEwMJk6ciCNHjmDYsGFwcHBAeHi4ibHoUwghhNmPSkRERGaXkZEBlUoFtfoE3NxcTTzWX1CpmkKtVhfruT4ODg4ICQnBwYMHteuGDRuGI0eO4NChQybFYgibeIiIiOi5vL29Ub9+fZ119erVw40bNyxyPjbxEBERyU7BMGNTj1F8rVu3xoULF3TWXbx4EX5+fibGYRgTFCIiItkp/WHGI0eORKtWrTBr1iz07t0bhw8fxvLly7F8+XIT4zCMTTxERET0XM2bN8fmzZvx3//+Fw0bNsT06dOxcOFC9OvXzyLnYydZIiIimfink+x+uLlVMPFYmVCpXi52J9nSxiYeIiIi2eHDAomIiIhKHSsoREREslP6o3hKGxMUIiIi2WETDxEREVGpYwWFiIhIdsp+BYUJChERkewwQSEiIiLJKfsJCvugEBERkeSwgkJERCQ7HGZMREREksMmHiIiIqJSxwoKERGR7JT9CgoTFCIiItkp+wkKm3iIiIhIclhBISIikp2yX0FhgkJERCQ7HGZMREREkpMP0xMMaSco7INCREREksMKChERkeywDwoRERFJTtlPUNjEQ0RERJLDCgoREZHscBQPERERSQ6beIiIiIhKHSsoREREslP2KyhMUIiIiGSn7CcobOIhIiIiyWEFhYiISHbKfgWFCQoREZHscJgxERERSc5jAPZmOIZ0sQ8KERERSQ4rKERERLJT9isoTFCIiIhkp+wnKGziISIiIslhBYWIiEh2OIqHiIiIJOcxTG8EYRMPERERkVFYQSEiIpKdsl9BYYJCREQkO2U/QWETDxEREUkOKyhERESykw/TR+FwFA8RERGZFYcZExERkeQ8BqAwwzGki31QiIiISHJYQSEiIpKdsl9BYYJCREQkO2U/QWETDxEREUkOKyhERESyU/YrKExQiIiIZCcfpico0h5mzCYeIiIikhxWUIiIiGTHHM0zbOIhIiIisyr7CQqbeIiIiEhymKAQERHJzmMzLSXz4YcfQqFQYMSIESU+xvOwiYeIiEh2zDECp2THOHLkCD755BM0btzYDDEUjhUUIiIi2bFOBSUzMxP9+vXDihUrULFiRdMvowhMUIiIiGxYRkaGzpKTk1PotlFRUejWrRs6duxo8bjYxENERCQ7jwEIE4/xpInH19dXZ21sbCymTZumt/XGjRtx/PhxHDlyxMTzFg8TFCIiItkxX4KSmpoKNzc37VqlUqm3ZWpqKoYPH45du3bB0dHRxPMWj0IIYeoVEhERUSnIyMiASqWCWl0Xbm72Jh4rHyrVBajVap0ExZAtW7agR48esLf/55z5+flQKBSws7NDTk6OznvmwAoKERGR7JivglIcYWFhOHPmjM66yMhIBAYGYty4cWZPTgAmKERERDKUD9MTFE2xt3R1dUXDhg111rm4uKBSpUp6682Fo3iIiIhIclhBISIikp3SraAYsmfPHhPPXzQmKERERLLzGKY3gpiWoFgam3iIiIhIclhBISIikp2yX0FhgkJERCQ7TFCIiIhI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3x/x8fG4e/cuunTpgrNnzxp1LuDJZ06pVKJNmzbac7377rtGH+dZy5Ytg5+fHyZOnIh58+bB19cXH3zwgfaPDQAYMGAA7t69i++//15n37S0NOzevRv9+/fXrivudwoA3L17F6+++iqaNGmChQsXon379iZfT5llAwkKRDH06NFDZ3F1dRWVK1cWYWFhIiwsTFSuXFm4ubmJHj16FOdwVEpWrVolABS5NGjQQLv99evXhb29vZg5c6bOcc6cOSPKlSunsz47O1vvfAkJCUKhUIjffvtNuy4qKkoY+phdu3ZNABCenp7iwYMH2vUTJkwQAERQUJDIy8vTru/bt69wcHAQjx49KjKGd999Vzg7O+tsFxoaKgCIefPmadfl5OSIJk2aiCpVqojc3Fz9m/e3kydPCgBi8ODBOutHjx4tAIjdu3dr14WHhwsXF5dCj/W0p7dds2aNACA2bdqkfR+AiIqK0r5et26dsLOzE/v27dM5TmJiogAgDhw4IIT4576uWrVK75wARGxsrPZ1bGysACD69u1b4mv28/MTAMTevXu169LT04VSqRSjRo3SrgsKChLdunV73m3Rk5ycLACI5ORk7bqCf8+1a9dq1+Xk5AgvLy/Rs2fPIo83YsQIAUCcOHGi0G2OHz8uAIiYmBghhHH39KOPPhIAxLVr1wxuC0AcPXpUu+63334Tjo6OOt+d4eHhws/PT2//gn+vp7m4uIjw8PBCr+VpBdfx0UcfFbmdoZ+rzp07i1q1amlf5+fni+rVq4u33npLZ7v58+cLhUIhrl69KoQw7jul4N81MTGxWNdjq9RqtQAg1HMgxGLTFvWcJ59JtVpt7csyqFgVlKenwFWpVOjZsydee+01+Pr6wtfXF6+99hrefPNNqFQqE1IlspSlS5di165dekvjxo11ttu0aRM0Gg169+6tU2nx8vJCnTp1kJycrN3WyemfAfhZWVm4c+cOWrVqBSEETpw4UezYevXqpfO5efHFFwEA/fv3R7ly5XTW5+bm4ubNmwZj+Ouvv3Dnzh20adMG2dnZOH/+vM55ypUrp/PXpYODA959912kp6fj2LFjhca3fft2AE/6LTxt1KhRAIDvvvuu2NdamH79+j23ivLVV1+hXr16CAwM1Pm36dChAwDo/NsY67333tN5bew1169fH23atNG+9vT0RN26dXH16lXtOnd3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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "neuron1weightsbias = [v.data for v in hiddenLayer1.neurons[0].w] + [hiddenLayer1.neurons[0].b.data]\n", "outputneuronweightsbias = [v.data for v in outputLayer.neurons[0].w] + [outputLayer.neurons[0].b.data]\n", "import matplotlib.pyplot as plt\n", "\n", "plt.imshow([neuron1weightsbias], cmap='hot')\n", "plt.colorbar()\n", "plt.title('Heatmap of Neurons in hidden Layer')\n", "plt.xlabel('neuron number')\n", "plt.ylabel('neuron number')\n", "plt.show()\n", "\n", "plt.imshow([outputneuronweightsbias], cmap='hot')\n", "plt.colorbar()\n", "plt.title('Heatmap of Neurons in Output Layer')\n", "plt.xlabel('neuron number')\n", "plt.ylabel('neuron number')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[4.730257472922613,\n", " 4.291331755432143,\n", " 3.2573443760750886,\n", " 2.1589434171025923,\n", " 1.0555995955264479,\n", " -1.0670729046272482,\n", " -2.1616096967604537,\n", " -3.274597127580454,\n", " -4.281371961476945,\n", " -4.751506477851369,\n", " -0.0151131751890921]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neuron1weightsbias" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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PqmoqMikpKSY1q1bm8DAQBMVFWUeffRRU1JS4nQ0n5CRkVHp35MjRowwxvx2W/eUKVNM8+bNTUBAgOnfv7/Jzc11NnQVuIzhaxgBAIDv45oaAABgBUoNAACwAqUGAABYgVIDAACsQKkBAABWoNQAAAArUGoAAIAVKDUAUE0WL16sRo0aOR0DuGRRaoBLTFJSklwul9LT0z3G33//fblcLodSVY+2bdvK5XJp48aNHuMTJkxQfHy8M6EAXDSUGuASFBgYqNmzZ+uXX3656Mc+efJkjT5/YGCgHnnkkRo9xsVW0+cMsAWlBrgEDRgwQC1atFBaWto5t8vMzNT111+voKAgRUREaPz48SouLnavd7lcev/99z32adSokRYvXixJ2rt3r1wul5YtW6a4uDgFBgbqrbfeUnl5uR5//HG1atVKAQEB6tKli1avXu1+jtP7vffee0pISFD9+vXVuXNnbdiw4byv7b777tPGjRv18ccfn3Wb+Ph4TZgwwWNsyJAhSkpKci+3bdtWM2bM0PDhw9WgQQO1adNGH3zwgQoKCnTzzTerQYMG6tSpk7Zs2VLh+d9//321a9dOgYGBSkxMVF5ensf6FStW6Nprr1VgYKCioqI0ffp0nTp1yr3e5XLppZde0k033aTg4GDNnDnzvK8bAKUGuCT5+flp1qxZmjt3rv79739Xus3333+vgQMH6tZbb9W//vUvLVu2TJmZmRo3blyVj5eamqqUlBTl5OQoMTFRzz33nJ5++mnNmTNH//rXv5SYmKibbrpJu3bt8tjv0Ucf1aRJk7Rt2zZdeeWVuuuuuzze/CsTGRmp+++/X5MnT1Z5eXmVs57pmWeeUWxsrL766isNGjRId999t4YPH65hw4YpOztb0dHRGj58uM78Cb3jx49r5syZev3115WVlaUjR47ozjvvdK///PPPNXz4cKWkpOjbb7/VggULtHjx4grF5a9//av++7//W9u3b+cXqAFvOfyDmgAushEjRpibb77ZGGPMddddZ0aNGmWMMWb58uXmzL8S7rnnHnPfffd57Pv555+bOnXqmF9//dUY89svoy9fvtxjm9DQUPcvo+/Zs8dIMs8++6zHNuHh4WbmzJkeYz169DAPPPCAx36vvPKKe/0333xjJJmcnJyzvrY2bdqYZ555xuTn55uQkBDz+uuvG2OMSUlJMXFxce7tKvvF8Ztvvtn9S8Wnn2vYsGHu5QMHDhhJZsqUKe6xDRs2GEnmwIEDxhhjFi1aZCSZjRs3urfJyckxksymTZuMMcb079/fzJo1y+PYb7zxhmnZsqV7WZKZMGHCWV8ngMoxUwNcwmbPnq3XXntNOTk5FdZ9/fXXWrx4sRo0aOB+JCYmqry8XHv27KnScbp37+7+c1FRkfbv36/Y2FiPbWJjYyvk6NSpk/vPLVu2lCTl5+ef93hhYWGaNGmSpk6dqtLS0iplPdvxmzdvLknq2LFjhbEzM/n7+6tHjx7u5fbt26tRo0bu1/b111/r8ccf9zivo0eP1oEDB3T8+HH3fmeeMwDe8Xc6AADn9O3bV4mJiZo8ebLH9SSSdOzYMY0ZM0bjx4+vsF/r1q0l/Xbthznjoxep8otag4ODLyhf3bp13X8+fWeWtx8pTZw4US+++KJefPHFCuvq1KnjVe7Kjv97Mkm/ndfp06frlltuqbAuMDDQ/ecLPWfApYxSA1zi0tPT1aVLF1111VUe49dee62+/fZbXXHFFWfdNywsTAcOHHAv79q1y2O2oTINGzZUeHi4srKyFBcX5x7PyspSz549L/BVVNSgQQNNmTJFf/3rX3XTTTedM3dZWZl27NihhISE333cU6dOacuWLe7XkpubqyNHjujqq6+W9Nt5zc3NPed5BXBh+PgJuMR17NhRQ4cO1fPPP+8x/sgjj+iLL77QuHHjtG3bNu3atUsrVqzwuFC4X79+mjdvnr766itt2bJF999/v8dMxtn8+c9/1uzZs7Vs2TLl5uYqNTVV27ZtU0pKSrW+tvvuu0+hoaFasmSJx3i/fv20cuVKrVy5Ujt37tTYsWN15MiRajlm3bp19eCDD2rTpk3aunWrkpKSdN1117lLztSpU/X6669r+vTp+uabb5STk6OlS5fqscceq5bjA5cySg0APf744xU+QunUqZPWr1+v7777Ttdff726du2qqVOnKjw83L3N008/rYiICF1//fX605/+pEmTJql+/frnPd748eM1ceJEPfzww+rYsaNWr16tDz74QO3atavW11W3bl098cQTOnHihMf4qFGjNGLECA0fPlxxcXGKioqqllkaSapfv74eeeQR/elPf1JsbKwaNGigZcuWudcnJibqo48+0qeffqoePXrouuuu0zPPPKM2bdpUy/GBS5nL/OcHywAAAD6ImRoAAGAFSg0AALACpQYAAFiBUgMAAKxAqQEAAFag1AAAACtQagAAgBUoNQAAwAqUGgAAYAVKDQAAsAKlBgAAWIFSAwAArPD/AKxcwCIcyfuWAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.bar(range(len(neuron1weightsbias)), neuron1weightsbias)\n", "plt.xlabel('Neuron Number')\n", "plt.ylabel('Weight')\n", "plt.title('Neuron 1 Weights')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# with momentum term" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cross no. 1\n", "loss: 0.36868003909601843 epoch: 0\n", "loss: 0.30716981515383796 epoch: 1\n", "loss: 0.23775899611343987 epoch: 2\n", "loss: 0.2762243432739998 epoch: 3\n", "loss: 0.20530656588268192 epoch: 4\n", "loss: 0.20279116917715703 epoch: 5\n", "loss: 0.19290094036838987 epoch: 6\n", "loss: 0.1781452120046021 epoch: 7\n", "loss: 0.17445027116802864 epoch: 8\n", "loss: 0.1680095172815048 epoch: 9\n", "loss: 0.16015565597932327 epoch: 10\n", "loss: 0.15746857189608465 epoch: 11\n", "loss: 0.15072209286440752 epoch: 12\n", "loss: 0.14824549843458112 epoch: 13\n", "loss: 0.1438645786614209 epoch: 14\n", "loss: 0.14154395530516983 epoch: 15\n", "loss: 0.14546039626444338 epoch: 16\n", "loss: 0.14724562106565575 epoch: 17\n", "loss: 0.15168217576472595 epoch: 18\n", "loss: 0.14668469305743176 epoch: 19\n", "loss: 0.13920850995528983 epoch: 20\n", "loss: 0.1400466340618168 epoch: 21\n", "loss: 0.13578913273753201 epoch: 22\n", "loss: 0.13581126633783955 epoch: 23\n", "loss: 0.1339873561400119 epoch: 24\n", "loss: 0.13752733123288272 epoch: 25\n", "loss: 0.1387924765212181 epoch: 26\n", "loss: 0.14231715338456016 epoch: 27\n", "loss: 0.13975786380586355 epoch: 28\n", "loss: 0.13482568716160406 epoch: 29\n", "loss: 0.13124416058707272 epoch: 30\n", "loss: 0.12934479832215603 epoch: 31\n", "loss: 0.12996509594533118 epoch: 32\n", "loss: 0.13375543119294675 epoch: 33\n", "loss: 0.1350035756880144 epoch: 34\n", "loss: 0.13317051923653306 epoch: 35\n", "loss: 0.129370414187251 epoch: 36\n", "loss: 0.13653425853716422 epoch: 37\n", "loss: 0.1343349816737942 epoch: 38\n", "loss: 0.13899113784333378 epoch: 39\n", "loss: 0.13740755339046992 epoch: 40\n", "loss: 0.13229470851706873 epoch: 41\n", "loss: 0.12757312422232836 epoch: 42\n", "loss: 0.13382320622175067 epoch: 43\n", "loss: 0.13619209106958413 epoch: 44\n", "loss: 0.14553472065518536 epoch: 45\n", "loss: 0.14366318138752657 epoch: 46\n", "loss: 0.1352163068425741 epoch: 47\n", "loss: 0.12885727956525114 epoch: 48\n", "loss: 0.13569430384785797 epoch: 49\n", "loss: 0.12635018066965195 epoch: 50\n", "loss: 0.1265760376296105 epoch: 51\n", "loss: 0.12418106545073804 epoch: 52\n", "loss: 0.12773935470054082 epoch: 53\n", "loss: 0.12936879477131555 epoch: 54\n", "loss: 0.1331406099913378 epoch: 55\n", "loss: 0.1313656286249581 epoch: 56\n", "loss: 0.12654761487871613 epoch: 57\n", "loss: 0.12280016884750034 epoch: 58\n", "loss: 0.12105092258384308 epoch: 59\n", "loss: 0.12244958602511412 epoch: 60\n", "loss: 0.12173331538817515 epoch: 61\n", "loss: 0.12154002856765843 epoch: 62\n", "loss: 0.12116815896346547 epoch: 63\n", "loss: 0.11956434345121285 epoch: 64\n", "loss: 0.12651448768672555 epoch: 65\n", "loss: 0.13255248078491216 epoch: 66\n", "loss: 0.14255907602692364 epoch: 67\n", "loss: 0.1403848665688712 epoch: 68\n", "loss: 0.13164292783909343 epoch: 69\n", "loss: 0.1230361136681327 epoch: 70\n", "loss: 0.12785521994530472 epoch: 71\n", "loss: 0.12797962407594643 epoch: 72\n", "loss: 0.13611166071668623 epoch: 73\n", "loss: 0.13610666468084284 epoch: 74\n", "loss: 0.13010062384064133 epoch: 75\n", "loss: 0.12275577968618161 epoch: 76\n", "loss: 0.11877803736309667 epoch: 77\n", "loss: 0.12820777145497536 epoch: 78\n", "loss: 0.13392388926222884 epoch: 79\n", "loss: 0.15205382214401103 epoch: 80\n", "loss: 0.15204467699541 epoch: 81\n", "loss: 0.13967577193648126 epoch: 82\n", "loss: 0.12783521562178088 epoch: 83\n", "loss: 0.11996761102150041 epoch: 84\n", "loss: 0.15272878814399424 epoch: 85\n", "loss: 0.13593027635414032 epoch: 86\n", "loss: 0.16284574232275503 epoch: 87\n", "loss: 0.169022465956416 epoch: 88\n", "loss: 0.1608563004350432 epoch: 89\n", "loss: 0.14536127747444114 epoch: 90\n", "loss: 0.12951075225978212 epoch: 91\n", "loss: 0.12183265500170419 epoch: 92\n", "loss: 0.13448689123430263 epoch: 93\n", "loss: 0.1267437042610601 epoch: 94\n", "loss: 0.13936271820511442 epoch: 95\n", "loss: 0.14195686488368317 epoch: 96\n", "loss: 0.1330611602863246 epoch: 97\n", "loss: 0.12421631602529942 epoch: 98\n", "loss: 0.11758093570096831 epoch: 99\n", "loss: 0.12771624580596683 epoch: 100\n", "loss: 0.12394220252822441 epoch: 101\n", "loss: 0.13362435842048345 epoch: 102\n", "loss: 0.13589971507386636 epoch: 103\n", "loss: 0.12995998864673372 epoch: 104\n", "loss: 0.12363934179205438 epoch: 105\n", "loss: 0.11867928993935122 epoch: 106\n", "loss: 0.11502914272216506 epoch: 107\n", "loss: 0.11464685113251707 epoch: 108\n", "loss: 0.11963012701832111 epoch: 109\n", "loss: 0.12344770173053593 epoch: 110\n", "loss: 0.12408039072068819 epoch: 111\n", "loss: 0.12184518057389364 epoch: 112\n", "loss: 0.11811872628150506 epoch: 113\n", "loss: 0.11379028259141508 epoch: 114\n", "loss: 0.12296666853343105 epoch: 115\n", "loss: 0.12153531160724884 epoch: 116\n", "loss: 0.12994306734636502 epoch: 117\n", "loss: 0.13137041130812116 epoch: 118\n", "loss: 0.1268467252439156 epoch: 119\n", "loss: 0.12141442989585767 epoch: 120\n", "loss: 0.11735373129119131 epoch: 121\n", "loss: 0.11997133181031398 epoch: 122\n", "loss: 0.11337592847936363 epoch: 123\n", "loss: 0.112500407946854 epoch: 124\n", "loss: 0.10992950927058084 epoch: 125\n", "loss: 0.11121358772423992 epoch: 126\n", "loss: 0.11512866813382663 epoch: 127\n", "loss: 0.11795210358477946 epoch: 128\n", "loss: 0.11557040626073901 epoch: 129\n", "accuracy test 0.9609375 train 0.9635416666666666\n", "f1score test 0.9603174603174602 train 0.9654320987654321\n", "precision test 0.9236641221374046 train 0.9331742243436754\n", "recall test 1.0 train 1.0\n", "\n", "cross no. 2\n", "loss: 0.9165482655929494 epoch: 0\n", "loss: 0.72942999904096 epoch: 1\n", "loss: 0.4856930084133062 epoch: 2\n", "loss: 0.3006016218793657 epoch: 3\n", "loss: 0.229297719505487 epoch: 4\n", "loss: 0.2035380933512077 epoch: 5\n", "loss: 0.1884329387905959 epoch: 6\n", "loss: 0.17440150199427282 epoch: 7\n", "loss: 0.16559364265055387 epoch: 8\n", "loss: 0.1671090872026514 epoch: 9\n", "loss: 0.15784783619000395 epoch: 10\n", "loss: 0.15385004711132688 epoch: 11\n", "loss: 0.15056986555805388 epoch: 12\n", "loss: 0.14425287668164297 epoch: 13\n", "loss: 0.144775837388235 epoch: 14\n", "loss: 0.14462250608588476 epoch: 15\n", "loss: 0.14672312506427956 epoch: 16\n", "loss: 0.14095305333634742 epoch: 17\n", "loss: 0.13388962027016418 epoch: 18\n", "loss: 0.142070817415337 epoch: 19\n", "loss: 0.1456456885014303 epoch: 20\n", "loss: 0.15812800996793822 epoch: 21\n", "loss: 0.1544320853629628 epoch: 22\n", "loss: 0.14024559209357193 epoch: 23\n", "loss: 0.1308282922113132 epoch: 24\n", "loss: 0.1362907224150407 epoch: 25\n", "loss: 0.13415669640207478 epoch: 26\n", "loss: 0.14317308854436225 epoch: 27\n", "loss: 0.14236280161740272 epoch: 28\n", "loss: 0.13473532418657544 epoch: 29\n", "loss: 0.12817357150743497 epoch: 30\n", "loss: 0.12162093949378945 epoch: 31\n", "loss: 0.1332858064616225 epoch: 32\n", "loss: 0.1358368217072919 epoch: 33\n", "loss: 0.1517668747382924 epoch: 34\n", "loss: 0.152713284987877 epoch: 35\n", "loss: 0.14354638804842046 epoch: 36\n", "loss: 0.13233323601784902 epoch: 37\n", "loss: 0.12400193311250832 epoch: 38\n", "loss: 0.13161283143789068 epoch: 39\n", "loss: 0.12695252481763505 epoch: 40\n", "loss: 0.133914747443586 epoch: 41\n", "loss: 0.13510942589823066 epoch: 42\n", "loss: 0.1309073752531184 epoch: 43\n", "loss: 0.12341259693926745 epoch: 44\n", "loss: 0.11676911453281041 epoch: 45\n", "loss: 0.12266493179402127 epoch: 46\n", "loss: 0.11827590522585574 epoch: 47\n", "loss: 0.12099977450325256 epoch: 48\n", "loss: 0.11863684734683867 epoch: 49\n", "loss: 0.11597137303394474 epoch: 50\n", "loss: 0.11764848695544085 epoch: 51\n", "loss: 0.11335054883452948 epoch: 52\n", "loss: 0.11281322545904551 epoch: 53\n", "loss: 0.11147328349211215 epoch: 54\n", "loss: 0.11069135969028722 epoch: 55\n", "loss: 0.11221606797395027 epoch: 56\n", "loss: 0.11171134553670575 epoch: 57\n", "loss: 0.11225438168942115 epoch: 58\n", "loss: 0.11188319849153237 epoch: 59\n", "loss: 0.11102479703800383 epoch: 60\n", "loss: 0.1104333539337151 epoch: 61\n", "loss: 0.1103271691769313 epoch: 62\n", "loss: 0.10980031688289973 epoch: 63\n", "loss: 0.11001263488613786 epoch: 64\n", "loss: 0.11050138264209658 epoch: 65\n", "loss: 0.11057652328902944 epoch: 66\n", "loss: 0.10877268437928819 epoch: 67\n", "loss: 0.11111578147893164 epoch: 68\n", "loss: 0.11365620028613219 epoch: 69\n", "loss: 0.1171775698851146 epoch: 70\n", "loss: 0.11565003068863162 epoch: 71\n", "loss: 0.11152269216921619 epoch: 72\n", "loss: 0.109090253588753 epoch: 73\n", "loss: 0.11663692366704477 epoch: 74\n", "loss: 0.11508334155649544 epoch: 75\n", "loss: 0.12259961802559624 epoch: 76\n", "loss: 0.12300297111041628 epoch: 77\n", "loss: 0.11854419265285605 epoch: 78\n", "loss: 0.11215602242236969 epoch: 79\n", "loss: 0.10995708897702192 epoch: 80\n", "loss: 0.10804462385850468 epoch: 81\n", "loss: 0.10847530181936375 epoch: 82\n", "loss: 0.10866036158339008 epoch: 83\n", "loss: 0.10753578820232068 epoch: 84\n", "loss: 0.10768971006867763 epoch: 85\n", "loss: 0.1069712642760346 epoch: 86\n", "loss: 0.10622612228276418 epoch: 87\n", "loss: 0.10757799579253217 epoch: 88\n", "loss: 0.10824967097655418 epoch: 89\n", "loss: 0.10949167707778833 epoch: 90\n", "loss: 0.10839600678839856 epoch: 91\n", "loss: 0.10599216439143208 epoch: 92\n", "loss: 0.10619293231720403 epoch: 93\n", "loss: 0.10472897259122634 epoch: 94\n", "loss: 0.10466338599052498 epoch: 95\n", "loss: 0.10381208764969022 epoch: 96\n", "loss: 0.103263207646071 epoch: 97\n", "loss: 0.10295610606580222 epoch: 98\n", "loss: 0.10520566310944364 epoch: 99\n", "loss: 0.10812127516211963 epoch: 100\n", "loss: 0.11166967401196799 epoch: 101\n", "loss: 0.110904746094558 epoch: 102\n", "loss: 0.10761049472331469 epoch: 103\n", "loss: 0.10384037080175822 epoch: 104\n", "loss: 0.11164487719958505 epoch: 105\n", "loss: 0.10984117426949151 epoch: 106\n", "loss: 0.11693931298549386 epoch: 107\n", "loss: 0.11705036507428887 epoch: 108\n", "loss: 0.11163706418215827 epoch: 109\n", "loss: 0.1059613848329792 epoch: 110\n", "loss: 0.10596521355634281 epoch: 111\n", "loss: 0.10426213398099518 epoch: 112\n", "loss: 0.10302925050203493 epoch: 113\n", "loss: 0.10299099449597665 epoch: 114\n", "loss: 0.10163475861231477 epoch: 115\n", "loss: 0.10876845415404501 epoch: 116\n", "loss: 0.1071947280728179 epoch: 117\n", "loss: 0.11198154422008179 epoch: 118\n", "loss: 0.11261457852825729 epoch: 119\n", "loss: 0.10929629882370472 epoch: 120\n", "loss: 0.10512130260279152 epoch: 121\n", "loss: 0.1023672052320518 epoch: 122\n", "loss: 0.10411206882729991 epoch: 123\n", "loss: 0.10223115353649928 epoch: 124\n", "loss: 0.10279201814677916 epoch: 125\n", "loss: 0.10174845038328884 epoch: 126\n", "loss: 0.10115223916866523 epoch: 127\n", "loss: 0.1003520581942911 epoch: 128\n", "loss: 0.09969450706128662 epoch: 129\n", "accuracy test 0.9609375 train 0.9609375\n", "f1score test 0.962962962962963 train 0.9622166246851386\n", "precision test 0.9285714285714286 train 0.9271844660194175\n", "recall test 1.0 train 1.0\n", "\n", "cross no. 3\n", "loss: 1.243937970628717 epoch: 0\n", "loss: 1.0197823143075653 epoch: 1\n", "loss: 0.7860238518286085 epoch: 2\n", "loss: 0.6428857890003671 epoch: 3\n", "loss: 0.5661858405028479 epoch: 4\n", "loss: 0.5218729846133345 epoch: 5\n", "loss: 0.4920264445189551 epoch: 6\n", "loss: 0.46747648861860275 epoch: 7\n", "loss: 0.44412802537111323 epoch: 8\n", "loss: 0.41986880781072655 epoch: 9\n", "loss: 0.39358283574377495 epoch: 10\n", "loss: 0.36525723352594436 epoch: 11\n", "loss: 0.336899444414848 epoch: 12\n", "loss: 0.3090511658199733 epoch: 13\n", "loss: 0.2826167309764894 epoch: 14\n", "loss: 0.2582322576918214 epoch: 15\n", "loss: 0.23231777846931498 epoch: 16\n", "loss: 0.2067491965341805 epoch: 17\n", "loss: 0.1826216467451588 epoch: 18\n", "loss: 0.15770367263216456 epoch: 19\n", "loss: 0.1426324373512798 epoch: 20\n", "loss: 0.17682915447708708 epoch: 21\n", "loss: 0.1452902249969128 epoch: 22\n", "loss: 0.1576088929486672 epoch: 23\n", "loss: 0.15527571868273707 epoch: 24\n", "loss: 0.14405203357727125 epoch: 25\n", "loss: 0.1353994569170679 epoch: 26\n", "loss: 0.1527236520754517 epoch: 27\n", "loss: 0.13995572057264077 epoch: 28\n", "loss: 0.14722067136375522 epoch: 29\n", "loss: 0.14663008057794108 epoch: 30\n", "loss: 0.14050429946297335 epoch: 31\n", "loss: 0.13431123587618363 epoch: 32\n", "loss: 0.1354441638508038 epoch: 33\n", "loss: 0.1351923587375112 epoch: 34\n", "loss: 0.13860755298460298 epoch: 35\n", "loss: 0.13745137559683546 epoch: 36\n", "loss: 0.13333656524776769 epoch: 37\n", "loss: 0.1281102312419493 epoch: 38\n", "loss: 0.14775331024378383 epoch: 39\n", "loss: 0.13682918547183684 epoch: 40\n", "loss: 0.14788065810636103 epoch: 41\n", "loss: 0.1469301894650251 epoch: 42\n", "loss: 0.13798428764640994 epoch: 43\n", "loss: 0.1300587367770154 epoch: 44\n", "loss: 0.12866181034546598 epoch: 45\n", "loss: 0.12813915599347503 epoch: 46\n", "loss: 0.12922755346944556 epoch: 47\n", "loss: 0.12749376632262518 epoch: 48\n", "loss: 0.12379693635409315 epoch: 49\n", "loss: 0.13236356522600265 epoch: 50\n", "loss: 0.13222525721775655 epoch: 51\n", "loss: 0.1401955624707633 epoch: 52\n", "loss: 0.13864098997041335 epoch: 53\n", "loss: 0.13153681924540897 epoch: 54\n", "loss: 0.12469296843634378 epoch: 55\n", "loss: 0.12875084532916908 epoch: 56\n", "loss: 0.12823531446648095 epoch: 57\n", "loss: 0.13425116386077834 epoch: 58\n", "loss: 0.13352186939286795 epoch: 59\n", "loss: 0.12815213884648194 epoch: 60\n", "loss: 0.12203170106509019 epoch: 61\n", "loss: 0.12599114866979444 epoch: 62\n", "loss: 0.12742049512977371 epoch: 63\n", "loss: 0.1347010131683283 epoch: 64\n", "loss: 0.1336342424578307 epoch: 65\n", "loss: 0.1273152744419998 epoch: 66\n", "loss: 0.12083666131579937 epoch: 67\n", "loss: 0.12328984113389031 epoch: 68\n", "loss: 0.12248910889763288 epoch: 69\n", "loss: 0.12629911517469639 epoch: 70\n", "loss: 0.1253043565603647 epoch: 71\n", "loss: 0.12073610651861404 epoch: 72\n", "loss: 0.11685445407433288 epoch: 73\n", "loss: 0.12343029060907694 epoch: 74\n", "loss: 0.12716080628464543 epoch: 75\n", "loss: 0.13777029997788864 epoch: 76\n", "loss: 0.13584128986370303 epoch: 77\n", "loss: 0.12679299933155674 epoch: 78\n", "loss: 0.11887425397554868 epoch: 79\n", "loss: 0.12168561111435384 epoch: 80\n", "loss: 0.1163907234794487 epoch: 81\n", "loss: 0.117230546266443 epoch: 82\n", "loss: 0.11610551091725406 epoch: 83\n", "loss: 0.11452266544355408 epoch: 84\n", "loss: 0.11519613558312052 epoch: 85\n", "loss: 0.11441959510995409 epoch: 86\n", "loss: 0.11460747171577224 epoch: 87\n", "loss: 0.11379650786448829 epoch: 88\n", "loss: 0.11344271001815405 epoch: 89\n", "loss: 0.1122588884616754 epoch: 90\n", "loss: 0.11133161997743117 epoch: 91\n", "loss: 0.1117323857235364 epoch: 92\n", "loss: 0.1120077427813384 epoch: 93\n", "loss: 0.11206086904733695 epoch: 94\n", "loss: 0.11091961505207532 epoch: 95\n", "loss: 0.1111846663839085 epoch: 96\n", "loss: 0.11134385270269638 epoch: 97\n", "loss: 0.11156065212414144 epoch: 98\n", "loss: 0.11103713660219755 epoch: 99\n", "loss: 0.11012294241451635 epoch: 100\n", "loss: 0.10907474655247146 epoch: 101\n", "loss: 0.10797768794797519 epoch: 102\n", "loss: 0.11581670620554932 epoch: 103\n", "loss: 0.1208964051157461 epoch: 104\n", "loss: 0.13116181000532734 epoch: 105\n", "loss: 0.12813314902338863 epoch: 106\n", "loss: 0.11815182985467738 epoch: 107\n", "loss: 0.10979779703683795 epoch: 108\n", "loss: 0.12726145967455824 epoch: 109\n", "loss: 0.12340343191621314 epoch: 110\n", "loss: 0.13956627014028716 epoch: 111\n", "loss: 0.14168538132408248 epoch: 112\n", "loss: 0.1344182510103709 epoch: 113\n", "loss: 0.12106936303415626 epoch: 114\n", "loss: 0.11130332899760419 epoch: 115\n", "loss: 0.12215656288511659 epoch: 116\n", "loss: 0.11456430601944621 epoch: 117\n", "loss: 0.1225189614176677 epoch: 118\n", "loss: 0.12224122650393168 epoch: 119\n", "loss: 0.11553087513063057 epoch: 120\n", "loss: 0.10818977635916188 epoch: 121\n", "loss: 0.11268851889791999 epoch: 122\n", "loss: 0.11130702874969753 epoch: 123\n", "loss: 0.1160864609441687 epoch: 124\n", "loss: 0.11481989925433321 epoch: 125\n", "loss: 0.1099752177528171 epoch: 126\n", "loss: 0.10534502052241014 epoch: 127\n", "loss: 0.11448328612193452 epoch: 128\n", "loss: 0.11287708846716817 epoch: 129\n", "accuracy test 0.9140625 train 0.9544270833333334\n", "f1score test 0.923076923076923 train 0.9559748427672956\n", "precision test 0.8571428571428571 train 0.9156626506024096\n", "recall test 1.0 train 1.0\n", "\n", "cross no. 4\n", "loss: 0.7034731463075571 epoch: 0\n", "loss: 0.6065281491302504 epoch: 1\n", "loss: 0.4951887887694784 epoch: 2\n", "loss: 0.39699567997550556 epoch: 3\n", "loss: 0.2799209612182886 epoch: 4\n", "loss: 0.23875123344825736 epoch: 5\n", "loss: 0.23318116861046517 epoch: 6\n", "loss: 0.21100254283567652 epoch: 7\n", "loss: 0.18888816833212038 epoch: 8\n", "loss: 0.17922143869818957 epoch: 9\n", "loss: 0.16942878933128672 epoch: 10\n", "loss: 0.16412827276724087 epoch: 11\n", "loss: 0.158906233678726 epoch: 12\n", "loss: 0.15342571485581122 epoch: 13\n", "loss: 0.14831077315542793 epoch: 14\n", "loss: 0.14219897983941915 epoch: 15\n", "loss: 0.13984728357064477 epoch: 16\n", "loss: 0.13636640862980137 epoch: 17\n", "loss: 0.13479930102318155 epoch: 18\n", "loss: 0.134435794896284 epoch: 19\n", "loss: 0.1343688259230099 epoch: 20\n", "loss: 0.13375693379348824 epoch: 21\n", "loss: 0.13070872471823414 epoch: 22\n", "loss: 0.13577641255732942 epoch: 23\n", "loss: 0.13361862667619914 epoch: 24\n", "loss: 0.13654647394189948 epoch: 25\n", "loss: 0.13417348967924048 epoch: 26\n", "loss: 0.12972932898959824 epoch: 27\n", "loss: 0.1291217440104548 epoch: 28\n", "loss: 0.13198162760869697 epoch: 29\n", "loss: 0.135054765832336 epoch: 30\n", "loss: 0.13320357821353757 epoch: 31\n", "loss: 0.12909628769972906 epoch: 32\n", "loss: 0.12573433574303722 epoch: 33\n", "loss: 0.13477334032582067 epoch: 34\n", "loss: 0.1323425662396159 epoch: 35\n", "loss: 0.14041181270878655 epoch: 36\n", "loss: 0.1387750871453092 epoch: 37\n", "loss: 0.13157804233240256 epoch: 38\n", "loss: 0.1259678057586573 epoch: 39\n", "loss: 0.1269320724503436 epoch: 40\n", "loss: 0.12591662427445863 epoch: 41\n", "loss: 0.12797915811837937 epoch: 42\n", "loss: 0.12756404518885575 epoch: 43\n", "loss: 0.12538937735793515 epoch: 44\n", "loss: 0.123002392646119 epoch: 45\n", "loss: 0.12341501828348579 epoch: 46\n", "loss: 0.12435327613205616 epoch: 47\n", "loss: 0.1265953229802795 epoch: 48\n", "loss: 0.12620645993895843 epoch: 49\n", "loss: 0.12403969502258806 epoch: 50\n", "loss: 0.1208232715441185 epoch: 51\n", "loss: 0.12618915811980186 epoch: 52\n", "loss: 0.12273889568581745 epoch: 53\n", "loss: 0.12563103674416173 epoch: 54\n", "loss: 0.12520812739757248 epoch: 55\n", "loss: 0.12245431144712171 epoch: 56\n", "loss: 0.11863307268044157 epoch: 57\n", "loss: 0.12051669177016336 epoch: 58\n", "loss: 0.11815964737139971 epoch: 59\n", "loss: 0.11847109269406123 epoch: 60\n", "loss: 0.11630552895028964 epoch: 61\n", "loss: 0.11735549475993035 epoch: 62\n", "loss: 0.1154355936014345 epoch: 63\n", "loss: 0.11534015710817626 epoch: 64\n", "loss: 0.11371787612327316 epoch: 65\n", "loss: 0.1162879590364654 epoch: 66\n", "loss: 0.1186500563144215 epoch: 67\n", "loss: 0.12255232419740734 epoch: 68\n", "loss: 0.1205502966619044 epoch: 69\n", "loss: 0.11559170084589787 epoch: 70\n", "loss: 0.11200897143957601 epoch: 71\n", "loss: 0.11855099712484697 epoch: 72\n", "loss: 0.11811760873269349 epoch: 73\n", "loss: 0.1248936843608191 epoch: 74\n", "loss: 0.12439209442066561 epoch: 75\n", "loss: 0.11878453326081641 epoch: 76\n", "loss: 0.1126947256644929 epoch: 77\n", "loss: 0.11433384713596555 epoch: 78\n", "loss: 0.1107735585308641 epoch: 79\n", "loss: 0.11122956996723496 epoch: 80\n", "loss: 0.11055775876358186 epoch: 81\n", "loss: 0.10947555009104898 epoch: 82\n", "loss: 0.10941025196097363 epoch: 83\n", "loss: 0.10931555748936736 epoch: 84\n", "loss: 0.10910265386609252 epoch: 85\n", "loss: 0.10829084576390395 epoch: 86\n", "loss: 0.1112498249696613 epoch: 87\n", "loss: 0.11139974865295045 epoch: 88\n", "loss: 0.11436936911233192 epoch: 89\n", "loss: 0.11335535788700257 epoch: 90\n", "loss: 0.11028644795969816 epoch: 91\n", "loss: 0.10775048468457629 epoch: 92\n", "loss: 0.11298200724997584 epoch: 93\n", "loss: 0.11244084941551477 epoch: 94\n", "loss: 0.11916647968906746 epoch: 95\n", "loss: 0.11816646304668112 epoch: 96\n", "loss: 0.11235985159849048 epoch: 97\n", "loss: 0.1078118637173683 epoch: 98\n", "loss: 0.11145819366441052 epoch: 99\n", "loss: 0.1072962394582775 epoch: 100\n", "loss: 0.10849653560807722 epoch: 101\n", "loss: 0.10819595237226295 epoch: 102\n", "loss: 0.10684554318361893 epoch: 103\n", "loss: 0.10542175489508059 epoch: 104\n", "loss: 0.10818050307024418 epoch: 105\n", "loss: 0.10784328295477412 epoch: 106\n", "loss: 0.11100641898539822 epoch: 107\n", "loss: 0.11057081267445168 epoch: 108\n", "loss: 0.10780317381169821 epoch: 109\n", "loss: 0.10531528957710151 epoch: 110\n", "loss: 0.1068801223889791 epoch: 111\n", "loss: 0.10472825251983942 epoch: 112\n", "loss: 0.1051267333169951 epoch: 113\n", "loss: 0.10480307172699281 epoch: 114\n", "loss: 0.10404278473462401 epoch: 115\n", "loss: 0.10331971581441422 epoch: 116\n", "loss: 0.1033296372624746 epoch: 117\n", "loss: 0.10410368328464957 epoch: 118\n", "loss: 0.10480345394765454 epoch: 119\n", "loss: 0.10449037406938307 epoch: 120\n", "loss: 0.1036419131005099 epoch: 121\n", "loss: 0.1039402883442618 epoch: 122\n", "loss: 0.10279433564761 epoch: 123\n", "loss: 0.10252534741848623 epoch: 124\n", "loss: 0.10192324923643555 epoch: 125\n", "loss: 0.10391248552345227 epoch: 126\n", "loss: 0.10679248378189415 epoch: 127\n", "loss: 0.11264800752265242 epoch: 128\n", "loss: 0.11202389350910529 epoch: 129\n", "accuracy test 0.96484375 train 0.9596354166666666\n", "f1score test 0.9662921348314606 train 0.9611041405269761\n", "precision test 0.9347826086956522 train 0.9251207729468599\n", "recall test 1.0 train 1.0\n", "\n" ] } ], "source": [ "accuracies = []\n", "f1scores = []\n", "precisionscores = []\n", "recallscores = []\n", "losss = []\n", "\n", "for i in range(4):\n", " print('cross no.', i+1)\n", " Xtrain, Xtest = X[:len(X)*i//4] + X[len(X)*(i+1)//4:], X[len(X)*i//4:len(X)*(i+1)//4] \n", " Ytrain, Ytest = Y[:len(X)*i//4] + Y[len(X)*(i+1)//4:], Y[len(X)*i//4:len(X)*(i+1)//4] \n", "\n", " hiddenLayer1 = Layer(10, 1, activation='reLu')\n", " outputLayer = Layer(11, 1, activation='sigmoid')\n", " for i in range(5):\n", " hiddenLayer1.neurons[0].w[i] = Value(5.0-i)\n", " hiddenLayer1.neurons[0].w[9-i] = Value(i-5.0)\n", " for i in range(5):\n", " outputLayer.neurons[0].w[i+1] = Value(5.0-i)\n", " outputLayer.neurons[0].w[9-i+1] = Value(i-5.0)\n", " parameters = outputLayer.parameters() + hiddenLayer1.parameters()\n", "\n", " prevchange = [0]*len(parameters)\n", " beta = 0.7 # parameter for momentum update\n", " lr = 1\n", " epochs = 130\n", "\n", " for _ in range(epochs):\n", " Y_pred = [predict(x) for x in Xtrain]\n", " loss = Value(0)\n", " for i in range(len(Ytrain)):\n", " if Ytrain[i] == 1:\n", " loss -= Y_pred[i].log()\n", " else:\n", " loss -= (Value(1) - Y_pred[i]).log()\n", " loss = loss/len(X)\n", " loss.backward()\n", "\n", " for ix, p in enumerate(parameters):\n", " change = lr*p.grad + beta*prevchange[ix]\n", " p.data = p.data -change\n", " prevchange[ix] = change\n", "\n", " for p in parameters:\n", " p.grad = 0\n", " losss.append(loss.data)\n", " print('loss:', loss.data,'epoch:', _)\n", " print( 'accuracy','test', getAccuracy(Xtest, Ytest),'train', getAccuracy(Xtrain, Ytrain))\n", " print( 'f1score','test', getf1(Xtest, Ytest),'train', getf1(Xtrain, Ytrain))\n", " print( 'precision','test', getPrecision(Xtest, Ytest),'train', getPrecision(Xtrain, Ytrain))\n", " print( 'recall','test',getRecall(Xtest, Ytest),'train',getRecall(Xtrain, Ytrain))\n", " print()\n", " accuracies.append(getAccuracy(Xtest, Ytest))\n", " f1scores.append(getf1(Xtest, Ytest))\n", " precisionscores.append(getPrecision(Xtest, Ytest))\n", " recallscores.append(getRecall(Xtest, Ytest))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "final accuracy: 0.9501953125\n", "final f1score 0.9531623702972016\n", "final precisionscore 0.9110402541368356\n", "final recallscore 1.0\n" ] } ], "source": [ "print('final accuracy:', sum(accuracies)/4)\n", "print('final f1score', sum(f1scores)/4)\n", "print('final precisionscore', sum(precisionscores)/4)\n", "print('final recallscore', sum(recallscores)/4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[4.130229565865318,\n", " 5.156892161282381,\n", " 4.022968498866327,\n", " 2.1792732617579484,\n", " 0.9036316169266277,\n", " -1.0918839311741206,\n", " -2.336481262518848,\n", " -4.136072422567298,\n", " -5.19979213705881,\n", " -4.200395429503537,\n", " -0.13505294147048558]" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[i.data for i in hiddenLayer1.neurons[0].w] + [hiddenLayer1.neurons[0].b.data]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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K9yb+qOicwpA/PDDD9IxeXl5Yvz48cLb21u4uLiIRx99VCQmJpr8nCtXrohBgwYJZ2dn4evrK1577TVRVFRUx/emfvn3v/8tmjRpItRqtWjYsKHo16+fFGyE4Hm1tLLhhufXPMOHDxeBgYFCrVaL4OBgMXz4cHHhwgXpels8rwohhLBOnxERERGR5bHmhoiIiGwKww0RERHZFIYbIiIisikMN0RERGRTGG6IiIjIpjDcEBERkU1huCEiIiKbwnBDRHZJoVBg7dq11m4GEdUChhsiqnPPPvssFApFua+BAwdau2lEZAMcrN0AIrJPAwcOxA8//GBymUajsVJriMiWsOeGiKxCo9EgICDA5Mvb2xuAbshowYIFGDRoEJydndGsWTOsXr3a5PYnTpxA37594ezsjAYNGmDcuHHIzs42OWbx4sVo27YtNBoNAgMDMXHiRJPrU1NT8eijj8LFxQUtWrTAH3/8IV13+/ZtjBw5Eg0bNoSzszNatGhRLowRUf3EcENE9dKUKVPw+OOP49ixYxg5ciSeeuopxMXFAQBycnIwYMAAeHt749ChQ1i1ahW2bt1qEl4WLFiACRMmYNy4cThx4gT++OMPhIWFmfyOGTNm4Mknn8Tx48fx4IMPYuTIkUhLS5N+/+nTp7FhwwbExcVhwYIF8PX1rbsTQETms/bOnURkf0aPHi1UKpVwdXU1+frwww+FELqdzV944QWT20RGRooXX3xRCCHEokWLhLe3t8jOzpauX7dunVAqlSIpKUkIIURQUJB45513Km0DAPHuu+9K32dnZwsAYsOGDUIIIYYMGSLGjBljmTtMRHWKNTdEZBV9+vTBggULTC7z8fGR/h8VFWVyXVRUFGJjYwEAcXFxiIiIgKurq3R99+7dodVqcfbsWSgUCiQkJKBfv35VtqFDhw7S/11dXeHh4YGUlBQAwIsvvojHH38cR44cQf/+/TF06FDcd999Zt1XIqpbDDdEZBWurq7lhoksxdnZuVrHOTo6mnyvUCig1WoBAIMGDcLVq1exfv16bNmyBf369cOECRPw6aefWry9RGRZrLkhonrpwIED5b5v06YNAKBNmzY4duwYcnJypOv//vtvKJVKtGrVCu7u7ggNDcW2bdvuqg0NGzbE6NGj8fPPP2PevHlYtGjRXf08Iqob7LkhIqsoKChAUlKSyWUODg5S0e6qVavQtWtX9OjRA7/88gsOHjyI77//HgAwcuRITJs2DaNHj8b06dNx8+ZNvPTSS3jmmWfg7+8PAJg+fTpeeOEF+Pn5YdCgQcjKysLff/+Nl156qVrtmzp1Krp06YK2bduioKAAf/31lxSuiKh+Y7ghIqvYuHEjAgMDTS5r1aoVzpw5A0A3k2n58uUYP348AgMDsWzZMoSHhwMAXFxcsGnTJrz88su455574OLigscffxxz586Vftbo0aORn5+Pzz77DK+//jp8fX0xbNiwardPrVZj8uTJuHLlCpydndGzZ08sX77cAveciGqbQgghrN0IIiJjCoUCa9aswdChQ63dFCKSIdbcEBERkU1huCEiIiKbwpobIqp3OFpORHeDPTdERERkUxhuiIiIyKYw3BAREZFNYbghIiIim8JwQ0RERDaF4YaIiIhsCsMNERER2RSGGyIiIrIpDDdERERkU/4fQPdi382zM5MAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(losss)\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.title('Loss over Epochs / with momentum term')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Network Analysis" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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jCtjQhGyYsUKTZgwwdNh3BDfffedfHx89MEHH+iRRx5R9+7dr/me3bt364svvrgB0Xmn9u3b6+LFi3kOzHe3fv366eLFi6pevfoN/2wA15GgXLlyRePGjVNISIhq1KihGjVqKCQkRGPHjtXly5fdESPgFVJSUhQYGCg/P79CHR8YGKibbrpJEydOzLOK4gnnz5/3dAg2fHx8FBAQYLMG2I3i6+urgIAAmzXHcOOY7XvRdBgka2/YsGGaM2eOpkyZoh07dmjHjh2aMmWKPvjgAz399NPuiBE32Mcff6zmzZsrMDBQoaGheuihh5SUlGRzzPfff68HHnhA1apVk7+/vyIjI/XMM8/o4sWL1mNiYmI0Y8YMSVe7LHI2STp69KgsFoumTp2qGTNmqFatWipVqpS6du2qpKQkGYahSZMmqWrVqgoMDNS//vUvnTp1yiaGL7/8Uj169FBERIT8/f1Vu3ZtTZo0yW7BypzS9rZt29SmTRsFBgaqZs2amjVrVqHux5UrVzRp0iTVrl1b/v7+qlGjhl544QXrJIU51zd37lydP3/eep3z5s0r8Lw+Pj4aO3asdu3apWXLll0zjoyMDMXFxalOnTrWe/7888/bxJFzX/P6bIvFYtPd9tJLL8liseiXX37Rww8/rHLlyun2228v9DVLV8de/POf/9SGDRvUsmVLBQQEqFatWvroo49sjrt8+bImTJigunXrKiAgQOXLl9ftt9+u1atXF3jNeY1Byfl6/vLLL7rjjjtUqlQpValSRVOmTLnmPfy75cuXq2HDhvL391eDBg307bff2rye13gRwzA0efJkVa1aVaVKldIdd9yhn3/+Oc/z//zzz+rUqZMCAwNVtWpVTZ48WdnZedfUV65cqXbt2ql06dIKCgpSjx497M4bExOjMmXK6Pjx4+rZs6fKlCmjsLAwjRw50mWLtO7atUsxMTGqVauWAgICFB4erkcffVR//fWX9ZjExERZLJY8v2cXLVoki8WiTZs2Wdv27dun+++/X6GhoQoICFCLFi301Vdf2bwv516vW7dOTz31lCpWrKiqVau65JqKrGLQxePwPCiLFi3S4sWLdeedd1rbGjdurMjISPXu3VszZ850aYBwXlpamk6ePGnXnlfF6+WXX9a4cePUq1cvDRo0SKmpqZo2bZrat2+vHTt2qGzZspKkzz77TBcuXNCT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wNUrXecVQ2Zmpv7v//4vz+OvXLmi2bNn2xw7e/ZshYWFqXnz5vl+Ts5ka2+//bZNe04lo0ePHtcVf1769u2rOnXq5DmxXa9evXT8+HG99957dq9dvHjR+sRDcHCwKlSooPXr19sck999yYs7rvnvj6lKV6txderUsXts2cy6dOmikiVLatq0aTbfd7nvk3T1Hm7evFk//PCDtS01NVULFy60OS46OlrBwcF65ZVX8nyqLjU11XUXcA15/UxJeV+fJFWoUEF33nmnPv74Yy1cuFDdunVThQoVrK9XrFhRHTt21OzZs/Xnn3/avf9GXluRxGPG9v766y+NHz9eiYmJSklJsSv75Z6rAt6jdu3amjx5ssaMGaOjR4+qZ8+eCgoK0pEjR7Rs2TI99thjGjlypOrVq6fatWtr5MiROn78uIKDg/X555/n2Q+e88v/6aefVnR0tHx9ffXQQw85HWubNm1Urlw59e/fX08//bQsFosWLFiQb4k+IiJCr732mo4ePaqbbrpJn376qX766SfNmTPHZmxNblFRUerfv7/mzJlj7Vb64YcfNH/+fPXs2VN33HGH09eSw9fXVy+++KIGDBhg91q/fv20ZMkSPfHEE0pMTFTbtm2VlZWlffv2acmSJfp//+//WccZDRo0SK+++qoGDRqkFi1aaP369dZqUWG445pvueUWdezYUc2bN1doaKi2bt2qpUuXetXA+pw5R+Lj4/XPf/5T3bt3144dO7Ry5UqbX8yS9Pzzz2vBggXq1q2bhg8fbn3MuHr16jbjZIKDgzVz5kz169dPzZo100MPPaSwsDAdO3ZM//73v9W2bVubbhNnpaamavLkyXbtNWvWVJ8+fdS+fXtNmTJFly9fVpUqVbRq1ap8q5LS1W6e+++/X5LyXO5kxowZuv3229WoUSMNHjxYtWrV0okTJ7Rp0yb9/vvv2rlzp8uuDUWPwwlKv379dOjQIQ0cOFCVKlVilsUiZvTo0brpppv01ltvWf+Sj4yMVNeuXXX33XdLulqy/frrr/X0008rPj5eAQEBuueeezR06FDrwOkc9957r4YNG6bFixfr448/lmEYLklQypcvr2+++UbPPvusxo4dq3Llyqlv377q3Llznv3d5cqV0/z58zVs2DC99957qlSpkqZPn67Bgwdf87Pef/991apVS/PmzdOyZcsUHh6uMWPG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Text(0, 0.5, 'neuron number')" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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p06ditGjRwPI/z4s+BzcunVLvW1kZCTWr1+P+vXrw8bGBgEBAdi/f7/GMfv376/zO7bg51X43JmZmVizZo36XP3793/hPXiRVatWoVOnTqhevTqUSiUaNmyolayFhYWhWrVqOpvDunTpgvr162usK8l3SuHf0/bt28POzg4TJkww+HrKLTM08cTFxambRatXr47Q0FBcvnzZKJeji94JSmRkJKZNm6bxRZWdnY0ZM2awzVyi0tLScP/+fa1F15fLjBkz0K9fP/j6+mLBggUYPnw4EhIS0L59e42y9ffff4+srCwMHjwYS5YsQUhICJYsWYJ+/fqpt/n444/x2muvAcifTLJgKWz9+vX4/PPPMWTIEIwcORL79u1Djx49MGnSJOzcuRNjx47FRx99hJ9++gmjRo3S2Hf16tWoXLkyoqKisHjxYgQEBGDKlCkYN26c1nU9evQIb7zxBgICAjBnzhzUqlULgwcPxtdff/3C+zdw4EBMmTIFLVq0wMKFCxEUFIS4uDj07NlTvc0333yDV199FUqlUn2dJWmW+PDDD+Hr64vY2FidfVEKqFQqvP3225g3bx7eeustLFmyBKGhoVi4cCE++OCDF56nON27d0dWVhZmzpyJQYMGlfiaC1y7dg3/93//h9deew3z589HlSpV0L9/f/z222/qbaZOnYqYmBh07NgRS5cuxcSJE1G7du1ST4/x6NEjdO3aFf7+/pg/fz78/PwwduxY7Nixo9j9duzYgby8PI3P6fP69euH3Nxc7Ny5U6+Y3nvvPfTq1QsAsHDhQvXnwNXVVb3Nvn37MHz4cPTp0wexsbF48OABunbtigsXLuh1LiD/M6dUKvHqq6+qz/Xxxx/rfZznLV++HF5eXpgwYQLmz58PT09PfPrpp+r/bABA37598eDBA/z8888a+6akpGDPnj3o06ePel1Jv1MA4MGDB3j99dfRrFkzLFq0CB07djT4esotMyQo+/btQ0REBH799Vfs3r0bz549Q5cuXUrdJPpCogTeffddjcXBwUFUq1ZNBAcHi+DgYFGtWjXh6Ogo3n333ZIcjsrIqlWrBIBil0aNGqm3v3XrlrC0tBQzZszQOM758+eFlZWVxvqsrCyt88XFxQmFQiFu376tXhcRESF0fcxu3rwpAAhXV1fx+PFj9frx48cLAMLf3188e/ZMvb5Xr17C2tpa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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "neuron1weightsbias = [v.data for v in hiddenLayer1.neurons[0].w] + [hiddenLayer1.neurons[0].b.data]\n", "outputneuronweightsbias = [v.data for v in outputLayer.neurons[0].w] + [outputLayer.neurons[0].b.data]\n", "import matplotlib.pyplot as plt\n", "\n", "plt.imshow([neuron1weightsbias], cmap='hot')\n", "plt.colorbar()\n", "plt.title('Heatmap of Neurons in hidden Layer')\n", "plt.xlabel('neuron number')\n", "plt.ylabel('neuron number')\n", "plt.show()\n", "\n", "plt.imshow([outputneuronweightsbias], cmap='hot')\n", "plt.colorbar()\n", "plt.title('Heatmap of Neurons in Output Layer')\n", "plt.xlabel('neuron number')\n", "plt.ylabel('neuron number')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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JP35z3+ukt+AWrx4scaMGaNJkyYpKytL7dq1U3JysnJzcyv9WAAAwL9UuNTUr19fH3zwQZnxDz74wPNNw4WFhQoNDf3j6X7nH//4h4YNG6YhQ4aodevWmjNnjmrXrq1XX3210o8FAAD8S4U/fpowYYJGjBih1atXez722bhxoz766CPNmTNHkrRy5UolJCRUatDi4mJt3rxZ48eP94zVqFFDvXv31rp168rdp6ioSEVFRZ7lgoKCSs0EAACqD5cxxlR0p8zMTM2ePVvZ2dmSpCuuuEIPPPCAunXrVukBT8nJydGll16qL774Qtdee61n/G9/+5vWrl2rDRs2lNnnscce0+TJk8uM5+fnq27dulWWFUDFtRi3zOkI2jO97zm38Yec1SGjRM7KZMvfzfNVUFCgsLCwc75/V3imRpLi4+P94le6x48frzFjxniWCwoKFBUV5WAiAABQVXwqNQUFBZ5mdK6PcKpqBuSSSy5RQECADh486DV+8OBBNW7cuNx93G633G53leQBAADVi08XCoeHh3vuMKpXr57Cw8PLPE6NV5VatWqpY8eOWrVqlWestLRUq1at8vo4CgAAXJx8mqn59NNPPXc2rV69ukoDnc2YMWM0ePBgderUSV26dNGzzz6rwsJCvr0YAAD4VmpOv5Opsu9qqojbb79deXl5mjhxog4cOKD27dtrxYoVatSokWOZAACoDqrqIl1/cl4/aPn5559r4MCB6tatm/bt2ydJeuONN5SRkVGp4cozcuRI/fjjjyoqKtKGDRvUtWvXKj8mAACo/ipcat59910lJycrODhYWVlZnu+Byc/P17Rp0yo9IAAAgC8qXGqmTJmiOXPm6OWXX1bNmjU94/Hx8crKyqrUcAAAAL6qcKnJzs5Wjx49yoyHhYXp8OHDlZEJAACgwipcaho3bqxdu3aVGc/IyFBMTEylhAIAAKioCpeaYcOGKS0tTRs2bJDL5VJOTo7eeustjR07ViNGjKiKjAAAAOfk888k7N69W9HR0Ro3bpxKS0vVq1cvHTt2TD169JDb7dbYsWP1wAMPVGVWAACAM/K51MTGxqp58+ZKSkpSUlKStm/friNHjujo0aNq3bq16tSpU5U5AQAAzsrnUvPpp59qzZo1WrNmjf75z3+quLhYMTEx6tmzp3r27KnExES+BA8AADjG51KTmJioxMRESdLx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KCgwaWlpplmzZiYoKMjExMSYRx55xBQVFTkdzS+sXr263H8nBw8ebIz57bbuCRMmmEaNGhm322169eplsrOznQ1dAS5j+BpGAADg/7imBgAAWIFSAwAArECpAQAAVqDUAAAAK1BqAACAFSg1AADACpQaAABgBUoNAFSSBQsWqF69ek7HAC5alBrgIpOSkiKXy6Xp06d7jb/33ntyuVwOpaocLVq0kMvl0vr1673GR48ercTERGdCAbhgKDXARSgoKEgzZszQL7/8csGPfeLEiSp9/qCgID388MNVeowLrarPGWALSg1wEerdu7caN26s9PT0s26XkZGh6667TsHBwYqKitKoUaNUWFjoWe9yufTee+957VOvXj0tWLBAkrRnzx65XC4tXrxYCQkJCgoK0ltvvaXS0lI9/vjjatq0qdxut9q3b68VK1Z4nuPUfv/617+UlJSk2rVrq127dlq3bt05X9u9996r9evX66OPPjrjNomJiRo9erTXWP/+/ZWSkuJZbtGihaZMmaJBgwapTp06at68ud5//33l5eXppptuUp06ddS2bVtt2rSpzPO/9957atmypYKCgpScnKy9e/d6rV+6dKmuvvpqBQUFKSYmRpMnT9bJkyc9610ul1566SXdeOONCgkJ0dSpU8/5ugFQaoCLUkBAgKZNm6ZZs2bpv//9b7nbfP/99+rTp49uueUW/ec//9HixYuVkZGhkSNHVvh448aNU1pamrZv367k5GQ999xzevrppzVz5kz95z//UXJysm688Ubt3LnTa79HHnlEY8eO1ZYtW3T55Zfrzjvv9HrzL090dLTuu+8+jR8/XqWlpRXOerpnnnlG8fHx+uqrr9S3b1/dddddGjRokAYOHKisrCzFxsZq0KBBOv0n9I4dO6apU6fq9ddfV2Zmpg4fPqw77rjDs/7zzz/XoEGDlJaWpm+//VZz587VggULyhSXxx57TP/zP/+jrVu38gvUgK8c/kFNABfY4MGDzU033WSMMeaaa64xQ4cONcYYs2TJEnP6Pwl33323uffee732/fzzz02NGjXMr7/+aoz57ZfRlyxZ4rVNWFiY55fRd+/ebSSZZ5991mubyMhIM3XqVK+xzp07m/vvv99rv1deecWz/ptvvjGSzPbt28/42po3b26eeeYZk5uba0JDQ83rr79ujDEmLS3NJCQkeLYr7xfHb7rpJs8vFZ96roEDB3qW9+/fbySZCRMmeMbWrVtnJJn9+/cbY4yZP3++kWTWr1/v2Wb79u1GktmwYYMxxphevXqZadOmeR37jTfeME2aNPEsSzKjR48+4+sEUD5maoCL2IwZM/Taa69p+/btZdZ9/fXXWrBggerUqeN5JCcnq7S0VLt3767QcTp16uT5c0FBgXJychQfH++1TXx8fJkcbdu29fy5SZMmkqTc3NxzHi8iIkJjx47VxIkTVVxcXKGsZzp+o0aNJElt2rQpM3Z6psDAQHXu3Nmz3KpVK9WrV8/z2r7++ms9/vjjXud12LBh2r9/v44dO+bZ7/RzBsA3gU4HAOCcHj16KDk5WePHj/e6nkSSjh49quHDh2vUqFFl9mvWrJmk3679MKd99CKVf1FrSEjIeeWrWbOm58+n7szy9SOlMWPG6MUXX9SLL75YZl2NGjV8yl3e8f9IJum38zp58mTdfPPNZdYFBQV5/ny+5wy4mFFqgIvc9OnT1b59e11xxRVe41dffbW+/fZbXXbZZWfcNyIiQvv37/cs79y502u2oTx169ZVZGSkMjMzlZCQ4BnPzMxUly5dzvNVlFWnTh1NmDBBjz32mG688caz5i4pKdG2bduUlJT0h4978uRJbdq0yfNasrOzdfjwYV155ZWSfjuv2dnZZz2vAM4PHz8BF7k2bdpowIABev75573GH374YX3xxRcaOXKktmzZop07d2rp0qVeFwr37NlTs2fP1ldffaVNmzbpvvvu85rJOJO//vWvmjFjhhYvXqzs7GyNGzdOW7ZsUVpaWqW+tnvvvVdhYWFauHCh13jPnj21bNkyLVu2TDt27NCIESN0+PDhSjlmzZo19cADD2jDhg3avHmzUlJSdM0113hKzsSJE/X6669r8uTJ+uabb7R9+3YtWrRIjz76aKUcH7iYUWoA6PHHHy/zEUrbtm21du1afffdd7ruuuvUoUMHTZw4UZGRkZ5tnn76aUVFRem6667TX/7yF40dO1a1a9c+5/FGjRqlMWPG6KGHHlKbNm20YsUKvf/++2rZsmWlvq6aNWvqiSee0PHjx73Ghw4dqsGDB2vQoEFKSEhQTExMpczSSFLt2rX18MMP6y9/+Yvi4+NVp04dLV682LM+OTlZH374oT755BN17txZ11xzjZ555hk1b968Uo4PXMxc5vcfLAMAAPghZmoAAIAVKDUAAMAKlBoAAGAFSg0AALACpQYAAFiBUgMAAKxAqQEAAFag1AAAACtQagAAgBUoNQAAwAqUGgAAYAVKDQAAsML/AyKKvqFvbveJAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.bar(range(len(neuron1weightsbias)), neuron1weightsbias)\n", "plt.xlabel('Neuron Number')\n", "plt.ylabel('Weight')\n", "plt.title('Neuron 1 Weights')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAHHCAYAAABHp6kXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA01klEQVR4nO3deVxVdf7H8fcF5LIjGqgksuXkbiZqASqoiQ0tTovNZLlUpIapmSVO45YLapuZZepvRm1+Wk41tlmWmZqikmuropaWubbJVSxU7vn90cP76wboxcBz7/H1fDzOYzjfs3w/94Tc93zPZjMMwxAAAICP8zO7AAAAgOpAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAC1i1apVsNptWrVp13tu+8sor1V8YcAERagAv8dxzz2n+/PkXpK8vvvhC48aN0969ey9If77uvffe0913360WLVrI399fCQkJHm1XVlamiIgI3XjjjeWWPfXUU7LZbOrbt2+5ZWPGjJHNZtPOnTv/aOnVbtGiRZo+fbrZZQAVItQAXuJCh5rx48cTajy0aNEiLVq0SJGRkYqNjfV4O39/f1111VVat25duWUFBQUKCAhQQUFBhctiYmL0pz/9yeO+OnXqpJ9//lmdOnXyeJvzQaiBNyPUAPA5JSUlF7S/yZMny+FwqKCgQK1bt67Stunp6fr++++1fft2t/aCggL16tVLX375pQ4dOuRqP336tAoLC5WWllalfvz8/BQUFCQ/P/6s4+LFbz9wnrZu3aprr71WERERCgsLU9euXbVhwwa3dcaNGyebzVZu2/nz58tms7lGShISEvT5559r9erVstlsstlsysjIcFv3ww8/1IABA1S3bl1FRESoT58++umnn9z2a7PZNG7cuHL9JSQkqF+/fq793XrrrZKkzMxMV39nuxajX79+CgsL0/79+9WzZ0+FhYUpOjpaI0aMUFlZmdu6TqdT06dPV/PmzRUUFKR69eppwIAB51Xrbz//6tWrdd999ykmJkYNGzZ0LX/uuefUvHlz2e12xcbGKjc3V0ePHnXbZ0ZGhlq0aKEvvvhCmZmZCgkJ0aWXXqpp06ZV+pl/KzY2VrVq1fJo3d9LT0+XJLcRma+++kqHDh3S4MGDFRQU5LZs27ZtKikpcW0nSTt27NAtt9yiOnXqKCgoSCkpKXrjjTfc+qnsmppnn31WSUlJCg4OVvv27bVmzRplZGS4fr9+y+l0atKkSWrYsKGCgoLUtWtX7d6927U8IyNDS5cu1ddff+36vfntqbhnnnlGzZs3V0hIiKKiopSSkqJFixadz2EDzkuA2QUAvujzzz9Xx44dFRERoYcffli1atXS7NmzlZGRodWrV6tDhw5V2t/06dN1//33KywsTI888ogkqV69em7rDB48WLVr19a4ceNUVFSkWbNm6euvv3Z9mXmqU6dOGjJkiGbMmKG///3vatq0qSS5/rcyZWVlysrKUocOHfT444/r/fff1xNPPKHk5GQNGjTItd6AAQM0f/589e/fX0OGDNGePXs0c+ZMbd26VQUFBecdDu677z5FR0drzJgxrpGacePGafz48erWrZsGDRrkOi4bN24s19dPP/2kHj166KabblKvXr30yiuvaOTIkWrZsqWuvfba86rJE1dddZUCAgK0du1a3XPPPZJ+DTihoaFq166dUlJSVFBQoJtvvtm1TPr/MPT5558rLS1Nl156qfLy8hQaGqr//Oc/6tmzp1599VX95S9/qbTvWbNmafDgwerYsaMeeOAB7d27Vz179lRUVJRbMDxjypQp8vPz04gRI1RcXKxp06apd+/eKiwslCQ98sgjKi4u1rfffqunnnpKkhQWFiZJmjt3roYMGaJbbrlFQ4cO1S+//KJPPvlEhYWFuv3226vpaALnYACosp49exqBgYHGl19+6Wo7cOCAER4ebnTq1MnVNnbsWKOif2bz5s0zJBl79uxxtTVv3tzo3Llzpeu2bdvWOHnypKt92rRphiTj9ddfd7VJMsaOHVtuH/Hx8Ubfvn1d8y+//LIhyVi5cqVHn7dv376GJOPRRx91a2/Tpo3Rtm1b1/yaNWsMScbChQvd1lu2bFm5dk9rPfP509PTjdOnT7vajxw5YgQGBhrdu3c3ysrKXO0zZ840JBn/+te/XG2dO3c2JBkvvPCCq620tNSoX7++cfPNN3t0DM7Izs424uPjq7RNu3btjOTkZNf8gAEDjMzMTMMwDOPhhx822rVr51p2yy23GCEhIcapU6cMwzCMrl27Gi1btjR++eUX1zpOp9NITU01Gjdu7GpbuXKl23/T0tJSo27duka7du1c+zIMw5g/f74hye137cy2TZs2NUpLS13tTz/9tCHJ+PTTT8/5+W+88UajefPmVTouQHXj9BNQRWVlZXrvvffUs2dPJSUludobNGig22+/XWvXrpXD4aj2fu+99163kYdBgwYpICBAb7/9drX3VZmBAwe6zXfs2FFfffWVa/7ll19WZGSkrrnmGn3//feuqW3btgoLC9PKlSvPu++cnBz5+/u75t9//32dPHlSw4YNc7uOJCcnRxEREVq6dKnb9mFhYbrjjjtc84GBgWrfvr1b/TUlPT3d7dqZgoICpaamSpLS0tK0detWnThxwrWsQ4cOCggI0I8//qgPPvhAvXr10rFjx1zH84cfflBWVpZ27dql/fv3V9jnpk2b9MMPPygnJ0cBAf8/KN+7d29FRUVVuE3//v0VGBjomu/YsaMkeXSMateurW+//VYbN2704IgANYNQA1TRd999pxMnTujyyy8vt6xp06ZyOp3at29ftffbuHFjt/mwsDA1aNDggt3BFBQUpOjoaLe2qKgot2tldu3apeLiYsXExCg6OtptOn78uI4cOXLe/ScmJrrNf/3115JU7r9DYGCgkpKSXMvPaNiwYbnTdL+vv6b89rqao0ePuk4pSVJqaqpOnz6tjz76SHv27NHBgwdd6+/evVuGYWj06NHljufYsWMlqdJjeubzX3bZZW7tAQEBld6S3qhRI7f5M+HHk2M0cuRIhYWFqX379mrcuLFyc3MrvLMLqElcUwPUoMqudfn9xbU1rTr6++0oSWWcTqdiYmK0cOHCCpf/PhRVpLJag4ODz7nt2VRWv2EYf2i/njgTUtauXauQkBBJ0tVXXy1JuuSSS9S4cWOtXbvWFYbPrO90OiVJI0aMUFZWVoX7/n1o+SP+yDFq2rSpioqK9NZbb2nZsmV69dVX9dxzz2nMmDEaP358tdUInA2hBqii6OhohYSEqKioqNyyHTt2yM/PT3FxcZL+///pHj16VLVr13at9/tRBKnyAHTGrl27lJmZ6Zo/fvy4Dh48qD//+c+utqioqHJ3/pw8eVIHDx6sUl/nKzk5We+//77S0tLOGUI8rbUy8fHxkqSioiK304AnT57Unj171K1bt6oVX4NiYmJcwSU0NFTNmjVz+31ITU1VQUGBvv32W/n7+7sCz5nPVatWrSp/njPHZ/fu3W6/N6dPn9bevXvVqlWr8/osZ/vdCQ0N1W233abbbrtNJ0+e1E033aRJkyZp1KhRCgoKOq/+gKrg9BNQRf7+/urevbtef/11t1M/hw8f1qJFi5Senq6IiAhJv37JS9KHH37oWq+kpEQLFiwot9/Q0NByX/K/NWfOHJ06dco1P2vWLJ0+fdrtzp3k5GS3vs5s9/vRj9DQUEk6a3/no1evXiorK9OECRPKLTt9+rRbf57WWplu3bopMDBQM2bMcBtJ+Oc//6ni4mJlZ2ef34eoIenp6dq2bZvee+891/U0Z6Smpmr9+vVas2aNWrVqpfDwcEm/hqGMjAzNnj27wrD33XffVdpfSkqK6tatq7lz5+r06dOu9oULF/6hU26hoaEqLi4u1/7DDz+4zQcGBqpZs2YyDMPt9xaoSYzUAOdh4sSJWr58udLT03XfffcpICBAs2fPVmlpqduzT7p3765GjRrp7rvv1kMPPSR/f3/961//UnR0tL755hu3fbZt21azZs3SxIkTddlllykmJkZdunRxLT958qS6du2qXr16qaioSM8995zS09N1ww03uNa55557NHDgQN1888265ppr9PHHH+vdd9/VJZdc4tbXFVdcIX9/f02dOlXFxcWy2+3q0qWLYmJi/tBx6dy5swYMGKD8/Hxt27ZN3bt3V61atbRr1y69/PLLevrpp3XLLbdUqdbKREdHa9SoURo/frx69OihG264wXVc2rVr53ZR8B/1ySefuJ4Ls3v3bhUXF2vixImSpNatW+v6668/5z7S09M1b948bdy4Ubm5uW7LUlNTVVxcrOLiYt1///1uy5599lmlp6erZcuWysnJUVJSkg4fPqz169fr22+/1ccff1xhf4GBgRo3bpzuv/9+denSRb169dLevXs1f/58JScnn/doXdu2bbV48WINHz5c7dq1U1hYmK6//np1795d9evXV1pamurVq6ft27dr5syZys7OdoU0oMaZeu8V4MO2bNliZGVlGWFhYUZISIiRmZlprFu3rtx6mzdvNjp06GAEBgYajRo1Mp588skKb+k+dOiQkZ2dbYSHh7vdcntm3dWrVxv33nuvERUVZYSFhRm9e/c2fvjhB7e+ysrKjJEjRxqXXHKJERISYmRlZRm7d+8ud5u0YRjG3LlzjaSkJMPf3/+ct3f37dvXCA0NLdde2S3rc+bMMdq2bWsEBwcb4eHhRsuWLY2HH37YOHDgQJVrPfP5N27c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YqQGAABYAqEGAABYgs+GmilTpshms2nYsGFmlwIAALyAT4aajRs3avbs2WrVqpXZpQAAAC/hc6Hm+PHj6t27t+bOnauoqCizywEAAF7C50JNbm6usrOz1a1bt3OuW1paKofD4TYBAABr8qlbul966SVt2bJFGzdu9Gj9/Px8jR8/voarAgAA3sBnRmr27dunoUOHauHChQoKCvJom1GjRqm4uNg17du3r4arBAAAZvGZkZrNmzfryJEjuvLKK11tZWVl+vDDDzVz5kyVlpbK39/fbRu73S673X6hSwUAACbwmVDTtWtXffrpp25t/fv3V5MmTTRy5MhygQYAAFxcfCbUhIeHq0WLFm5toaGhqlu3brl2AABw8fGZa2oAAADOxmdGaiqyatUqs0sAAABegpEaAABgCYQaAABgCYQaAABgCYQaAABgCYQaAABgCYQaAABgCYQaAABgCT79nBqgJiTkLTWt771Tsk3rGwB8HSM1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgg1AADAEgLMLsBT+fn5+u9//6sdO3YoODhYqampmjp1qi6//HKzSwMuiIS8pab1vXdKtml9A4CnfGakZvXq1crNzdWGDRu0fPlynTp1St27d1dJSYnZpQEAAC/gMyM1y5Ytc5ufP3++YmJitHnzZnXq1MmkqgAAgLfwmZGa3ysuLpYk1alTx+RKAACAN/CZkZrfcjqdGjZsmNLS0tSiRYtK1ystLVVpaalr3uFwXIjyAACACXxypCY3N1efffaZXnrppbOul5+fr8jISNcUFxd3gSoEAAAXms+FmsGDB+utt97SypUr1bBhw7OuO2rUKBUXF7umffv2XaAqAQDAheYzp58Mw9D999+vJUuWaNWqVUpMTDznNna7XXa7/QJUBwAAzOYzoSY3N1eLFi3S66+/rvDwcB06dEiSFBkZqeDgYJOrAwAAZqvy6advvvlGhmGUazcMQ9988021FFWRWbNmqbi4WBkZGWrQoIFrWrx4cY31CQAAfEeVR2oSExN18OBBxcTEuLX/+OOPSkxMVFlZWbUV91sVBSkAAIAzqjxSYxiGbDZbufbjx48rKCioWooCAACoKo9HaoYPHy5JstlsGj16tEJCQlzLysrKVFhYqCuuuKLaCwQAAPCEx6Fm69atkn4dqfn0008VGBjoWhYYGKjWrVtrxIgR1V8hAACABzwONStXrpQk9e/fX08//bQiIiJqrCgAAICqqvKFwvPmzauJOgAAAP6QKoeakpISTZkyRStWrNCRI0fkdDrdln/11VfVVhwAAICnqhxq7rnnHq1evVp33nmnGjRoUOGdUAAAABdalUPNO++8o6VLlyotLa0m6gEAADgvVX5OTVRUlOrUqVMTtQAAAJy3KoeaCRMmaMyYMTpx4kRN1AMAAHBePDr91KZNG7drZ3bv3q169eopISFBtWrVclt3y5Yt1VshAACABzwKNT179qzhMgAAAP4Yj0LN2LFja7oOAACAP6TK19QAAAB4oyrf0h0VFVXhs2lsNpuCgoJ02WWXqV+/furfv3+1FAgAAOCJKoeaMWPGaNKkSbr22mvVvn17SdJHH32kZcuWKTc3V3v27NGgQYN0+vRp5eTkVHvBAADg7BLylprS794p2ab0e0aVQ83atWs1ceJEDRw40K199uzZeu+99/Tqq6+qVatWmjFjBqEGAABcMFW+pubdd99Vt27dyrV37dpV7777riTpz3/+M++AAgAAF1SVQ02dOnX05ptvlmt/8803XU8aLikpUXh4+B+vDgAAwENVPv00evRoDRo0SCtXrnRdU7Nx40a9/fbbev755yVJy5cvV+fOnau3UgAAgLOocqjJyclRs2bNNHPmTP33v/+VJF1++eVavXq1UlNTJUkPPvhg9VYJAABwDlUONZKUlpbGW7oBAIBX8SjUOBwORUREuH4+mzPrAbg4mHXrqGT+7aMAvItHoSYqKkoHDx5UTEyMateuXeHD9wzDkM1mU1lZWbUXCQAAcC4ehZoPPvjAdWfTypUra7QgAACA8+FRqPntnUzc1QQAALzReb3Qcs2aNbrjjjuUmpqq/fv3S5L+/e9/a+3atdVaHAAAgKeqHGpeffVVZWVlKTg4WFu2bFFpaakkqbi4WJMnT672AgEAADxR5VAzceJEPf/885o7d65q1arlak9LS9OWLVuqtTgA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//z8fEVGRrqmuLi4C/XRAADABWbqhcIPPvig+vXrd9Z1kpKSdPDgQUlSs2bNXO12u11JSUn65ptvKt121KhRGj58uGve4XAQbAAAsChTQ010dLSio6PPuV7btm1lt9tVVFSk9PR0SdKpU6e0d+9excfHV7qd3W6X3W6vtnoBAID38olbuiMiIjRw4ECNHTtWcXFxio+P12OPPSZJuvXWW02uDgAAeAOfCDWS9NhjjykgIEB33nmnfv75Z3Xo0EEffPCBoqKizC4NAAB4AZ94Tk114Tk1AAD4Hks9pwYAAOBcCDUAAMASCDUAAMASCDUAAMASCDUAAMASCDUAAMASCDUAAMASfObhe9XhzCN5eFs3AAC+48z39rkerXdRhZpjx45JEi+1BADABx07dkyRkZGVLr+onijsdDp14MABhYeHy2azmV2Oy5m3h+/bt48nHXuA41U1HK+q45hVDcer6jhmVWMYho4dO6bY2Fj5+VV+5cxFNVLj5+enhg0bml1GpSIiIvjlrgKOV9VwvKqOY1Y1HK+q45h57mwjNGdwoTAAALAEQg0AALAEQo0XsNvtGjt2rOx2u9ml+ASOV9VwvKqOY1Y1HK+q45jVjIvqQmEAAGBdjNQAAABLINQAAABLINQAAABLINQAAABLINSY7Nlnn1VCQoKCgoLUoUMHffTRR2aX5LXy8/PVrl07hYeHKyYmRj179lRRUZHZZfmMKVOmyGazadiwYWaX4rX279+vO+64Q3Xr1lVwcLBatmypTZs2mV2W1yorK9Po0aOVmJio4OBgJScna8KECed8P8/F4sMPP9T111+v2NhY2Ww2vfbaa27LDcPQmDFj1KBBAwUHB6tbt27atWuXOcVaBKHGRIsXL9bw4cM1duxYbdmyRa1bt1ZWVpaOHDlidmleafXq1crNzdWGDRu0fPlynTp1St27d1dJSYnZpXm9jRs3avbs2WrVqpXZpXitn376SWlpaapVq5beeecdffHFF3riiScUFRVldmlea+rUqZo1a5Zmzpyp7du3a+rUqZo2bZqeeeYZs0vzCiUlJWrdurWeffbZCpdPmzZNM2bM0PPPP6/CwkKFhoYqKytLv/zyywWu1EIMmKZ9+/ZGbm6ua76srMyIjY018vPzTazKdxw5csSQZKxevdrsUrzasWPHjMaNGxvLly83OnfubAwdOtTskrzSyJEjjfT0dLPL8CnZ2dnGXXfd5dZ20003Gb179zapIu8lyViyZIlr3ul0GvXr1zcee+wxV9vRo0cNu91uvPjiiyZUaA2M1Jjk5MmT2rx5s7p16+Zq8/PzU7du3bR+/XoTK/MdxcXFkqQ6deqYXIl3y83NVXZ2ttvvGsp74403lJKSoltvvVUxMTFq06aN5s6da3ZZXi01NVUrVqzQzp07JUkff/yx1q5dq2uvvdbkyrzfnj17dOjQIbd/l5GRkerQoQPfAX/ARfVCS2/y/fffq6ysTPXq1XNrr1evnnbs2GFSVb7D6XRq2LBhSktLU4sWLcwux2u99NJL2rJlizZu3Gh2KV7vq6++0qxZszR8+HD9/e9/18aNGzVkyBAFBgaqb9++ZpfnlfLy8uRwONSkSRP5+/urrKxMkyZNUu/evc0uzesdOnRIkir8DjizDFVHqIFPys3N1Weffaa1a9eaXYrX2rdvn4YOHarly5crKCjI7HK8ntPpVEpKiiZPnixJatOmjT777DM9//zzhJpK/Oc//9HChQu1aNEiNW/eXNu2bdOwYcMUGxvLMYMpOP1kkksuuUT+/v46fPiwW/vhw4dVv359k6ryDYMHD9Zbb72llStXqmHDhmaX47U2b96sI0eO6Morr1RAQIACAgK0evVqzZgxQwEBASorKzO7RK/SoEEDNWvWzK2tadOm+uabb0yqyPs99NBDysvL01//+le1bNlSd955px544AHl5+ebXZrXO/N3nu+A6kWoMUlgYKDatm2rFStWuNqcTqdWrFihq6++2sTKvJdhGBo8eLCWLFmiDz74QImJiWaX5NW6du2qTz/9VNu2bXNNKSkp6t27t7Zt2yZ/f3+zS/QqaWlp5R4RsHPnTsXHx5tUkfc7ceKE/Pzcv0b8/f3ldDpNqsh3JCYmqn79+m7fAQ6HQ4WFhXwH/AGcfjLR8OHD1bdvX6WkpKh9+/aaPn26SkpK1L9/f7NL80q5ublatGiRXn/9dYWHh7vOO0dGRio4ONjk6rxPeHh4ueuNQkNDVbduXa5DqsADDzyg1NRUTZ48Wb169dJHH32kOXPmaM6cOWaX5rWuv/56TZo0SY0aNVLz5s21detWPfnkk7rrrrvMLs0rHD9+XLt373bN79mzR9u2bVOdOnXUqFEjDRs2TBMnTlTjxo2VmJio0aNHKzY2Vj179jSvaF9n9u1XF7tnnnnGaNSokREYGGi0b9/e2LBhg9kleS1JFU7z5s0zuzSfwS3dZ/fmm28aLVq0MOx2u9GkSRNjzpw5Zpfk1RwOhzF06FCjUaNGRlBQkJGUlGQ88sgjRmlpqdmleYWVK1dW+Derb9++hmH8elv36NGjjXr16hl2u93o2rWrUVRUZG7RPs5mGDz6EQAA+D6uqQEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAEAAJZAqAGAajR//nzVrl3b7DKAixKhBrgI9evXTzabTVOmTHFrf+2112Sz2UyqqnokJCTIZrNpw4YNbu3Dhg1TRkaGOUUBuCAINcBFKigoSFOnTtVPP/10wfs+depUje4/KChII0eOrNE+LrSaPmaAFRBqgItUt27dVL9+feXn5591vbVr16pjx44KDg5WXFychgwZopKSEtdym82m1157zW2b2rVra/78+ZKkvXv3ymazafHixercubOCgoK0cOFCOZ1OPfroo2rYsKHsdruuuOIKLVu2zLWPM9v997//VWZmpkJCQtS6dWutX7/+nJ/t3nvv1YYNG/T2229Xuk5GRoaGDRvm1tazZ0/169fPNZ+QkKCJEyeqT58+CgsLU3x8vN544w199913uvHGGxUWFqZWrVpp06ZN5fb/2muvqXHjxgoKClJWVpb27dvntvz111/XlVdeqaCgICUlJWn8+PE6ffq0a7nNZtOsWbN0ww03KDQ0VJMmTTrn5wYudoQa4CLl7++vyZMn65lnntG3335b4TpffvmlevTooZtvvlmffPKJFi9erLVr12rw4MFV7i8vL09Dhw7V9u3blZWVpaefflpPPPGEHn/8cX3yySfKysrSDTfcoF27drlt98gjj2jEiBHatm2b/vSnP+lvf/ub25d/RRITEzVw4ECNGjVKTqezyrX+1lNPPaW0tDRt3bpV2dnZuvPOO9WnTx/dcccd2rJli5KTk9WnTx/99jV6J06c0KRJk/TCCy+ooKBAR48e1V//+lfX8jVr1qhPnz4aOnSovvjiC82ePVvz588vF1zGjRunv/zlL/r000958zXgCZNfqAnABH379jVuvPFGwzAM46qrrjLuuusuwzAMY8mSJcZv/yzcfffdxr333uu27Zo1aww/Pz/j559/Ngzj17enL1myxG2dyMhI19vT9+zZY0gypk+f7rZObGysMWnSJLe2du3aGffdd5/bdv/zP//jWv75558bkozt27dX+tni4+ONp556yjhy5IgRHh5uvPDCC4ZhGMbQoUONzp07u9ar6I3lN954o+sNymf2dccdd7jmDx48aEgyRo8e7Wpbv369Ick4ePCgYRiGMW/ePEOSsWHDBtc627dvNyQZhYWFhmEYRteuXY3Jkye79f3vf//baNCggWtekjFs2LBKPyeA8hipAS5yU6dO1YIFC7R9+/Zyyz7++GPNnz9fYWFhrikrK0tOp1N79uypUj8pKSmunx0Ohw4cOKC0tDS3ddLS0srV0apVK9fPDRo0kCQdOXLknP1FR0drxIgRGjNmjE6ePFmlWivrv169epKkli1blmv7bU0BAQFq166da75JkyaqXbu267N9/PHHevTRR92Oa05Ojg4ePKgTJ064tvvtMQNwbgFmFwDAXJ06dVJWVpZGjRrldj2JJB0/flwDBgzQkCFDym3XqFEjSb9e+2H85tSLVPFFraGhoedVX61atVw/n7kzy9NTSsOHD9dzzz2n5557rtwyPz8/j+quqP8/UpP063EdP368brrppnLLgoKCXD+f7zEDLlaEGgCaMmWKrrjiCl1++eVu7VdeeaW++OILXXbZZZVuGx0drYMHD7rmd+3a5TbaUJGIiAjFxsaqoKBAnTt3drUXFBSoffv25/kpygsLC9Po0aM1btw43XDDDWetu6ysTJ999pkyMzP/cL+nT5/Wpk2bXJ+lqKhIR48eVdOmTSX9elyLiorOelwBVB2nnwCoZcuW6t27t2bMmOHWPnLkSK1bt06DBw/Wtm3btGvXLr3++utuFwp36dJFM2fO1NatW7Vp0yYNHDjQbSSjMg899JCmTp2qxYsXq6ioSHl5edq2bZuGDh1arZ/t3nvvVWRkpBYtWuTW3qVLFy1dulRLly7Vjh07NGjQIB09erRa+qxVq5buv/9+FRYWavPmzerXr5+uuuoqV8gZM2aMXnjhBY0fP16ff/65tm/frpdeekn/+Mc/qqV/4GJFqAEgSXr00UfLnUJp1aqVVq9erZ07d6pjx45q06aNxowZo9jYWNc6TzzxhOLi4tSxY0fdfvvtGjFihEJCQs7Z35AhQzR8+HA9+OCDatmypZYtW6Y33nhDjRs3rtbPVatWLU2YMEG//PKLW/tdd92lvn37qk+fPurcubOSkpKqZZRGkkJCQjRy5EjdfvvtSktLU1hYmBYvXuxanpWVpbfeekvvvfee2rVrp6uuukpPPfWU4uPjq6V/4GJlM35/UhkAAMAHMVIDAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAsgVADAAAs4f8A2ZXpEzhZU5gAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.bar(range(len(outputneuronweightsbias)), outputneuronweightsbias)\n", "plt.xlabel('Neuron Number')\n", "plt.ylabel('Weight')\n", "plt.title('output neuron 1 Weights')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# create a confustion matrix\n", "\n", "from sklearn.metrics import confusion_matrix\n", "import seaborn as sns\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, title=None, cmap=plt.cm.Blues):\n", " \"\"\"\n", " This function prints and plots the confusion matrix.\n", " Normalization can be applied by setting `normalize=True`.\n", " \"\"\"\n", " if not title:\n", " if normalize:\n", " title = 'Normalized confusion matrix'\n", " else:\n", " title = 'Confusion matrix, without normalization'\n", "\n", " # Compute confusion matrix\n", " cm = confusion_matrix(y_true, y_pred)\n", " # Only use the labels that appear in the data\n", " classes = classes\n", " if normalize:\n", " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", " print(\"Normalized confusion matrix\")\n", " else:\n", " print('Confusion matrix, without normalization')\n", "\n", " print(cm)\n", "\n", " fig, ax = plt.subplots()\n", " im = ax.imshow(cm, interpolation='nearest', cmap=cmap)\n", " ax" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def predictArray(X):\n", " return [1 if predict(x).data > 0.5 else 0 for x in X ]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Confusion matrix" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp0AAAIxCAYAAAAPCwOrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABg10lEQVR4nO3dd3gU5drH8d8mJIQkVCE0QQJigEAgEaQGhQihSREIHWkKSg6CIkXBcxSlCIo0UZFehNAJoQihHFBApGlCVYlUIYC0FFLY9w8O+xoTQnbJsEv4frj28mTmnpl71ityn/t55hmT2Ww2CwAAADCQk70TAAAAQM5H0QkAAADDUXQCAADAcBSdAAAAMBxFJwAAAAxH0QkAAADDUXQCAADAcBSdAAAAMBxFJwAAAAxH0QnkENHR0Xr//ffVpEkTVa1aVQEBAerYsaMWLlyolJSUh5ZHSkqKxo0bp7p166pKlSp66aWXDLnOmTNn5OPjozfeeMOQ82dFt27d5OPjIx8fH/3000+Zxr700kvy8fFRw4YNbb7erVu3NGvWrCzH+/j4qFWrVjZfDwCyUy57JwDgwdy+fVtTpkzR9OnT5eLiovr166tBgwa6ceOGdu7cqQ8//FAbNmzQjBkz5ObmZng+y5Yt06xZs+Tt7a02bdroiSeeMOQ6+fLlU2hoqMqWLWvI+a21adMmVa9ePcN9MTExOn78+ANfo2vXrjp58qR69eqVpfjQ0FAVLlz4ga8LANmBohN4xH355Zf64osvVK1aNU2ePFlFixa17EtKStK7776r8PBwDRs2TJ9//rnh+Rw+fFiS9P7776tOnTqGXSdfvnz617/+Zdj5rVGkSBFt2rRJw4cPz3D/hg0b5OLiIpPJ9EDXuXz5slXxjvL9AIDE8DrwSDt58qS++OILFSpUSDNmzEhTcEqSq6urxowZo5IlS2rDhg367bffDM8pKSlJklSwYEHDr+UogoKCdPbsWUvB/U8bN25U7dq1lTt37oecGQA4DopO4BG2atUqJScnq0uXLsqXL1+GMS4uLho5cqRGjx6drhBct26dOnbsqGrVqsnf318dO3ZUREREunP4+Pho2LBh2r9/v7p16yZ/f3/VqFFDAwcO1JkzZyT9/xzLlStXSpJat24tHx8f7dmzRytWrJCPj4/mzJmT7tx350Vev37dsu2XX35R3759Va9ePVWpUkXBwcGaMGGCbt68aYm515zOixcv6v3339fzzz+vypUr6/nnn9f777+vixcvpombMmWKfHx89Ntvv+mzzz7TCy+8oMqVK6t58+b69ttvM/nW0wsODpYkfffdd+n2nT59WocPH7bE/FNcXJymTZumVq1ayd/fX1WqVFHjxo31ySefKD4+Ps29nj17Vjdu3LD8+7j7/TVs2FDbt29Xw4YNVbVqVb355puS0s7pjImJUdWqVeXv768LFy6kyaF3797y8fHRmjVrrLpvALAGRSfwCNuxY4ckKTAwMNO4Bg0a6OWXX1ahQoUs28aNG6dBgwbpzJkzatGihZo3b64zZ87orbfe0vjx49OdIzo6Wt27d5eTk5M6deokHx8frV+/Xj169FBSUpJljmWFChUkSR06dFBoaKhKlixp1T2dPHlSPXv21IEDB9SwYUO98sorKly4sGbMmKH+/ftneuypU6fUpk0bLVmyRGXLllXXrl1VtmxZLVmyRC+//LJOnz6d7ph33nlHYWFhql+/vkJCQnThwgX95z//UVhYWJZzrly5skqWLKlNmzal27dhwwblypVLL774Yrp9KSkp6tmzp6ZMmaIiRYqoc+fOatu2rRITEzVz5kxLYXn3u82bN69cXV0VGhqa5nx//fWXBg4cqICAALVp0ybDuaVlypTRwIEDFR8fr48++siyffHixdq5c6eaNm2qli1bZvmeAcBazOkEHmF//vmnpDsFhTV++uknzZo1S5UqVdLMmTMtxeiVK1f0yiuv6JtvvtELL7ygGjVqWI45fvy43nnnHfXp00eSZDab1adPH+3cuVO7d+9W/fr19a9//Utnz57V0aNH1alTJ1WsWFGS9OOPP2Y5t7CwMN24cUNz585VrVq1LNv79u2rbdu26cSJEypfvnyGx44cOVKXLl3SRx99pPbt21u2L1q0SB988IFGjBihuXPnpjnm6tWrWrduneU7aNGihTp16qRly5YpJCQky3k3atRIc+bM0cmTJ+Xt7W3ZvnHjRtWqVUsFChRId8zGjRt16NAh9evXT4MGDbJsHzx4sIKDg7V582YlJCRY5q+uXLlS169fTzdXMz4+Xj179rQUqffyyiuvaOPGjfruu++0fft2lStXTuPGjVORIkX0n//8J8v3CgC2oNMJPMLuDkl7eHhYddyKFSskSUOGDEnT/SxUqJDe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rWnTpqlQoUL2ThsAADymmNNpHYcpOiWpVKlSWr58uRYvXqy1a9dq//79SklJkSS5uroqICBAjRs3Vvv27XmICAAA2BU1p3UcquiU7hSX3bt3t6zXeeXKFTk7Oyt//vx2zgwAAAC2crii858YQgcAAI6I4XXrOMyDRAAAAMi5HL7TCQAA4IhodFqHTicAAAAMR6cTAADABszptA6dTgAAABiOTicAAIANaHRah6ITAADABgyvW4fhdQAAABiOTicAAIANaHRah04nAAAADEenEwAAwAbM6bQOnU4AAAAYjk4nAACADWh0WodOJwAAAAxHpxMAAMAGzOm0DkUnAACADSg6rcPwOgAAAAxHpxMAAMAGNDqtQ6cTAAAAhqPTCQAAYAPmdFqHTicAAAAMR6cTAADABjQ6rUOnEwAAAIaj0wkAAGAD5nRah04nAAAADEenEwAAwAY0Oq1D0QkAAGADJ6pOqzC8DgAAAMPR6QQAALABjU7r0OkEAACA4eh0AgAA2IAlk6xDpxMAAACGo9MJAABgAycanVah0wkAAADD0ekEAACwAXM6rUPRCQAAYANqTuswvA4AAJDDHDt2TK+99ppq1qypGjVqaMCAAfrjjz/SxCQmJmrChAlq0KCBqlatqg4dOmjXrl3pzpWamqoZM2aocePG8vPzU8uWLbVu3Tqrc6LoBAAAsIHJwD8P4uTJk+rUqZNOnDihvn376rXXXtP+/fsVEhKi8+fPW+LefvttzZo1S0FBQRo6dKiSk5PVp08f/fTTT2nON27cOE2YMEEBAQF69913VahQIQ0aNEhr16617vsym83mB7qzHCJP8AR7pwDAIL+HDbB3CgAMUjy/q92u3eKrvYade23fGjYf++abb2rbtm2KiIjQk08+KelO57Nly5bq3r273nvvPe3atUs9evTQ8OHD1aNHD0lSfHy8WrZsqXz58mnFihWSpJiYGDVt2lRdunTRiBEjJN3pfHbp0kVnzpzRli1b5OqatX8HdDoBAABs4GQy7vMgcuXKpebNm1sKTkny8fFRgQIFdPToUUlSeHi4XFxcFBISYolxd3dXu3btFB0drZiYGElSRESEbt++rS5duljinJ2d1aVLF8XGxmrv3qwX3jxIBAAAkIN8+umn6badP39eV69eVYkSJSRJUVFR8vb2lru7e5o4X19fy/4yZcooKipKnp6e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7dsrMjLSnikCAAAgixz2QaK8efNaXk8oSaVKldKvv/5q+fmpp57S+fPn7ZEaAABAzm1JGsRhO51Vq1ZVeHi4pfAsX7689u7dq9TUVEnS8ePHeVc2AADAI8Jhi85evXopKipKQUFBunbtml5++WX98ccf6t69u4YPH65FixapVq1a9k4TAAA8pkwG/smJHLbofO655/TNN9+oUqVKypcvnypVqqRhw4bp8OHDWrlypSpXrqyhQ4faO00AAPCYMpmM++REDrtO570kJSUpMTFR+fLly9bzsk4nkHOxTieQc9lznc59MdcNO/ezZbK3znEEDvsg0b24urrK1dXV3mkAAIDHXA5tSBrGYYrOevXqWX2MyWTSjh07DMgGAAAA2clhik5vb297pwAAAJB1tDqt4jBF5/z58+2dAgAAAAzikE+v37hxI8PtR44c0enTpx9yNgAAAOk9Cksmff3116pbt26G+xITEzVhwgQ1aNBAVatWVYcOHbRr1650campqZoxY4YaN24sPz8/tWzZUuvWrbM6F4cqOhMTEzVixAjVr19fCQkJ6fZPmjRJwcHBGjJkiG7evGmHDAEAAB4N27dv1+TJk++5/+2339asWbMUFBSkoUOHKjk5WX369NFPP/2UJm7cuHGaMGGCAgIC9O6776pQoUIaNGiQ1q5da1U+DlN0JiUlqVevXlq2bJmeeuopXb16NV1Mo0aNVLlyZa1Zs0a9evVScnLyw08UAABAjrtOp9ls1oIFC9S/f/971kq7du3S5s2bNWTIEI0YMUKdO3fWggULVLx4cY0ePdoSFxMTo/nz56tbt24aO3asOnbsqJkzZ8rf319jx45N88ry+3GYonPOnDnav3+/3n33Xa1atUrFixdPF9O2bVuFhYUpNDRUP//8sxYsWGCHTAEAAO48R2TU50F06NBBo0aNUs2aNeXr65thTHh4uFxcXBQSEmLZ5u7urnbt2ik6OloxMTGSpIiICN2+fVtdunSxxDk7O6tLly6KjY3V3r17s5yXwxSd4eHhatCggbp3737f2NDQUNWoUUNr1qx5CJkBAAA8Os6dO6cPP/xQ33zzjTw8PDKMiYqKkre3t9zd3dNsv1ukRkVFWf7p6emZbpWhf8ZlhcMUnadOnVKdOnWyHP/888/r5MmTBmYEAACQCQdtdW7ZskUdOnSQKZNx+gsXLqhYsWLp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iSSpffv26tOnj06dOnXfXCg4gTty0u/33aHzu9f/Ozc3N0liDjeQBRSdsBsnpzuzO1JSUh7oPNOnT9f169fT/IVw8+ZN5c6dW9L//2Vwt0sxatQo9e7dW5UrV1bBggW1ceNGy3F3Y7766it5eHioZs2acnV11cyZMx8oR+Bxk5N+v81m833zNJlM1t0Y8Bii6ITdFChQQK6urrp8+fIDncfZ2Vnnz5/X1KlTdeLECZ05c0bnzp2z/EVxd65W165d9cMPP2jdunVat26dihQpovr166tVq1aqWbOmJMnf31+9evXS7Nmz1adPH7m7u6tWrVpq0qSJmjdvrly5+JUBsiIn/X57eHhIkhITE9Ptu7vN09Pzge4TeBzwIBHsKiAgQNHR0UpKSrpnzLJly9SvXz9FR0dnuH/OnDlq06aN/vvf/+rJJ59Ut27dNH/+fPXt2zdNnIeHh+bOnatly5bp9ddfV7FixbRy5Up1795dU6ZMscQNHTpUkZGRGj58uAICAvT9999ryJAh6tWrV5Y6HgDuyCm/356ensqXL59iY2PT7bt48aIkqWjRovf9PoDHHUUn7Kpx48ZKSEiwPAzwT2azWWFhYdq2bVuGnYRbt27p888/l7+/vyIiIjR69Gj17NlTNWrU0F9//ZUm9vTp09q3b5+qVKmigQMHatmyZdqyZYvKlCmjWbNmyWw268qVK9q1a5e8vLzUo0cPzZw5U7t27VJwcLD27NmjX375xZDvAciJctLvt6+vb4aFcXR0tHLlyqWKFSta+e0Ajx+KTthV+/btVaZMGY0fPz7D/6BPmzZNhw4dUvPmzfXUU0+l25+YmKiEhAQ99dRTaR7iOXfunL777jtJUmpqqiTp888/V8+ePS2dCUkqXry4vLy85OTkJJPJpM2bN6tHjx7avn27JcbDw0PPPPOMpDtDfQCyJif9fjdp0kTnzp1LswRTbGys1q9fr0aNGlnmmAK4Nyaowa5cXV01depU9erVSx06dFCzZs1UrVo1xcXFafv27dq7d68qV66sf//73xkenz9/fvn7+ys8PFz58uXTM888o1OnTiksLEwJCQmS/v/J0549e+q7775T165dFRISonz58mn37t2WNQClO0+7fv311xo2bJg6d+6sUqVK6ffff9fChQv17LPPZrhOH4CM5aTf77Zt22rRokUaPHiwevXqpUKF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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.metrics import confusion_matrix\n", "\n", "# Example confusion matrix data (replace with your own)\n", "y_true = Y\n", "y_pred = predictArray(X)\n", "\n", "# Compute confusion matrix\n", "cm = confusion_matrix(y_true, y_pred)\n", "\n", "# Plot confusion matrix with numbers\n", "plt.figure(figsize=(8, 6))\n", "sns.set(font_scale=1.2) # Adjust font scale if needed\n", "sns.heatmap(cm, annot=True, fmt='g', cmap='Blues', \n", " xticklabels=['Class 1', 'Class 0'], \n", " yticklabels=['Class 1', 'Class 0'])\n", "plt.xlabel('Predicted')\n", "plt.ylabel('Actual')\n", "plt.title('Confusion Matrix')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Saving parameters" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pickle as pkl \n", "\n", "with open('parameters/neuron1weightsbias_fn_reLu.pckl', 'wb') as file:\n", " pkl.dump(neuron1weightsbias, file)\n", "with open('parameters/outputneuronweightsbias_fn_reLu.pckl', 'wb') as file:\n", " pkl.dump(outputneuronweightsbias, file)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "# Load model\n", "\n", "def loadModel():\n", " neuron1weightsbias, outputneuronweightsbias = [], []\n", " with open(f'parameters/neuron1weightsbias_fn_reLu.pckl', 'rb') as file:\n", " neuron1weightsbias = pickle.load(file)\n", " with open('parameters/outputneuronweightsbias_fn_reLu.pckl', 'rb') as file:\n", " outputneuronweightsbias = pickle.load(file)\n", " hiddenLayer1_ = Layer(10, 1, 'reLu')\n", " outputLayer_ = Layer(11, 1, 'sigmoid')\n", "\n", " hiddenLayer1_.neurons[0].w = [Value(i) for i in neuron1weightsbias[:-1]]\n", " hiddenLayer1_.neurons[0].b = Value(neuron1weightsbias[-1])\n", "\n", " outputLayer_.neurons[0].w = [Value(i) for i in outputneuronweightsbias[:-1]]\n", " outputLayer_.neurons[0].b = Value(outputneuronweightsbias[-1])\n", " return hiddenLayer1_, outputLayer_, neuron1weightsbias, outputneuronweightsbias" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "import pickle as pkl \n", "\n", "hiddenLayer1, outputLayer, neuron1weightsbias, outputneuronweightsbias = loadModel()" ] } ], "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.11.4" } }, "nbformat": 4, "nbformat_minor": 2 }