diff --git a/README.md b/README.md index 72451ad..3e827a6 100644 Binary files a/README.md and b/README.md differ diff --git a/media/output.png b/media/output.png new file mode 100644 index 0000000..9c9f901 Binary files /dev/null and b/media/output.png differ diff --git a/src/test.ipynb b/src/test.ipynb index 29bd0c5..e890caa 100644 --- a/src/test.ipynb +++ b/src/test.ipynb @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -47,113 +47,113 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Loss: 114.46303934995504\n", - "Loss: 192.5486514620441\n", - "Loss: 5.725692502550582\n", - "Loss: 1.8395208131892387\n", - "Loss: 2.698055205143621\n", - "Loss: 0.5192521393321272\n", - "Loss: 0.0025036933361477823\n", - "Loss: 1.1280367666649895\n", - "Loss: 0.30699095758847084\n", - "Loss: 0.0038430944185418045\n", - "Loss: 0.8809525169261443\n", - "Loss: 0.13260136019304872\n", - "Loss: 0.23518987088960347\n", - "Loss: 4.111765598271079\n", - "Loss: 1.567257270207719e-05\n", - "Loss: 2.0125266592144904\n", - "Loss: 1.297341760484567\n", - "Loss: 0.10573638145359955\n", - "Loss: 0.0037837832056497787\n", - "Loss: 0.8414634789378201\n", - "Loss: 3.4511494722718097\n", - "Loss: 0.25018837242393094\n", - "Loss: 0.031018073655704845\n", - "Loss: 1.2093673423120193\n", - "Loss: 0.06813768836422329\n", - "Loss: 1.170952626600748\n", - "Loss: 0.26362928949407716\n", - "Loss: 1.537781153345299\n", - "Loss: 1.7774565989793842\n", - "Loss: 2.7171510984132903\n", - "Loss: 0.6122365658046225\n", - "Loss: 0.9390671541174022\n", - "Loss: 0.6421375935781517\n", - "Loss: 0.34585618695346476\n", - "Loss: 3.5450094876816594\n", - "Loss: 4.884177633980443\n", - "Loss: 0.00249852528711147\n", - "Loss: 0.4951344027344762\n", - "Loss: 1.4496187166718495\n", - "Loss: 0.03180535176009954\n", - "Loss: 0.028285367867515444\n", - "Loss: 0.8835714417961998\n", - "Loss: 0.03793352511473656\n", - "Loss: 0.07700252163023483\n", - "Loss: 0.02230572400681537\n", - "Loss: 0.5597316662527766\n", - "Loss: 2.4676825268060556\n", - "Loss: 1.1849184095345793\n", - "Loss: 0.11369886575277106\n", - "Loss: 0.060502361627896156\n", - "Loss: 0.007964417638613275\n", - "Loss: 0.6257681608694066\n", - "Loss: 1.7774043365391547\n", - "Loss: 0.49639131144352117\n", - "Loss: 0.015223693804825281\n", - "Loss: 0.31633988836352733\n", - "Loss: 0.005527533506527876\n", - "Loss: 0.0019582018206373217\n", - "Loss: 0.16109375203662396\n", - "Loss: 0.7468206318669184\n", - "Loss: 0.01080674416498224\n", - "Loss: 0.010559718246323981\n", - "Loss: 0.007714371878328068\n", - "Loss: 0.02224038758568694\n", - "Loss: 0.04047176072364106\n", - "Loss: 0.17610113984483344\n", - "Loss: 1.0727161347964111\n", - "Loss: 3.2443904402935053\n", - "Loss: 0.40655946678903876\n", - "Loss: 0.27042888792544895\n", - "Loss: 0.3509103348972748\n", - "Loss: 0.33370504990147337\n", - "Loss: 0.5765607805057831\n", - "Loss: 1.6261072292487602\n", - "Loss: 0.047705927690135076\n", - "Loss: 0.009164167039838172\n", - "Loss: 0.00042673709559553664\n", - "Loss: 0.003028502106636678\n", - "Loss: 0.06337605830444551\n", - "Loss: 0.025182699155766753\n", - "Loss: 0.018159897838264986\n", - "Loss: 0.8200613341113863\n", - "Loss: 0.37572774985849855\n", - "Loss: 0.5883263105908543\n", - "Loss: 0.3571171599926779\n", - "Loss: 0.004589544930765297\n", - "Loss: 0.08235461936616278\n", - "Loss: 0.4637342156602108\n", - "Loss: 0.11430041712372761\n", - "Loss: 0.00037470591874267354\n", - "Loss: 0.14955700266712504\n", - "Loss: 0.02380317180814524\n", - "Loss: 0.011931834933443424\n", - "Loss: 0.007858377237459989\n", - "Loss: 0.02658257866927596\n", - "Loss: 0.06787133921355744\n", - "Loss: 0.05851028249787675\n", - "Loss: 0.03428498189641753\n", - "Loss: 0.0006028465944848904\n", - "Loss: 0.052356030809899874\n" + "Loss: 2211.638998782471\n", + "Loss: 468.93854419957427\n", + "Loss: 103.66440959837315\n", + "Loss: 1.5556203300733875\n", + "Loss: 4.492550039955883\n", + "Loss: 39.44688731610975\n", + "Loss: 114.21772793119447\n", + "Loss: 6.599731791453235\n", + "Loss: 1.515647816596179\n", + "Loss: 4.955551427494127\n", + "Loss: 3.350454530136938\n", + "Loss: 3.6201665978602624\n", + "Loss: 0.22233557550401586\n", + "Loss: 0.010012138350658941\n", + "Loss: 0.9562199900842665\n", + "Loss: 0.4568474432107186\n", + "Loss: 1.4637975295149568\n", + "Loss: 0.6914694758046793\n", + "Loss: 2.9663406984731338\n", + "Loss: 1.5400060458652545\n", + "Loss: 0.07148817012350978\n", + "Loss: 0.4322274237603232\n", + "Loss: 0.056662003397526396\n", + "Loss: 0.9657914417574902\n", + "Loss: 0.0008075741992811833\n", + "Loss: 0.09758294041460006\n", + "Loss: 0.012033303301140257\n", + "Loss: 3.4344235875764735\n", + "Loss: 0.663284131474585\n", + "Loss: 1.2072487331856758\n", + "Loss: 0.05296311766670792\n", + "Loss: 0.8798852926284862\n", + "Loss: 0.02474343345879132\n", + "Loss: 0.38055066746680016\n", + "Loss: 0.04988329970728549\n", + "Loss: 0.5173580484330844\n", + "Loss: 0.4134686021390968\n", + "Loss: 0.016951171255568134\n", + "Loss: 0.30604395819855484\n", + "Loss: 2.3177843636165436\n", + "Loss: 0.34486434018168177\n", + "Loss: 0.015804127021271177\n", + "Loss: 0.0061193489278624355\n", + "Loss: 0.004595575543650159\n", + "Loss: 0.4578557546903725\n", + "Loss: 2.7727641185707563\n", + "Loss: 0.11653372368826725\n", + "Loss: 0.24261611389333543\n", + "Loss: 0.14568860079516338\n", + "Loss: 1.947694932999249\n", + "Loss: 3.3047992474304624\n", + "Loss: 0.03471836602035718\n", + "Loss: 0.6859122748415968\n", + "Loss: 0.08884159993164917\n", + "Loss: 0.8447544843511005\n", + "Loss: 0.30532143104017434\n", + "Loss: 0.008929463343265966\n", + "Loss: 0.8519200501669586\n", + "Loss: 0.10120556152551916\n", + "Loss: 0.38828600330548807\n", + "Loss: 0.5041530082729734\n", + "Loss: 0.46485628902736914\n", + "Loss: 4.4656744041721715e-06\n", + "Loss: 0.31968745091984535\n", + "Loss: 0.015570951311604906\n", + "Loss: 0.17864800745579654\n", + "Loss: 0.026961862098602695\n", + "Loss: 0.24289318050275663\n", + "Loss: 0.3230463737606882\n", + "Loss: 0.5902323077600449\n", + "Loss: 0.03893214388277023\n", + "Loss: 0.031038886401789003\n", + "Loss: 0.06700653987875022\n", + "Loss: 0.0035097764117083337\n", + "Loss: 0.33434949300639993\n", + "Loss: 0.06263905580900347\n", + "Loss: 0.12589933036177234\n", + "Loss: 0.3643776244787341\n", + "Loss: 0.08505520711040437\n", + "Loss: 0.010355061308673995\n", + "Loss: 0.0008320132380582842\n", + "Loss: 0.9330447835047763\n", + "Loss: 0.004743405705334134\n", + "Loss: 0.15618411885053912\n", + "Loss: 0.004787839045418404\n", + "Loss: 0.0374287256423671\n", + "Loss: 0.12024482861399076\n", + "Loss: 0.45677685675214075\n", + "Loss: 0.6911503130230172\n", + "Loss: 0.3307363487864733\n", + "Loss: 0.14402657562626822\n", + "Loss: 0.00921159597050207\n", + "Loss: 0.1771135103240279\n", + "Loss: 0.22586584019808284\n", + "Loss: 0.0641429375051117\n", + "Loss: 0.02231258122050524\n", + "Loss: 0.6401081535120754\n", + "Loss: 0.05783932949850178\n", + "Loss: 0.0026187612162631604\n", + "Loss: 2.1467932489353684e-05\n" ] } ], @@ -184,25 +184,17 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 6, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "#plot the losses\n", "import matplotlib.pyplot as plt\n", "plt.plot(losses)\n", - "plt.show()\n" + "plt.ylabel('loss')\n", + "plt.xlabel('iteration')\n", + "plt.show()\n", + "\n" ] } ],