From 400cc5dcfc1001d60819b1a44dba4a75483d0714 Mon Sep 17 00:00:00 2001 From: Sunny Date: Sun, 16 Sep 2018 23:26:56 -0400 Subject: [PATCH 1/2] Indexing fixes Fixed indexing issues by casting floats to ints. Also updated sigmoid function call and fixed print statement. Added .py version. --- LogisticPytorch.ipynb | 2121 ++++++++++++++++++++--------------------- LogisticPytorch.py | 130 +++ 2 files changed, 1177 insertions(+), 1074 deletions(-) create mode 100644 LogisticPytorch.py diff --git a/LogisticPytorch.ipynb b/LogisticPytorch.ipynb index 85c5a88..3996019 100644 --- a/LogisticPytorch.ipynb +++ b/LogisticPytorch.ipynb @@ -2,10 +2,8 @@ "cells": [ { "cell_type": "code", - "execution_count": 110, - "metadata": { - "collapsed": true - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -16,10 +14,8 @@ }, { "cell_type": "code", - "execution_count": 111, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ "N = 100\n", @@ -28,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -37,25 +33,23 @@ }, { "cell_type": "code", - "execution_count": 113, - "metadata": { - "collapsed": true - }, + "execution_count": 4, + "metadata": {}, "outputs": [], "source": [ "# center the first N/2 points at (-2,-2)\n", - "X[:N/2,:] = X[:N/2,:] - 2*np.ones((N/2,D))\n", + "X[:int(N / 2), :] = X[:int(N / 2), :] - 2 * np.ones((int(N / 2), D))\n", "\n", "# center the last N/2 points at (2, 2)\n", - "X[N/2:,:] = X[N/2:,:] + 2*np.ones((N/2,D))\n", + "X[int(N / 2):, :] = X[int(N / 2):, :] + 2 * np.ones((int(N / 2), D))\n", "\n", "# labels: first N/2 are 0, last N/2 are 1\n", - "T = np.array([0]*(N/2) + [1]*(N/2)).reshape(100,1)" + "T = np.array([0] * int(N / 2) + [1] * int(N / 2)).reshape(100, 1)" ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -65,10 +59,8 @@ }, { "cell_type": "code", - "execution_count": 115, - "metadata": { - "collapsed": true - }, + "execution_count": 6, + "metadata": {}, "outputs": [], "source": [ "class Model(torch.nn.Module):\n", @@ -77,7 +69,7 @@ " self.linear = torch.nn.Linear(2, 1) # 2 in and 1 out\n", " \n", " def forward(self, x):\n", - " y_pred = F.sigmoid(self.linear(x))\n", + " y_pred = torch.sigmoid(self.linear(x))\n", " return y_pred\n", " \n", "# Our model \n", @@ -86,11 +78,18 @@ }, { "cell_type": "code", - "execution_count": 116, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/site-packages/torch/nn/functional.py:52: UserWarning: size_average and reduce args will be deprecated, please use reduction='elementwise_mean' instead.\n", + " warnings.warn(warning.format(ret))\n" + ] + } + ], "source": [ "criterion = torch.nn.BCELoss(size_average=True)\n", "optimizer = torch.optim.SGD(model.parameters(), lr=0.01)" @@ -98,1025 +97,1027 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 8, "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "(0, 1.4412634372711182)\n", - "(1, 1.3821532726287842)\n", - "(2, 1.3250808715820312)\n", - "(3, 1.2701153755187988)\n", - "(4, 1.2173141241073608)\n", - "(5, 1.166722059249878)\n", - "(6, 1.118370532989502)\n", - "(7, 1.0722744464874268)\n", - "(8, 1.0284340381622314)\n", - "(9, 0.9868332743644714)\n", - "(10, 0.9474400877952576)\n", - "(11, 0.9102094769477844)\n", - "(12, 0.8750823736190796)\n", - "(13, 0.8419896960258484)\n", - "(14, 0.8108527660369873)\n", - "(15, 0.7815861701965332)\n", - "(16, 0.75409996509552)\n", - "(17, 0.7283008694648743)\n", - "(18, 0.7040942311286926)\n", - "(19, 0.6813865900039673)\n", - "(20, 0.6600848436355591)\n", - "(21, 0.6400989294052124)\n", - "(22, 0.6213417053222656)\n", - "(23, 0.6037304997444153)\n", - "(24, 0.5871862173080444)\n", - "(25, 0.5716345906257629)\n", - "(26, 0.5570052862167358)\n", - "(27, 0.5432330965995789)\n", - "(28, 0.5302568674087524)\n", - "(29, 0.5180200338363647)\n", - "(30, 0.5064697265625)\n", - "(31, 0.49555718898773193)\n", - "(32, 0.48523762822151184)\n", - "(33, 0.47546929121017456)\n", - "(34, 0.46621382236480713)\n", - "(35, 0.4574354588985443)\n", - "(36, 0.4491020143032074)\n", - "(37, 0.44118332862854004)\n", - "(38, 0.43365123867988586)\n", - "(39, 0.42648056149482727)\n", - "(40, 0.4196473956108093)\n", - "(41, 0.4131300449371338)\n", - "(42, 0.40690848231315613)\n", - "(43, 0.40096408128738403)\n", - "(44, 0.39527952671051025)\n", - "(45, 0.38983914256095886)\n", - "(46, 0.38462814688682556)\n", - "(47, 0.3796328604221344)\n", - "(48, 0.37484073638916016)\n", - "(49, 0.3702399730682373)\n", - "(50, 0.3658198118209839)\n", - "(51, 0.36156994104385376)\n", - "(52, 0.3574810326099396)\n", - "(53, 0.3535444736480713)\n", - "(54, 0.34975185990333557)\n", - "(55, 0.3460957407951355)\n", - "(56, 0.3425688147544861)\n", - "(57, 0.3391648232936859)\n", - "(58, 0.3358771800994873)\n", - "(59, 0.3327002227306366)\n", - "(60, 0.3296285569667816)\n", - "(61, 0.3266569972038269)\n", - "(62, 0.32378077507019043)\n", - "(63, 0.32099542021751404)\n", - "(64, 0.31829676032066345)\n", - "(65, 0.315680593252182)\n", - "(66, 0.31314346194267273)\n", - "(67, 0.3106817305088043)\n", - "(68, 0.308292031288147)\n", - "(69, 0.30597132444381714)\n", - "(70, 0.3037166893482208)\n", - "(71, 0.30152514576911926)\n", - "(72, 0.2993942201137543)\n", - "(73, 0.2973213493824005)\n", - "(74, 0.2953042984008789)\n", - "(75, 0.2933407425880432)\n", - "(76, 0.2914283573627472)\n", - "(77, 0.2895653247833252)\n", - "(78, 0.28774988651275635)\n", - "(79, 0.2859800159931183)\n", - "(80, 0.2842540144920349)\n", - "(81, 0.2825701832771301)\n", - "(82, 0.28092730045318604)\n", - "(83, 0.2793235778808594)\n", - "(84, 0.2777576148509979)\n", - "(85, 0.27622807025909424)\n", - "(86, 0.27473369240760803)\n", - "(87, 0.27327340841293335)\n", - "(88, 0.27184584736824036)\n", - "(89, 0.27045002579689026)\n", - "(90, 0.2690848410129547)\n", - "(91, 0.26774919033050537)\n", - "(92, 0.2664421498775482)\n", - "(93, 0.265162855386734)\n", - "(94, 0.2639103829860687)\n", - "(95, 0.2626839280128479)\n", - "(96, 0.2614825963973999)\n", - "(97, 0.26030540466308594)\n", - "(98, 0.2591521143913269)\n", - "(99, 0.2580215334892273)\n", - "(100, 0.2569132149219513)\n", - "(101, 0.2558264434337616)\n", - "(102, 0.2547605037689209)\n", - "(103, 0.2537148594856262)\n", - "(104, 0.2526889443397522)\n", - "(105, 0.2516821026802063)\n", - "(106, 0.25069373846054077)\n", - "(107, 0.2497236281633377)\n", - "(108, 0.24877098202705383)\n", - "(109, 0.2478354275226593)\n", - "(110, 0.24691647291183472)\n", - "(111, 0.2460135817527771)\n", - "(112, 0.24512651562690735)\n", - "(113, 0.2442547231912613)\n", - "(114, 0.2433977872133255)\n", - "(115, 0.2425554245710373)\n", - "(116, 0.2417270839214325)\n", - "(117, 0.2409125715494156)\n", - "(118, 0.24011147022247314)\n", - "(119, 0.2393234372138977)\n", - "(120, 0.2385481297969818)\n", - "(121, 0.2377852201461792)\n", - "(122, 0.23703454434871674)\n", - "(123, 0.23629555106163025)\n", - "(124, 0.23556819558143616)\n", - "(125, 0.2348521202802658)\n", - "(126, 0.23414701223373413)\n", - "(127, 0.23345260322093964)\n", - "(128, 0.2327687293291092)\n", - "(129, 0.23209504783153534)\n", - "(130, 0.2314314991235733)\n", - "(131, 0.2307775467634201)\n", - "(132, 0.23013319075107574)\n", - "(133, 0.2294982373714447)\n", - "(134, 0.22887234389781952)\n", - "(135, 0.2282554656267166)\n", - "(136, 0.2276473492383957)\n", - "(137, 0.2270476520061493)\n", - "(138, 0.22645629942417145)\n", - "(139, 0.22587326169013977)\n", - "(140, 0.2252981960773468)\n", - "(141, 0.22473087906837463)\n", - "(142, 0.22417129576206207)\n", - "(143, 0.22361919283866882)\n", - "(144, 0.22307448089122772)\n", - "(145, 0.22253689169883728)\n", - "(146, 0.22200649976730347)\n", - "(147, 0.22148294746875763)\n", - "(148, 0.22096607089042664)\n", - "(149, 0.22045592963695526)\n", - "(150, 0.21995225548744202)\n", - "(151, 0.21945501863956451)\n", - "(152, 0.21896396577358246)\n", - "(153, 0.21847914159297943)\n", - "(154, 0.21800023317337036)\n", - "(155, 0.21752724051475525)\n", - "(156, 0.21706007421016693)\n", - "(157, 0.2165985256433487)\n", - "(158, 0.21614260971546173)\n", - "(159, 0.21569213271141052)\n", - "(160, 0.21524697542190552)\n", - "(161, 0.2148071527481079)\n", - "(162, 0.21437248587608337)\n", - "(163, 0.21394285559654236)\n", - "(164, 0.21351827681064606)\n", - "(165, 0.21309857070446014)\n", - "(166, 0.21268367767333984)\n", - "(167, 0.21227344870567322)\n", - "(168, 0.21186792850494385)\n", - "(169, 0.2114669382572174)\n", - "(170, 0.21107038855552673)\n", - "(171, 0.21067827939987183)\n", - "(172, 0.21029044687747955)\n", - "(173, 0.2099069356918335)\n", - "(174, 0.20952755212783813)\n", - "(175, 0.20915226638317108)\n", - "(176, 0.20878104865550995)\n", - "(177, 0.20841386914253235)\n", - "(178, 0.2080504298210144)\n", - "(179, 0.2076909840106964)\n", - "(180, 0.20733526349067688)\n", - "(181, 0.2069832980632782)\n", - "(182, 0.20663493871688843)\n", - "(183, 0.20629018545150757)\n", - "(184, 0.20594902336597443)\n", - "(185, 0.20561127364635468)\n", - "(186, 0.2052769809961319)\n", - "(187, 0.2049461007118225)\n", - "(188, 0.20461851358413696)\n", - "(189, 0.20429416000843048)\n", - "(190, 0.20397306978702545)\n", - "(191, 0.2036551535129547)\n", - "(192, 0.2033403068780899)\n", - "(193, 0.2030285894870758)\n", - "(194, 0.20271994173526764)\n", - "(195, 0.20241421461105347)\n", - "(196, 0.2021113932132721)\n", - "(197, 0.2018115222454071)\n", - "(198, 0.20151443779468536)\n", - "(199, 0.20122025907039642)\n", - "(200, 0.20092882215976715)\n", - "(201, 0.2006400227546692)\n", - "(202, 0.2003539651632309)\n", - "(203, 0.2000706046819687)\n", - "(204, 0.19978982210159302)\n", - "(205, 0.1995116025209427)\n", - "(206, 0.1992359161376953)\n", - "(207, 0.1989627629518509)\n", - "(208, 0.19869209825992584)\n", - "(209, 0.19842377305030823)\n", - "(210, 0.1981578767299652)\n", - "(211, 0.1978943943977356)\n", - "(212, 0.19763319194316864)\n", - "(213, 0.19737432897090912)\n", - "(214, 0.1971176564693451)\n", - "(215, 0.1968632936477661)\n", - "(216, 0.19661115109920502)\n", - "(217, 0.19636115431785583)\n", - "(218, 0.19611331820487976)\n", - "(219, 0.1958675980567932)\n", - "(220, 0.1956239491701126)\n", - "(221, 0.19538238644599915)\n", - "(222, 0.19514282047748566)\n", - "(223, 0.1949053257703781)\n", - "(224, 0.19466976821422577)\n", - "(225, 0.19443626701831818)\n", - "(226, 0.19420458376407623)\n", - "(227, 0.1939748227596283)\n", - "(228, 0.19374696910381317)\n", - "(229, 0.19352097809314728)\n", - "(230, 0.19329684972763062)\n", - "(231, 0.19307450950145721)\n", - "(232, 0.19285397231578827)\n", - "(233, 0.19263513386249542)\n", - "(234, 0.19241809844970703)\n", - "(235, 0.19220282137393951)\n", - "(236, 0.1919892281293869)\n", - "(237, 0.19177724421024323)\n", - "(238, 0.19156695902347565)\n", - "(239, 0.19135837256908417)\n", - "(240, 0.19115135073661804)\n", - "(241, 0.19094595313072205)\n", - "(242, 0.1907421499490738)\n", - "(243, 0.19053985178470612)\n", - "(244, 0.19033922255039215)\n", - "(245, 0.1901400238275528)\n", - "(246, 0.18994230031967163)\n", - "(247, 0.18974608182907104)\n", - "(248, 0.1895514279603958)\n", - "(249, 0.1893581748008728)\n", - "(250, 0.1891663372516632)\n", - "(251, 0.188975989818573)\n", - "(252, 0.18878702819347382)\n", - "(253, 0.1885993778705597)\n", - "(254, 0.18841320276260376)\n", - "(255, 0.1882283240556717)\n", - "(256, 0.18804480135440826)\n", - "(257, 0.18786266446113586)\n", - "(258, 0.18768179416656494)\n", - "(259, 0.1875022053718567)\n", - "(260, 0.1873239278793335)\n", - "(261, 0.1871468722820282)\n", - "(262, 0.18697114288806915)\n", - "(263, 0.1867966502904892)\n", - "(264, 0.18662330508232117)\n", - "(265, 0.1864512413740158)\n", - "(266, 0.18628039956092834)\n", - "(267, 0.1861107051372528)\n", - "(268, 0.18594226241111755)\n", - "(269, 0.18577489256858826)\n", - "(270, 0.18560872972011566)\n", - "(271, 0.18544365465641022)\n", - "(272, 0.18527977168560028)\n", - "(273, 0.1851169764995575)\n", - "(274, 0.18495523929595947)\n", - "(275, 0.18479463458061218)\n", - "(276, 0.18463507294654846)\n", - "(277, 0.18447664380073547)\n", - "(278, 0.1843191683292389)\n", - "(279, 0.18416288495063782)\n", - "(280, 0.18400755524635315)\n", - "(281, 0.18385322391986847)\n", - "(282, 0.18369990587234497)\n", - "(283, 0.18354769051074982)\n", - "(284, 0.18339639902114868)\n", - "(285, 0.18324613571166992)\n", - "(286, 0.18309682607650757)\n", - "(287, 0.18294841051101685)\n", - "(288, 0.1828010380268097)\n", - "(289, 0.18265457451343536)\n", - "(290, 0.18250903487205505)\n", - "(291, 0.18236446380615234)\n", - "(292, 0.18222080171108246)\n", - "(293, 0.182078018784523)\n", - "(294, 0.18193620443344116)\n", - "(295, 0.18179520964622498)\n", - "(296, 0.1816551387310028)\n", - "(297, 0.1815158724784851)\n", - "(298, 0.1813775599002838)\n", - "(299, 0.1812400221824646)\n", - "(300, 0.1811034083366394)\n", - "(301, 0.18096761405467987)\n", - "(302, 0.1808326542377472)\n", - "(303, 0.1806984841823578)\n", - "(304, 0.18056516349315643)\n", - "(305, 0.18043258786201477)\n", - "(306, 0.18030090630054474)\n", - "(307, 0.1801699846982956)\n", - "(308, 0.18003983795642853)\n", - "(309, 0.17991045117378235)\n", - "(310, 0.17978189885616302)\n", - "(311, 0.1796540766954422)\n", - "(312, 0.17952702939510345)\n", - "(313, 0.1794007122516632)\n", - "(314, 0.17927512526512146)\n", - "(315, 0.17915035784244537)\n", - "(316, 0.17902624607086182)\n", - "(317, 0.17890281975269318)\n", - "(318, 0.178780198097229)\n", - "(319, 0.17865823209285736)\n", - "(320, 0.1785370260477066)\n", - "(321, 0.17841647565364838)\n", - "(322, 0.17829662561416626)\n", - "(323, 0.17817743122577667)\n", - "(324, 0.17805896699428558)\n", - "(325, 0.1779411882162094)\n", - "(326, 0.17782406508922577)\n", - "(327, 0.17770759761333466)\n", - "(328, 0.17759175598621368)\n", - "(329, 0.1774766594171524)\n", - "(330, 0.1773620992898941)\n", - "(331, 0.17724817991256714)\n", - "(332, 0.1771349161863327)\n", - "(333, 0.1770223081111908)\n", - "(334, 0.1769103854894638)\n", - "(335, 0.1767989695072174)\n", - "(336, 0.17668823897838593)\n", - "(337, 0.17657798528671265)\n", - "(338, 0.17646849155426025)\n", - "(339, 0.17635950446128845)\n", - "(340, 0.17625118792057037)\n", - "(341, 0.17614342272281647)\n", - "(342, 0.17603616416454315)\n", - "(343, 0.17592956125736237)\n", - "(344, 0.17582350969314575)\n", - "(345, 0.1757180392742157)\n", - "(346, 0.17561312019824982)\n", - "(347, 0.1755087822675705)\n", - "(348, 0.17540504038333893)\n", - "(349, 0.17530174553394318)\n", - "(350, 0.17519907653331757)\n", - "(351, 0.17509685456752777)\n", - "(352, 0.17499521374702454)\n", - "(353, 0.17489410936832428)\n", - "(354, 0.174793541431427)\n", - "(355, 0.17469356954097748)\n", - "(356, 0.17459401488304138)\n", - "(357, 0.17449496686458588)\n", - "(358, 0.17439651489257812)\n", - "(359, 0.17429853975772858)\n", - "(360, 0.17420105636119843)\n", - "(361, 0.17410403490066528)\n", - "(362, 0.1740075945854187)\n", - "(363, 0.17391157150268555)\n", - "(364, 0.1738160252571106)\n", - "(365, 0.17372097074985504)\n", - "(366, 0.17362642288208008)\n", - "(367, 0.17353230714797974)\n", - "(368, 0.17343875765800476)\n", - "(369, 0.1733456403017044)\n", - "(370, 0.1732528805732727)\n", - "(371, 0.17316076159477234)\n", - "(372, 0.17306895554065704)\n", - "(373, 0.17297770082950592)\n", - "(374, 0.17288684844970703)\n", - "(375, 0.17279642820358276)\n", - "(376, 0.1727064698934555)\n", - "(377, 0.17261695861816406)\n", - "(378, 0.17252784967422485)\n", - "(379, 0.17243924736976624)\n", - "(380, 0.17235103249549866)\n", - "(381, 0.1722632199525833)\n", - "(382, 0.17217588424682617)\n", - "(383, 0.17208898067474365)\n", - "(384, 0.1720024049282074)\n", - "(385, 0.17191635072231293)\n", - "(386, 0.17183060944080353)\n", - "(387, 0.17174537479877472)\n", - "(388, 0.17166046798229218)\n", - "(389, 0.17157597839832306)\n", - "(390, 0.17149187624454498)\n", - "(391, 0.17140823602676392)\n", - "(392, 0.1713249385356903)\n", - "(393, 0.17124204337596893)\n", - "(394, 0.171159565448761)\n" + "/usr/local/lib/python2.7/site-packages/ipykernel_launcher.py:8: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n", + " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "(395, 0.17107747495174408)\n", - "(396, 0.17099571228027344)\n", - "(397, 0.17091435194015503)\n", - "(398, 0.17083339393138885)\n", - "(399, 0.17075279355049133)\n", - "(400, 0.17067256569862366)\n", - "(401, 0.17059266567230225)\n", - "(402, 0.17051315307617188)\n", - "(403, 0.17043404281139374)\n", - "(404, 0.17035527527332306)\n", - "(405, 0.1702769249677658)\n", - "(406, 0.17019882798194885)\n", - "(407, 0.17012114822864532)\n", - "(408, 0.17004381120204926)\n", - "(409, 0.16996681690216064)\n", - "(410, 0.1698901504278183)\n", - "(411, 0.1698138266801834)\n", - "(412, 0.16973790526390076)\n", - "(413, 0.16966229677200317)\n", - "(414, 0.16958695650100708)\n", - "(415, 0.16951201856136322)\n", - "(416, 0.1694374680519104)\n", - "(417, 0.1693631410598755)\n", - "(418, 0.16928917169570923)\n", - "(419, 0.16921554505825043)\n", - "(420, 0.16914226114749908)\n", - "(421, 0.1690692901611328)\n", - "(422, 0.16899660229682922)\n", - "(423, 0.1689242571592331)\n", - "(424, 0.16885225474834442)\n", - "(425, 0.16878047585487366)\n", - "(426, 0.16870908439159393)\n", - "(427, 0.16863802075386047)\n", - "(428, 0.1685672253370285)\n", - "(429, 0.16849669814109802)\n", - "(430, 0.1684265285730362)\n", - "(431, 0.16835668683052063)\n", - "(432, 0.16828709840774536)\n", - "(433, 0.16821783781051636)\n", - "(434, 0.16814880073070526)\n", - "(435, 0.1680801510810852)\n", - "(436, 0.16801175475120544)\n", - "(437, 0.16794359683990479)\n", - "(438, 0.16787582635879517)\n", - "(439, 0.16780823469161987)\n", - "(440, 0.16774097084999084)\n", - "(441, 0.1676740199327469)\n", - "(442, 0.16760732233524323)\n", - "(443, 0.16754087805747986)\n", - "(444, 0.16747473180294037)\n", - "(445, 0.16740888357162476)\n", - "(446, 0.16734327375888824)\n", - "(447, 0.16727793216705322)\n", - "(448, 0.16721290349960327)\n", - "(449, 0.167148157954216)\n", - "(450, 0.16708362102508545)\n", - "(451, 0.16701936721801758)\n", - "(452, 0.1669553816318512)\n", - "(453, 0.1668916642665863)\n", - "(454, 0.16682814061641693)\n", - "(455, 0.1667650043964386)\n", - "(456, 0.1667020171880722)\n", - "(457, 0.16663934290409088)\n", - "(458, 0.16657690703868866)\n", - "(459, 0.16651472449302673)\n", - "(460, 0.16645276546478271)\n", - "(461, 0.16639107465744019)\n", - "(462, 0.16632960736751556)\n", - "(463, 0.16626840829849243)\n", - "(464, 0.16620740294456482)\n", - "(465, 0.1661466807126999)\n", - "(466, 0.16608625650405884)\n", - "(467, 0.16602599620819092)\n", - "(468, 0.16596604883670807)\n", - "(469, 0.16590628027915955)\n", - "(470, 0.16584670543670654)\n", - "(471, 0.16578741371631622)\n", - "(472, 0.1657283902168274)\n", - "(473, 0.16566962003707886)\n", - "(474, 0.16561101377010345)\n", - "(475, 0.16555263102054596)\n", - "(476, 0.16549448668956757)\n", - "(477, 0.1654365211725235)\n", - "(478, 0.16537883877754211)\n", - "(479, 0.16532139480113983)\n", - "(480, 0.16526414453983307)\n", - "(481, 0.1652071624994278)\n", - "(482, 0.16515028476715088)\n", - "(483, 0.16509371995925903)\n", - "(484, 0.1650373488664627)\n", - "(485, 0.16498121619224548)\n", - "(486, 0.16492527723312378)\n", - "(487, 0.1648695319890976)\n", - "(488, 0.16481401026248932)\n", - "(489, 0.16475874185562134)\n", - "(490, 0.1647036224603653)\n", - "(491, 0.16464872658252716)\n", - "(492, 0.16459405422210693)\n", - "(493, 0.16453956067562103)\n", - "(494, 0.16448527574539185)\n", - "(495, 0.16443118453025818)\n", - "(496, 0.1643773466348648)\n", - "(497, 0.16432368755340576)\n", - "(498, 0.16427026689052582)\n", - "(499, 0.16421695053577423)\n", - "(500, 0.16416388750076294)\n", - "(501, 0.16411106288433075)\n", - "(502, 0.16405834257602692)\n", - "(503, 0.16400587558746338)\n", - "(504, 0.16395358741283417)\n", - "(505, 0.16390152275562286)\n", - "(506, 0.1638496220111847)\n", - "(507, 0.16379781067371368)\n", - "(508, 0.16374629735946655)\n", - "(509, 0.16369493305683136)\n", - "(510, 0.16364382207393646)\n", - "(511, 0.1635928899049759)\n", - "(512, 0.16354207694530487)\n", - "(513, 0.16349145770072937)\n", - "(514, 0.16344109177589417)\n", - "(515, 0.1633908450603485)\n", - "(516, 0.16334077715873718)\n", - "(517, 0.16329090297222137)\n", - "(518, 0.16324125230312347)\n", - "(519, 0.16319172084331512)\n", - "(520, 0.1631423979997635)\n", - "(521, 0.1630932241678238)\n", - "(522, 0.16304415464401245)\n", - "(523, 0.16299541294574738)\n", - "(524, 0.16294676065444946)\n", - "(525, 0.16289828717708588)\n", - "(526, 0.162850022315979)\n", - "(527, 0.1628018617630005)\n", - "(528, 0.16275393962860107)\n", - "(529, 0.16270610690116882)\n", - "(530, 0.16265851259231567)\n", - "(531, 0.16261102259159088)\n", - "(532, 0.1625637263059616)\n", - "(533, 0.16251665353775024)\n", - "(534, 0.16246964037418365)\n", - "(535, 0.16242291033267975)\n", - "(536, 0.16237621009349823)\n", - "(537, 0.162329763174057)\n", - "(538, 0.16228342056274414)\n", - "(539, 0.16223730146884918)\n", - "(540, 0.1621912717819214)\n", - "(541, 0.1621454358100891)\n", - "(542, 0.16209977865219116)\n", - "(543, 0.16205424070358276)\n", - "(544, 0.16200889647006989)\n", - "(545, 0.16196371614933014)\n", - "(546, 0.16191862523555756)\n", - "(547, 0.1618736833333969)\n", - "(548, 0.1618289351463318)\n", - "(549, 0.1617843508720398)\n", - "(550, 0.16173991560935974)\n", - "(551, 0.16169561445713043)\n", - "(552, 0.16165149211883545)\n", - "(553, 0.16160745918750763)\n", - "(554, 0.16156364977359772)\n", - "(555, 0.16151991486549377)\n", - "(556, 0.16147634387016296)\n", - "(557, 0.16143293678760529)\n", - "(558, 0.16138969361782074)\n", - "(559, 0.16134656965732574)\n", - "(560, 0.1613035798072815)\n", - "(561, 0.16126078367233276)\n", - "(562, 0.1612180769443512)\n", - "(563, 0.16117547452449799)\n", - "(564, 0.1611330807209015)\n", - "(565, 0.16109080612659454)\n", - "(566, 0.16104868054389954)\n", - "(567, 0.16100671887397766)\n", - "(568, 0.16096481680870056)\n", - "(569, 0.16092312335968018)\n", - "(570, 0.16088150441646576)\n", - "(571, 0.16084003448486328)\n", - "(572, 0.16079875826835632)\n", - "(573, 0.16075755655765533)\n", - "(574, 0.1607164889574051)\n", - "(575, 0.16067564487457275)\n", - "(576, 0.1606348156929016)\n", - "(577, 0.160594180226326)\n", - "(578, 0.1605536788702011)\n", - "(579, 0.16051332652568817)\n", - "(580, 0.1604730188846588)\n", - "(581, 0.16043293476104736)\n", - "(582, 0.1603929102420807)\n", - "(583, 0.16035303473472595)\n", - "(584, 0.16031332314014435)\n", - "(585, 0.16027367115020752)\n", - "(586, 0.16023419797420502)\n", - "(587, 0.16019482910633087)\n", - "(588, 0.16015559434890747)\n", - "(589, 0.16011647880077362)\n", - "(590, 0.16007749736309052)\n", - "(591, 0.16003860533237457)\n", - "(592, 0.15999989211559296)\n", - "(593, 0.1599612832069397)\n", - "(594, 0.159922793507576)\n", - "(595, 0.15988436341285706)\n", - "(596, 0.15984612703323364)\n", - "(597, 0.159807950258255)\n", - "(598, 0.1597699522972107)\n", - "(599, 0.15973204374313354)\n", - "(600, 0.15969428420066833)\n", - "(601, 0.1596566140651703)\n", - "(602, 0.1596190482378006)\n", - "(603, 0.15958163142204285)\n", - "(604, 0.15954433381557465)\n", - "(605, 0.15950708091259003)\n", - "(606, 0.15947003662586212)\n", - "(607, 0.159433051943779)\n", - "(608, 0.1593962162733078)\n", - "(609, 0.15935944020748138)\n", - "(610, 0.1593228429555893)\n", - "(611, 0.15928635001182556)\n", - "(612, 0.1592499315738678)\n", - "(613, 0.1592136025428772)\n", - "(614, 0.15917742252349854)\n", - "(615, 0.15914137661457062)\n", - "(616, 0.1591053456068039)\n", - "(617, 0.1590694934129715)\n", - "(618, 0.15903379023075104)\n", - "(619, 0.15899816155433655)\n", - "(620, 0.15896260738372803)\n", - "(621, 0.15892718732357025)\n", - "(622, 0.15889188647270203)\n", - "(623, 0.15885667502880096)\n", - "(624, 0.15882152318954468)\n", - "(625, 0.1587865650653839)\n", - "(626, 0.15875162184238434)\n", - "(627, 0.1587168574333191)\n", - "(628, 0.15868216753005981)\n", - "(629, 0.1586475968360901)\n", - "(630, 0.15861311554908752)\n", - "(631, 0.1585787534713745)\n", - "(632, 0.15854445099830627)\n", - "(633, 0.15851028263568878)\n", - "(634, 0.15847617387771606)\n", - "(635, 0.15844222903251648)\n", - "(636, 0.15840835869312286)\n", - "(637, 0.1583745777606964)\n", - "(638, 0.1583409160375595)\n", - "(639, 0.15830735862255096)\n", - "(640, 0.158273845911026)\n", - "(641, 0.15824046730995178)\n", - "(642, 0.1582072228193283)\n", - "(643, 0.1581740379333496)\n", - "(644, 0.1581408977508545)\n", - "(645, 0.1581079512834549)\n", - "(646, 0.15807503461837769)\n", - "(647, 0.15804225206375122)\n", - "(648, 0.15800954401493073)\n", - "(649, 0.1579769253730774)\n", - "(650, 0.1579444259405136)\n", - "(651, 0.1579120010137558)\n", - "(652, 0.15787963569164276)\n", - "(653, 0.15784743428230286)\n", - "(654, 0.15781527757644653)\n", - "(655, 0.15778322517871857)\n", - "(656, 0.15775127708911896)\n", - "(657, 0.1577194184064865)\n", - "(658, 0.15768764913082123)\n", - "(659, 0.15765590965747833)\n", - "(660, 0.15762439370155334)\n", - "(661, 0.15759287774562836)\n", - "(662, 0.15756148099899292)\n", - "(663, 0.15753011405467987)\n", - "(664, 0.15749889612197876)\n", - "(665, 0.15746773779392242)\n", - "(666, 0.15743666887283325)\n", - "(667, 0.15740573406219482)\n", - "(668, 0.15737482905387878)\n", - "(669, 0.1573440283536911)\n", - "(670, 0.1573133021593094)\n", - "(671, 0.15728269517421722)\n", - "(672, 0.15725216269493103)\n", - "(673, 0.1572216898202896)\n", - "(674, 0.15719132125377655)\n", - "(675, 0.15716104209423065)\n", - "(676, 0.15713083744049072)\n", - "(677, 0.15710073709487915)\n", - "(678, 0.15707069635391235)\n", - "(679, 0.15704074501991272)\n", - "(680, 0.15701091289520264)\n", - "(681, 0.15698109567165375)\n", - "(682, 0.1569514125585556)\n", - "(683, 0.15692180395126343)\n", - "(684, 0.15689228475093842)\n", - "(685, 0.15686281025409698)\n", - "(686, 0.1568334400653839)\n", - "(687, 0.15680409967899323)\n", - "(688, 0.15677489340305328)\n", - "(689, 0.1567457914352417)\n", - "(690, 0.1567167043685913)\n", - "(691, 0.15668775141239166)\n", - "(692, 0.15665887296199799)\n", - "(693, 0.15663005411624908)\n", - "(694, 0.15660130977630615)\n", - "(695, 0.156572625041008)\n", - "(696, 0.1565440595149994)\n", - "(697, 0.15651555359363556)\n", - "(698, 0.1564871370792389)\n", - "(699, 0.15645882487297058)\n", - "(700, 0.15643051266670227)\n", - "(701, 0.15640230476856232)\n", - "(702, 0.15637421607971191)\n", - "(703, 0.1563461422920227)\n", - "(704, 0.15631820261478424)\n", - "(705, 0.15629027783870697)\n", - "(706, 0.15626245737075806)\n", - "(707, 0.15623468160629272)\n", - "(708, 0.15620703995227814)\n", - "(709, 0.15617944300174713)\n", - "(710, 0.1561519205570221)\n", - "(711, 0.15612445771694183)\n", - "(712, 0.15609712898731232)\n", - "(713, 0.1560697704553604)\n", - "(714, 0.15604256093502045)\n", - "(715, 0.15601544082164764)\n", - "(716, 0.15598829090595245)\n", - "(717, 0.15596126019954681)\n", - "(718, 0.15593430399894714)\n" + "(0, tensor(2.1858))\n", + "(1, tensor(2.1297))\n", + "(2, tensor(2.0742))\n", + "(3, tensor(2.0193))\n", + "(4, tensor(1.9651))\n", + "(5, tensor(1.9117))\n", + "(6, tensor(1.8590))\n", + "(7, tensor(1.8071))\n", + "(8, tensor(1.7560))\n", + "(9, tensor(1.7058))\n", + "(10, tensor(1.6564))\n", + "(11, tensor(1.6080))\n", + "(12, tensor(1.5606))\n", + "(13, tensor(1.5142))\n", + "(14, tensor(1.4688))\n", + "(15, tensor(1.4244))\n", + "(16, tensor(1.3812))\n", + "(17, tensor(1.3391))\n", + "(18, tensor(1.2981))\n", + "(19, tensor(1.2583))\n", + "(20, tensor(1.2197))\n", + "(21, tensor(1.1823))\n", + "(22, tensor(1.1462))\n", + "(23, tensor(1.1112))\n", + "(24, tensor(1.0775))\n", + "(25, tensor(1.0450))\n", + "(26, tensor(1.0138))\n", + "(27, tensor(0.9837))\n", + "(28, tensor(0.9549))\n", + "(29, tensor(0.9272))\n", + "(30, tensor(0.9007))\n", + "(31, tensor(0.8754))\n", + "(32, tensor(0.8511))\n", + "(33, tensor(0.8280))\n", + "(34, tensor(0.8059))\n", + "(35, tensor(0.7848))\n", + "(36, tensor(0.7647))\n", + "(37, tensor(0.7455))\n", + "(38, tensor(0.7272))\n", + "(39, tensor(0.7098))\n", + "(40, tensor(0.6932))\n", + "(41, tensor(0.6774))\n", + "(42, tensor(0.6624))\n", + "(43, tensor(0.6480))\n", + "(44, tensor(0.6344))\n", + "(45, tensor(0.6214))\n", + "(46, tensor(0.6089))\n", + "(47, tensor(0.5971))\n", + "(48, tensor(0.5858))\n", + "(49, tensor(0.5750))\n", + "(50, tensor(0.5647))\n", + "(51, tensor(0.5549))\n", + "(52, tensor(0.5455))\n", + "(53, tensor(0.5365))\n", + "(54, tensor(0.5279))\n", + "(55, tensor(0.5197))\n", + "(56, tensor(0.5118))\n", + "(57, tensor(0.5043))\n", + "(58, tensor(0.4971))\n", + "(59, tensor(0.4901))\n", + "(60, tensor(0.4835))\n", + "(61, tensor(0.4771))\n", + "(62, tensor(0.4709))\n", + "(63, tensor(0.4650))\n", + "(64, tensor(0.4593))\n", + "(65, tensor(0.4538))\n", + "(66, tensor(0.4486))\n", + "(67, tensor(0.4435))\n", + "(68, tensor(0.4386))\n", + "(69, tensor(0.4339))\n", + "(70, tensor(0.4293))\n", + "(71, tensor(0.4249))\n", + "(72, tensor(0.4206))\n", + "(73, tensor(0.4165))\n", + "(74, tensor(0.4126))\n", + "(75, tensor(0.4087))\n", + "(76, tensor(0.4050))\n", + "(77, tensor(0.4014))\n", + "(78, tensor(0.3979))\n", + "(79, tensor(0.3945))\n", + "(80, tensor(0.3912))\n", + "(81, tensor(0.3880))\n", + "(82, tensor(0.3850))\n", + "(83, tensor(0.3820))\n", + "(84, tensor(0.3790))\n", + "(85, tensor(0.3762))\n", + "(86, tensor(0.3735))\n", + "(87, tensor(0.3708))\n", + "(88, tensor(0.3682))\n", + "(89, tensor(0.3657))\n", + "(90, tensor(0.3632))\n", + "(91, tensor(0.3608))\n", + "(92, tensor(0.3585))\n", + "(93, tensor(0.3562))\n", + "(94, tensor(0.3540))\n", + "(95, tensor(0.3518))\n", + "(96, tensor(0.3497))\n", + "(97, tensor(0.3476))\n", + "(98, tensor(0.3456))\n", + "(99, tensor(0.3437))\n", + "(100, tensor(0.3418))\n", + "(101, tensor(0.3399))\n", + "(102, tensor(0.3381))\n", + "(103, tensor(0.3363))\n", + "(104, tensor(0.3346))\n", + "(105, tensor(0.3329))\n", + "(106, tensor(0.3312))\n", + "(107, tensor(0.3296))\n", + "(108, tensor(0.3280))\n", + "(109, tensor(0.3264))\n", + "(110, tensor(0.3249))\n", + "(111, tensor(0.3234))\n", + "(112, tensor(0.3219))\n", + "(113, tensor(0.3205))\n", + "(114, tensor(0.3191))\n", + "(115, tensor(0.3177))\n", + "(116, tensor(0.3164))\n", + "(117, tensor(0.3151))\n", + "(118, tensor(0.3138))\n", + "(119, tensor(0.3125))\n", + "(120, tensor(0.3113))\n", + "(121, tensor(0.3100))\n", + "(122, tensor(0.3088))\n", + "(123, tensor(0.3077))\n", + "(124, tensor(0.3065))\n", + "(125, tensor(0.3054))\n", + "(126, tensor(0.3043))\n", + "(127, tensor(0.3032))\n", + "(128, tensor(0.3021))\n", + "(129, tensor(0.3011))\n", + "(130, tensor(0.3000))\n", + "(131, tensor(0.2990))\n", + "(132, tensor(0.2980))\n", + "(133, tensor(0.2970))\n", + "(134, tensor(0.2961))\n", + "(135, tensor(0.2951))\n", + "(136, tensor(0.2942))\n", + "(137, tensor(0.2933))\n", + "(138, tensor(0.2924))\n", + "(139, tensor(0.2915))\n", + "(140, tensor(0.2906))\n", + "(141, tensor(0.2898))\n", + "(142, tensor(0.2889))\n", + "(143, tensor(0.2881))\n", + "(144, tensor(0.2873))\n", + "(145, tensor(0.2865))\n", + "(146, tensor(0.2857))\n", + "(147, tensor(0.2849))\n", + "(148, tensor(0.2841))\n", + "(149, tensor(0.2834))\n", + "(150, tensor(0.2826))\n", + "(151, tensor(0.2819))\n", + "(152, tensor(0.2812))\n", + "(153, tensor(0.2805))\n", + "(154, tensor(0.2798))\n", + "(155, tensor(0.2791))\n", + "(156, tensor(0.2784))\n", + "(157, tensor(0.2777))\n", + "(158, tensor(0.2771))\n", + "(159, tensor(0.2764))\n", + "(160, tensor(0.2758))\n", + "(161, tensor(0.2751))\n", + "(162, tensor(0.2745))\n", + "(163, tensor(0.2739))\n", + "(164, tensor(0.2733))\n", + "(165, tensor(0.2727))\n", + "(166, tensor(0.2721))\n", + "(167, tensor(0.2715))\n", + "(168, tensor(0.2709))\n", + "(169, tensor(0.2704))\n", + "(170, tensor(0.2698))\n", + "(171, tensor(0.2692))\n", + "(172, tensor(0.2687))\n", + "(173, tensor(0.2682))\n", + "(174, tensor(0.2676))\n", + "(175, tensor(0.2671))\n", + "(176, tensor(0.2666))\n", + "(177, tensor(0.2661))\n", + "(178, tensor(0.2656))\n", + "(179, tensor(0.2651))\n", + "(180, tensor(0.2646))\n", + "(181, tensor(0.2641))\n", + "(182, tensor(0.2636))\n", + "(183, tensor(0.2631))\n", + "(184, tensor(0.2627))\n", + "(185, tensor(0.2622))\n", + "(186, tensor(0.2617))\n", + "(187, tensor(0.2613))\n", + "(188, tensor(0.2608))\n", + "(189, tensor(0.2604))\n", + "(190, tensor(0.2600))\n", + "(191, tensor(0.2595))\n", + "(192, tensor(0.2591))\n", + "(193, tensor(0.2587))\n", + "(194, tensor(0.2583))\n", + "(195, tensor(0.2578))\n", + "(196, tensor(0.2574))\n", + "(197, tensor(0.2570))\n", + "(198, tensor(0.2566))\n", + "(199, tensor(0.2562))\n", + "(200, tensor(0.2558))\n", + "(201, tensor(0.2555))\n", + "(202, tensor(0.2551))\n", + "(203, tensor(0.2547))\n", + "(204, tensor(0.2543))\n", + "(205, tensor(0.2540))\n", + "(206, tensor(0.2536))\n", + "(207, tensor(0.2532))\n", + "(208, tensor(0.2529))\n", + "(209, tensor(0.2525))\n", + "(210, tensor(0.2522))\n", + "(211, tensor(0.2518))\n", + "(212, tensor(0.2515))\n", + "(213, tensor(0.2511))\n", + "(214, tensor(0.2508))\n", + "(215, tensor(0.2505))\n", + "(216, tensor(0.2502))\n", + "(217, tensor(0.2498))\n", + "(218, tensor(0.2495))\n", + "(219, tensor(0.2492))\n", + "(220, tensor(0.2489))\n", + "(221, tensor(0.2486))\n", + "(222, tensor(0.2482))\n", + "(223, tensor(0.2479))\n", + "(224, tensor(0.2476))\n", + "(225, tensor(0.2473))\n", + "(226, tensor(0.2470))\n", + "(227, tensor(0.2467))\n", + "(228, tensor(0.2465))\n", + "(229, tensor(0.2462))\n", + "(230, tensor(0.2459))\n", + "(231, tensor(0.2456))\n", + "(232, tensor(0.2453))\n", + "(233, tensor(0.2450))\n", + "(234, tensor(0.2448))\n", + "(235, tensor(0.2445))\n", + "(236, tensor(0.2442))\n", + "(237, tensor(0.2440))\n", + "(238, tensor(0.2437))\n", + "(239, tensor(0.2434))\n", + "(240, tensor(0.2432))\n", + "(241, tensor(0.2429))\n", + "(242, tensor(0.2427))\n", + "(243, tensor(0.2424))\n", + "(244, tensor(0.2422))\n", + "(245, tensor(0.2419))\n", + "(246, tensor(0.2417))\n", + "(247, tensor(0.2414))\n", + "(248, tensor(0.2412))\n", + "(249, tensor(0.2409))\n", + "(250, tensor(0.2407))\n", + "(251, tensor(0.2405))\n", + "(252, tensor(0.2402))\n", + "(253, tensor(0.2400))\n", + "(254, tensor(0.2398))\n", + "(255, tensor(0.2395))\n", + "(256, tensor(0.2393))\n", + "(257, tensor(0.2391))\n", + "(258, tensor(0.2389))\n", + "(259, tensor(0.2386))\n", + "(260, tensor(0.2384))\n", + "(261, tensor(0.2382))\n", + "(262, tensor(0.2380))\n", + "(263, tensor(0.2378))\n", + "(264, tensor(0.2376))\n", + "(265, tensor(0.2374))\n", + "(266, tensor(0.2372))\n", + "(267, tensor(0.2370))\n", + "(268, tensor(0.2368))\n", + "(269, tensor(0.2365))\n", + "(270, tensor(0.2363))\n", + "(271, tensor(0.2362))\n", + "(272, tensor(0.2360))\n", + "(273, tensor(0.2358))\n", + "(274, tensor(0.2356))\n", + "(275, tensor(0.2354))\n", + "(276, tensor(0.2352))\n", + "(277, tensor(0.2350))\n", + "(278, tensor(0.2348))\n", + "(279, tensor(0.2346))\n", + "(280, tensor(0.2344))\n", + "(281, tensor(0.2343))\n", + "(282, tensor(0.2341))\n", + "(283, tensor(0.2339))\n", + "(284, tensor(0.2337))\n", + "(285, tensor(0.2335))\n", + "(286, tensor(0.2334))\n", + "(287, tensor(0.2332))\n", + "(288, tensor(0.2330))\n", + "(289, tensor(0.2328))\n", + "(290, tensor(0.2327))\n", + "(291, tensor(0.2325))\n", + "(292, tensor(0.2323))\n", + "(293, tensor(0.2322))\n", + "(294, tensor(0.2320))\n", + "(295, tensor(0.2318))\n", + "(296, tensor(0.2317))\n", + "(297, tensor(0.2315))\n", + "(298, tensor(0.2313))\n", + "(299, tensor(0.2312))\n", + "(300, tensor(0.2310))\n", + "(301, tensor(0.2309))\n", + "(302, tensor(0.2307))\n", + "(303, tensor(0.2306))\n", + "(304, tensor(0.2304))\n", + "(305, tensor(0.2303))\n", + "(306, tensor(0.2301))\n", + "(307, tensor(0.2300))\n", + "(308, tensor(0.2298))\n", + "(309, tensor(0.2297))\n", + "(310, tensor(0.2295))\n", + "(311, tensor(0.2294))\n", + "(312, tensor(0.2292))\n", + "(313, tensor(0.2291))\n", + "(314, tensor(0.2289))\n", + "(315, tensor(0.2288))\n", + "(316, tensor(0.2286))\n", + "(317, tensor(0.2285))\n", + "(318, tensor(0.2284))\n", + "(319, tensor(0.2282))\n", + "(320, tensor(0.2281))\n", + "(321, tensor(0.2280))\n", + "(322, tensor(0.2278))\n", + "(323, tensor(0.2277))\n", + "(324, tensor(0.2276))\n", + "(325, tensor(0.2274))\n", + "(326, tensor(0.2273))\n", + "(327, tensor(0.2272))\n", + "(328, tensor(0.2270))\n", + "(329, tensor(0.2269))\n", + "(330, tensor(0.2268))\n", + "(331, tensor(0.2266))\n", + "(332, tensor(0.2265))\n", + "(333, tensor(0.2264))\n", + "(334, tensor(0.2263))\n", + "(335, tensor(0.2261))\n", + "(336, tensor(0.2260))\n", + "(337, tensor(0.2259))\n", + "(338, tensor(0.2258))\n", + "(339, tensor(0.2257))\n", + "(340, tensor(0.2255))\n", + "(341, tensor(0.2254))\n", + "(342, tensor(0.2253))\n", + "(343, tensor(0.2252))\n", + "(344, tensor(0.2251))\n", + "(345, tensor(0.2250))\n", + "(346, tensor(0.2248))\n", + "(347, tensor(0.2247))\n", + "(348, tensor(0.2246))\n", + "(349, tensor(0.2245))\n", + "(350, tensor(0.2244))\n", + "(351, tensor(0.2243))\n", + "(352, tensor(0.2242))\n", + "(353, tensor(0.2241))\n", + "(354, tensor(0.2239))\n", + "(355, tensor(0.2238))\n", + "(356, tensor(0.2237))\n", + "(357, tensor(0.2236))\n", + "(358, tensor(0.2235))\n", + "(359, tensor(0.2234))\n", + "(360, tensor(0.2233))\n", + "(361, tensor(0.2232))\n", + "(362, tensor(0.2231))\n", + "(363, tensor(0.2230))\n", + "(364, tensor(0.2229))\n", + "(365, tensor(0.2228))\n", + "(366, tensor(0.2227))\n", + "(367, tensor(0.2226))\n", + "(368, tensor(0.2225))\n", + "(369, tensor(0.2224))\n", + "(370, tensor(0.2223))\n", + "(371, tensor(0.2222))\n", + "(372, tensor(0.2221))\n", + "(373, tensor(0.2220))\n", + "(374, tensor(0.2219))\n", + "(375, tensor(0.2218))\n", + "(376, tensor(0.2217))\n", + "(377, tensor(0.2216))\n", + "(378, tensor(0.2215))\n", + "(379, tensor(0.2214))\n", + "(380, tensor(0.2213))\n", + "(381, tensor(0.2212))\n", + "(382, tensor(0.2212))\n", + "(383, tensor(0.2211))\n", + "(384, tensor(0.2210))\n", + "(385, tensor(0.2209))\n", + "(386, tensor(0.2208))\n", + "(387, tensor(0.2207))\n", + "(388, tensor(0.2206))\n", + "(389, tensor(0.2205))\n", + "(390, tensor(0.2204))\n", + "(391, tensor(0.2204))\n", + "(392, tensor(0.2203))\n", + "(393, tensor(0.2202))\n", + "(394, tensor(0.2201))\n", + "(395, tensor(0.2200))\n", + "(396, tensor(0.2199))\n", + "(397, tensor(0.2198))\n", + "(398, tensor(0.2198))\n", + "(399, tensor(0.2197))\n", + "(400, tensor(0.2196))\n", + "(401, tensor(0.2195))\n", + "(402, tensor(0.2194))\n", + "(403, tensor(0.2193))\n", + "(404, tensor(0.2193))\n", + "(405, tensor(0.2192))\n", + "(406, tensor(0.2191))\n", + "(407, tensor(0.2190))\n", + "(408, tensor(0.2189))\n", + "(409, tensor(0.2189))\n", + "(410, tensor(0.2188))\n", + "(411, tensor(0.2187))\n", + "(412, tensor(0.2186))\n", + "(413, tensor(0.2186))\n", + "(414, tensor(0.2185))\n", + "(415, tensor(0.2184))\n", + "(416, tensor(0.2183))\n", + "(417, tensor(0.2183))\n", + "(418, tensor(0.2182))\n", + "(419, tensor(0.2181))\n", + "(420, tensor(0.2180))\n", + "(421, tensor(0.2180))\n", + "(422, tensor(0.2179))\n", + "(423, tensor(0.2178))\n", + "(424, tensor(0.2177))\n", + "(425, tensor(0.2177))\n", + "(426, tensor(0.2176))\n", + "(427, tensor(0.2175))\n", + "(428, tensor(0.2175))\n", + "(429, tensor(0.2174))\n", + "(430, tensor(0.2173))\n", + "(431, tensor(0.2173))\n", + "(432, tensor(0.2172))\n", + "(433, tensor(0.2171))\n", + "(434, tensor(0.2170))\n", + "(435, tensor(0.2170))\n", + "(436, tensor(0.2169))\n", + "(437, tensor(0.2168))\n", + "(438, tensor(0.2168))\n", + "(439, tensor(0.2167))\n", + "(440, tensor(0.2166))\n", + "(441, tensor(0.2166))\n", + "(442, tensor(0.2165))\n", + "(443, tensor(0.2164))\n", + "(444, tensor(0.2164))\n", + "(445, tensor(0.2163))\n", + "(446, tensor(0.2163))\n", + "(447, tensor(0.2162))\n", + "(448, tensor(0.2161))\n", + "(449, tensor(0.2161))\n", + "(450, tensor(0.2160))\n", + "(451, tensor(0.2159))\n", + "(452, tensor(0.2159))\n", + "(453, tensor(0.2158))\n", + "(454, tensor(0.2157))\n", + "(455, tensor(0.2157))\n", + "(456, tensor(0.2156))\n", + "(457, tensor(0.2156))\n", + "(458, tensor(0.2155))\n", + "(459, tensor(0.2154))\n", + "(460, tensor(0.2154))\n", + "(461, tensor(0.2153))\n", + "(462, tensor(0.2153))\n", + "(463, tensor(0.2152))\n", + "(464, tensor(0.2152))\n", + "(465, tensor(0.2151))\n", + "(466, tensor(0.2150))\n", + "(467, tensor(0.2150))\n", + "(468, tensor(0.2149))\n", + "(469, tensor(0.2149))\n", + "(470, tensor(0.2148))\n", + "(471, tensor(0.2147))\n", + "(472, tensor(0.2147))\n", + "(473, tensor(0.2146))\n", + "(474, tensor(0.2146))\n", + "(475, tensor(0.2145))\n", + "(476, tensor(0.2145))\n", + "(477, tensor(0.2144))\n", + "(478, tensor(0.2144))\n", + "(479, tensor(0.2143))\n", + "(480, tensor(0.2143))\n", + "(481, tensor(0.2142))\n", + "(482, tensor(0.2141))\n", + "(483, tensor(0.2141))\n", + "(484, tensor(0.2140))\n", + "(485, tensor(0.2140))\n", + "(486, tensor(0.2139))\n", + "(487, tensor(0.2139))\n", + "(488, tensor(0.2138))\n", + "(489, tensor(0.2138))\n", + "(490, tensor(0.2137))\n", + "(491, tensor(0.2137))\n", + "(492, tensor(0.2136))\n", + "(493, tensor(0.2136))\n", + "(494, tensor(0.2135))\n", + "(495, tensor(0.2135))\n", + "(496, tensor(0.2134))\n", + "(497, tensor(0.2134))\n", + "(498, tensor(0.2133))\n", + "(499, tensor(0.2133))\n", + "(500, tensor(0.2132))\n", + "(501, tensor(0.2132))\n", + "(502, tensor(0.2131))\n", + "(503, tensor(0.2131))\n", + "(504, tensor(0.2130))\n", + "(505, tensor(0.2130))\n", + "(506, tensor(0.2129))\n", + "(507, tensor(0.2129))\n", + "(508, tensor(0.2128))\n", + "(509, tensor(0.2128))\n", + "(510, tensor(0.2127))\n", + "(511, tensor(0.2127))\n", + "(512, tensor(0.2127))\n", + "(513, tensor(0.2126))\n", + "(514, tensor(0.2126))\n", + "(515, tensor(0.2125))\n", + "(516, tensor(0.2125))\n", + "(517, tensor(0.2124))\n", + "(518, tensor(0.2124))\n", + "(519, tensor(0.2123))\n", + "(520, tensor(0.2123))\n", + "(521, tensor(0.2122))\n", + "(522, tensor(0.2122))\n", + "(523, tensor(0.2122))\n", + "(524, tensor(0.2121))\n", + "(525, tensor(0.2121))\n", + "(526, tensor(0.2120))\n", + "(527, tensor(0.2120))\n", + "(528, tensor(0.2119))\n", + "(529, tensor(0.2119))\n", + "(530, tensor(0.2119))\n", + "(531, tensor(0.2118))\n", + "(532, tensor(0.2118))\n", + "(533, tensor(0.2117))\n", + "(534, tensor(0.2117))\n", + "(535, tensor(0.2116))\n", + "(536, tensor(0.2116))\n", + "(537, tensor(0.2116))\n", + "(538, tensor(0.2115))\n", + "(539, tensor(0.2115))\n", + "(540, tensor(0.2114))\n", + "(541, tensor(0.2114))\n", + "(542, tensor(0.2114))\n", + "(543, tensor(0.2113))\n", + "(544, tensor(0.2113))\n", + "(545, tensor(0.2112))\n", + "(546, tensor(0.2112))\n", + "(547, tensor(0.2112))\n", + "(548, tensor(0.2111))\n", + "(549, tensor(0.2111))\n", + "(550, tensor(0.2110))\n", + "(551, tensor(0.2110))\n", + "(552, tensor(0.2110))\n", + "(553, tensor(0.2109))\n", + "(554, tensor(0.2109))\n", + "(555, tensor(0.2108))\n", + "(556, tensor(0.2108))\n", + "(557, tensor(0.2108))\n", + "(558, tensor(0.2107))\n", + "(559, tensor(0.2107))\n", + "(560, tensor(0.2107))\n", + "(561, tensor(0.2106))\n", + "(562, tensor(0.2106))\n", + "(563, tensor(0.2106))\n", + "(564, tensor(0.2105))\n", + "(565, tensor(0.2105))\n", + "(566, tensor(0.2104))\n", + "(567, tensor(0.2104))\n", + "(568, tensor(0.2104))\n", + "(569, tensor(0.2103))\n", + "(570, tensor(0.2103))\n", + "(571, tensor(0.2103))\n", + "(572, tensor(0.2102))\n", + "(573, tensor(0.2102))\n", + "(574, tensor(0.2102))\n", + "(575, tensor(0.2101))\n", + "(576, tensor(0.2101))\n", + "(577, tensor(0.2101))\n", + "(578, tensor(0.2100))\n", + "(579, tensor(0.2100))\n", + "(580, tensor(0.2099))\n", + "(581, tensor(0.2099))\n", + "(582, tensor(0.2099))\n", + "(583, tensor(0.2098))\n", + "(584, tensor(0.2098))\n", + "(585, tensor(0.2098))\n", + "(586, tensor(0.2097))\n", + "(587, tensor(0.2097))\n", + "(588, tensor(0.2097))\n", + "(589, tensor(0.2096))\n", + "(590, tensor(0.2096))\n", + "(591, tensor(0.2096))\n", + "(592, tensor(0.2095))\n", + "(593, tensor(0.2095))\n", + "(594, tensor(0.2095))\n", + "(595, tensor(0.2095))\n", + "(596, tensor(0.2094))\n", + "(597, tensor(0.2094))\n", + "(598, tensor(0.2094))\n", + "(599, tensor(0.2093))\n", + "(600, tensor(0.2093))\n", + "(601, tensor(0.2093))\n", + "(602, tensor(0.2092))\n", + "(603, tensor(0.2092))\n", + "(604, tensor(0.2092))\n", + "(605, tensor(0.2091))\n", + "(606, tensor(0.2091))\n", + "(607, tensor(0.2091))\n", + "(608, tensor(0.2090))\n", + "(609, tensor(0.2090))\n", + "(610, tensor(0.2090))\n", + "(611, tensor(0.2090))\n", + "(612, tensor(0.2089))\n", + "(613, tensor(0.2089))\n", + "(614, tensor(0.2089))\n", + "(615, tensor(0.2088))\n", + "(616, tensor(0.2088))\n", + "(617, tensor(0.2088))\n", + "(618, tensor(0.2087))\n", + "(619, tensor(0.2087))\n", + "(620, tensor(0.2087))\n", + "(621, tensor(0.2087))\n", + "(622, tensor(0.2086))\n", + "(623, tensor(0.2086))\n", + "(624, tensor(0.2086))\n", + "(625, tensor(0.2085))\n", + "(626, tensor(0.2085))\n", + "(627, tensor(0.2085))\n", + "(628, tensor(0.2085))\n", + "(629, tensor(0.2084))\n", + "(630, tensor(0.2084))\n", + "(631, tensor(0.2084))\n", + "(632, tensor(0.2083))\n", + "(633, tensor(0.2083))\n", + "(634, tensor(0.2083))\n", + "(635, tensor(0.2083))\n", + "(636, tensor(0.2082))\n", + "(637, tensor(0.2082))\n", + "(638, tensor(0.2082))\n", + "(639, tensor(0.2082))\n", + "(640, tensor(0.2081))\n", + "(641, tensor(0.2081))\n", + "(642, tensor(0.2081))\n", + "(643, tensor(0.2081))\n", + "(644, tensor(0.2080))\n", + "(645, tensor(0.2080))\n", + "(646, tensor(0.2080))\n", + "(647, tensor(0.2079))\n", + "(648, tensor(0.2079))\n", + "(649, tensor(0.2079))\n", + "(650, tensor(0.2079))\n", + "(651, tensor(0.2078))\n", + "(652, tensor(0.2078))\n", + "(653, tensor(0.2078))\n", + "(654, tensor(0.2078))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "(719, 0.15590743720531464)\n", - "(720, 0.1558806449174881)\n", - "(721, 0.15585391223430634)\n", - "(722, 0.15582726895809174)\n", - "(723, 0.15580064058303833)\n", - "(724, 0.15577413141727448)\n", - "(725, 0.1557476967573166)\n", - "(726, 0.15572130680084229)\n", - "(727, 0.15569497644901276)\n", - "(728, 0.1556687206029892)\n", - "(729, 0.1556425541639328)\n", - "(730, 0.15561643242835999)\n", - "(731, 0.15559040009975433)\n", - "(732, 0.15556444227695465)\n", - "(733, 0.15553851425647736)\n", - "(734, 0.15551269054412842)\n", - "(735, 0.15548686683177948)\n", - "(736, 0.1554611772298813)\n", - "(737, 0.1554355025291443)\n", - "(738, 0.15540991723537445)\n", - "(739, 0.15538442134857178)\n", - "(740, 0.15535899996757507)\n", - "(741, 0.15533360838890076)\n", - "(742, 0.1553083062171936)\n", - "(743, 0.15528298914432526)\n", - "(744, 0.15525783598423004)\n", - "(745, 0.15523271262645721)\n", - "(746, 0.15520769357681274)\n", - "(747, 0.15518265962600708)\n", - "(748, 0.15515772998332977)\n", - "(749, 0.15513290464878082)\n", - "(750, 0.15510804951190948)\n", - "(751, 0.1550833135843277)\n", - "(752, 0.1550585776567459)\n", - "(753, 0.15503400564193726)\n", - "(754, 0.155009463429451)\n", - "(755, 0.15498493611812592)\n", - "(756, 0.1549605131149292)\n", - "(757, 0.15493616461753845)\n", - "(758, 0.1549118012189865)\n", - "(759, 0.15488757193088531)\n", - "(760, 0.1548633724451065)\n", - "(761, 0.15483923256397247)\n", - "(762, 0.1548151820898056)\n", - "(763, 0.1547912210226059)\n", - "(764, 0.1547672301530838)\n", - "(765, 0.15474337339401245)\n", - "(766, 0.1547195315361023)\n", - "(767, 0.15469574928283691)\n", - "(768, 0.1546720713376999)\n", - "(769, 0.15464836359024048)\n", - "(770, 0.1546247899532318)\n", - "(771, 0.15460127592086792)\n", - "(772, 0.15457779169082642)\n", - "(773, 0.1545543521642685)\n", - "(774, 0.15453098714351654)\n", - "(775, 0.15450772643089294)\n", - "(776, 0.15448446571826935)\n", - "(777, 0.15446126461029053)\n", - "(778, 0.15443815290927887)\n", - "(779, 0.1544150710105896)\n", - "(780, 0.1543920636177063)\n", - "(781, 0.154369056224823)\n", - "(782, 0.15434615314006805)\n", - "(783, 0.1543232947587967)\n", - "(784, 0.1543005108833313)\n", - "(785, 0.1542777568101883)\n", - "(786, 0.15425506234169006)\n", - "(787, 0.1542324423789978)\n", - "(788, 0.15420983731746674)\n", - "(789, 0.1541873961687088)\n", - "(790, 0.15416491031646729)\n", - "(791, 0.15414246916770935)\n", - "(792, 0.15412017703056335)\n", - "(793, 0.1540977954864502)\n", - "(794, 0.15407557785511017)\n", - "(795, 0.15405339002609253)\n", - "(796, 0.15403123199939728)\n", - "(797, 0.154009148478508)\n", - "(798, 0.1539871096611023)\n", - "(799, 0.15396514534950256)\n", - "(800, 0.15394316613674164)\n", - "(801, 0.15392126142978668)\n", - "(802, 0.15389947593212128)\n", - "(803, 0.15387772023677826)\n", - "(804, 0.15385599434375763)\n", - "(805, 0.15383431315422058)\n", - "(806, 0.1538126915693283)\n", - "(807, 0.1537911295890808)\n", - "(808, 0.1537695974111557)\n", - "(809, 0.15374813973903656)\n", - "(810, 0.1537266969680786)\n", - "(811, 0.15370532870292664)\n", - "(812, 0.15368404984474182)\n", - "(813, 0.153662770986557)\n", - "(814, 0.15364153683185577)\n", - "(815, 0.1536203920841217)\n", - "(816, 0.1535993069410324)\n", - "(817, 0.15357813239097595)\n", - "(818, 0.1535572111606598)\n", - "(819, 0.15353623032569885)\n", - "(820, 0.1535152792930603)\n", - "(821, 0.1534944474697113)\n", - "(822, 0.1534736454486847)\n", - "(823, 0.1534527987241745)\n", - "(824, 0.15343207120895386)\n", - "(825, 0.153411403298378)\n", - "(826, 0.1533907949924469)\n", - "(827, 0.1533701866865158)\n", - "(828, 0.15334971249103546)\n", - "(829, 0.15332919359207153)\n", - "(830, 0.15330874919891357)\n", - "(831, 0.153288334608078)\n", - "(832, 0.15326805412769318)\n", - "(833, 0.15324775874614716)\n", - "(834, 0.15322750806808472)\n", - "(835, 0.15320724248886108)\n", - "(836, 0.1531870812177658)\n", - "(837, 0.1531669944524765)\n", - "(838, 0.15314693748950958)\n", - "(839, 0.15312689542770386)\n", - "(840, 0.1531069576740265)\n", - "(841, 0.1530870497226715)\n", - "(842, 0.15306712687015533)\n", - "(843, 0.15304729342460632)\n", - "(844, 0.1530275195837021)\n", - "(845, 0.15300780534744263)\n", - "(846, 0.15298804640769958)\n", - "(847, 0.1529684215784073)\n", - "(848, 0.1529487669467926)\n", - "(849, 0.15292923152446747)\n", - "(850, 0.15290969610214233)\n", - "(851, 0.15289022028446198)\n", - "(852, 0.1528707593679428)\n", - "(853, 0.152851402759552)\n", - "(854, 0.1528320163488388)\n", - "(855, 0.15281274914741516)\n", - "(856, 0.15279345214366913)\n", - "(857, 0.15277430415153503)\n", - "(858, 0.15275509655475616)\n", - "(859, 0.15273594856262207)\n", - "(860, 0.15271688997745514)\n", - "(861, 0.15269781649112701)\n", - "(862, 0.15267884731292725)\n", - "(863, 0.1526598483324051)\n", - "(864, 0.15264096856117249)\n", - "(865, 0.1526220738887787)\n", - "(866, 0.15260320901870728)\n", - "(867, 0.1525844782590866)\n", - "(868, 0.15256570279598236)\n", - "(869, 0.1525469720363617)\n", - "(870, 0.1525283306837082)\n", - "(871, 0.1525096595287323)\n", - "(872, 0.15249115228652954)\n", - "(873, 0.15247255563735962)\n", - "(874, 0.15245403349399567)\n", - "(875, 0.15243560075759888)\n", - "(876, 0.15241722762584686)\n", - "(877, 0.15239880979061127)\n", - "(878, 0.1523805409669876)\n", - "(879, 0.1523621678352356)\n", - "(880, 0.15234391391277313)\n", - "(881, 0.15232570469379425)\n", - "(882, 0.15230752527713776)\n", - "(883, 0.15228937566280365)\n", - "(884, 0.15227124094963074)\n", - "(885, 0.152253195643425)\n", - "(886, 0.152235209941864)\n", - "(887, 0.15221720933914185)\n", - "(888, 0.15219928324222565)\n", - "(889, 0.15218137204647064)\n", - "(890, 0.1521635353565216)\n", - "(891, 0.15214568376541138)\n", - "(892, 0.15212789177894592)\n", - "(893, 0.15211015939712524)\n", - "(894, 0.15209247171878815)\n", - "(895, 0.15207479894161224)\n", - "(896, 0.15205711126327515)\n", - "(897, 0.1520395129919052)\n", - "(898, 0.15202195942401886)\n", - "(899, 0.1520044356584549)\n", - "(900, 0.1519869863986969)\n", - "(901, 0.1519695222377777)\n", - "(902, 0.1519520878791809)\n", - "(903, 0.15193478763103485)\n", - "(904, 0.1519174724817276)\n", - "(905, 0.15190011262893677)\n", - "(906, 0.1518828421831131)\n", - "(907, 0.1518656462430954)\n", - "(908, 0.1518484652042389)\n", - "(909, 0.15183137357234955)\n", - "(910, 0.15181420743465424)\n", - "(911, 0.15179714560508728)\n", - "(912, 0.1517801135778427)\n", - "(913, 0.15176312625408173)\n", - "(914, 0.15174613893032074)\n", - "(915, 0.15172916650772095)\n", - "(916, 0.1517122983932495)\n", - "(917, 0.15169544517993927)\n", - "(918, 0.15167857706546783)\n", - "(919, 0.15166185796260834)\n", - "(920, 0.15164507925510406)\n", - "(921, 0.15162837505340576)\n", - "(922, 0.15161170065402985)\n", - "(923, 0.15159501135349274)\n", - "(924, 0.1515784114599228)\n", - "(925, 0.15156182646751404)\n", - "(926, 0.15154530107975006)\n", - "(927, 0.15152882039546967)\n", - "(928, 0.15151235461235046)\n", - "(929, 0.15149587392807007)\n", - "(930, 0.15147951245307922)\n", - "(931, 0.151463121175766)\n", - "(932, 0.15144680440425873)\n", - "(933, 0.15143048763275146)\n", - "(934, 0.15141423046588898)\n", - "(935, 0.15139798820018768)\n", - "(936, 0.15138179063796997)\n", - "(937, 0.15136566758155823)\n", - "(938, 0.1513494998216629)\n", - "(939, 0.15133339166641235)\n", - "(940, 0.15131734311580658)\n", - "(941, 0.1513012945652008)\n", - "(942, 0.151285320520401)\n", - "(943, 0.1512693464756012)\n", - "(944, 0.15125341713428497)\n", - "(945, 0.15123751759529114)\n", - "(946, 0.15122166275978088)\n", - "(947, 0.15120580792427063)\n", - "(948, 0.15119002759456635)\n", - "(949, 0.15117423236370087)\n", - "(950, 0.15115846693515778)\n", - "(951, 0.15114276111125946)\n", - "(952, 0.15112711489200592)\n", - "(953, 0.15111148357391357)\n", - "(954, 0.1510958969593048)\n", - "(955, 0.15108031034469604)\n", - "(956, 0.15106475353240967)\n", - "(957, 0.15104922652244568)\n", - "(958, 0.15103374421596527)\n", - "(959, 0.15101833641529083)\n", - "(960, 0.1510029137134552)\n", - "(961, 0.15098750591278076)\n", - "(962, 0.1509721726179123)\n", - "(963, 0.15095680952072144)\n", - "(964, 0.15094155073165894)\n", - "(965, 0.15092626214027405)\n", - "(966, 0.15091104805469513)\n", - "(967, 0.15089581906795502)\n", - "(968, 0.15088066458702087)\n", - "(969, 0.15086551010608673)\n", - "(970, 0.15085041522979736)\n", - "(971, 0.1508353352546692)\n", - "(972, 0.1508202850818634)\n", - "(973, 0.1508052945137024)\n", - "(974, 0.150790274143219)\n", - "(975, 0.15077531337738037)\n", - "(976, 0.15076039731502533)\n", - "(977, 0.15074552595615387)\n", - "(978, 0.1507306545972824)\n", - "(979, 0.15071578323841095)\n", - "(980, 0.15070100128650665)\n", - "(981, 0.15068617463111877)\n", - "(982, 0.15067146718502045)\n", - "(983, 0.15065672993659973)\n", - "(984, 0.15064209699630737)\n", - "(985, 0.15062737464904785)\n", - "(986, 0.15061277151107788)\n", - "(987, 0.15059815347194672)\n", - "(988, 0.15058356523513794)\n", - "(989, 0.15056905150413513)\n", - "(990, 0.15055453777313232)\n", - "(991, 0.1505400538444519)\n", - "(992, 0.15052558481693268)\n", - "(993, 0.15051111578941345)\n", - "(994, 0.1504967212677002)\n", - "(995, 0.15048235654830933)\n", - "(996, 0.15046802163124084)\n", - "(997, 0.15045368671417236)\n", - "(998, 0.15043944120407104)\n", - "(999, 0.15042513608932495)\n" + "(655, tensor(0.2077))\n", + "(656, tensor(0.2077))\n", + "(657, tensor(0.2077))\n", + "(658, tensor(0.2077))\n", + "(659, tensor(0.2076))\n", + "(660, tensor(0.2076))\n", + "(661, tensor(0.2076))\n", + "(662, tensor(0.2076))\n", + "(663, tensor(0.2075))\n", + "(664, tensor(0.2075))\n", + "(665, tensor(0.2075))\n", + "(666, tensor(0.2075))\n", + "(667, tensor(0.2074))\n", + "(668, tensor(0.2074))\n", + "(669, tensor(0.2074))\n", + "(670, tensor(0.2074))\n", + "(671, tensor(0.2073))\n", + "(672, tensor(0.2073))\n", + "(673, tensor(0.2073))\n", + "(674, tensor(0.2073))\n", + "(675, tensor(0.2073))\n", + "(676, tensor(0.2072))\n", + "(677, tensor(0.2072))\n", + "(678, tensor(0.2072))\n", + "(679, tensor(0.2072))\n", + "(680, tensor(0.2071))\n", + "(681, tensor(0.2071))\n", + "(682, tensor(0.2071))\n", + "(683, tensor(0.2071))\n", + "(684, tensor(0.2070))\n", + "(685, tensor(0.2070))\n", + "(686, tensor(0.2070))\n", + "(687, tensor(0.2070))\n", + "(688, tensor(0.2070))\n", + "(689, tensor(0.2069))\n", + "(690, tensor(0.2069))\n", + "(691, tensor(0.2069))\n", + "(692, tensor(0.2069))\n", + "(693, tensor(0.2068))\n", + "(694, tensor(0.2068))\n", + "(695, tensor(0.2068))\n", + "(696, tensor(0.2068))\n", + "(697, tensor(0.2068))\n", + "(698, tensor(0.2067))\n", + "(699, tensor(0.2067))\n", + "(700, tensor(0.2067))\n", + "(701, tensor(0.2067))\n", + "(702, tensor(0.2067))\n", + "(703, tensor(0.2066))\n", + "(704, tensor(0.2066))\n", + "(705, tensor(0.2066))\n", + "(706, tensor(0.2066))\n", + "(707, tensor(0.2065))\n", + "(708, tensor(0.2065))\n", + "(709, tensor(0.2065))\n", + "(710, tensor(0.2065))\n", + "(711, tensor(0.2065))\n", + "(712, tensor(0.2064))\n", + "(713, tensor(0.2064))\n", + "(714, tensor(0.2064))\n", + "(715, tensor(0.2064))\n", + "(716, tensor(0.2064))\n", + "(717, tensor(0.2063))\n", + "(718, tensor(0.2063))\n", + "(719, tensor(0.2063))\n", + "(720, tensor(0.2063))\n", + "(721, tensor(0.2063))\n", + "(722, tensor(0.2062))\n", + "(723, tensor(0.2062))\n", + "(724, tensor(0.2062))\n", + "(725, tensor(0.2062))\n", + "(726, tensor(0.2062))\n", + "(727, tensor(0.2061))\n", + "(728, tensor(0.2061))\n", + "(729, tensor(0.2061))\n", + "(730, tensor(0.2061))\n", + "(731, tensor(0.2061))\n", + "(732, tensor(0.2061))\n", + "(733, tensor(0.2060))\n", + "(734, tensor(0.2060))\n", + "(735, tensor(0.2060))\n", + "(736, tensor(0.2060))\n", + "(737, tensor(0.2060))\n", + "(738, tensor(0.2059))\n", + "(739, tensor(0.2059))\n", + "(740, tensor(0.2059))\n", + "(741, tensor(0.2059))\n", + "(742, tensor(0.2059))\n", + "(743, tensor(0.2058))\n", + "(744, tensor(0.2058))\n", + "(745, tensor(0.2058))\n", + "(746, tensor(0.2058))\n", + "(747, tensor(0.2058))\n", + "(748, tensor(0.2058))\n", + "(749, tensor(0.2057))\n", + "(750, tensor(0.2057))\n", + "(751, tensor(0.2057))\n", + "(752, tensor(0.2057))\n", + "(753, tensor(0.2057))\n", + "(754, tensor(0.2057))\n", + "(755, tensor(0.2056))\n", + "(756, tensor(0.2056))\n", + "(757, tensor(0.2056))\n", + "(758, tensor(0.2056))\n", + "(759, tensor(0.2056))\n", + "(760, tensor(0.2055))\n", + "(761, tensor(0.2055))\n", + "(762, tensor(0.2055))\n", + "(763, tensor(0.2055))\n", + "(764, tensor(0.2055))\n", + "(765, tensor(0.2055))\n", + "(766, tensor(0.2054))\n", + "(767, tensor(0.2054))\n", + "(768, tensor(0.2054))\n", + "(769, tensor(0.2054))\n", + "(770, tensor(0.2054))\n", + "(771, tensor(0.2054))\n", + "(772, tensor(0.2053))\n", + "(773, tensor(0.2053))\n", + "(774, tensor(0.2053))\n", + "(775, tensor(0.2053))\n", + "(776, tensor(0.2053))\n", + "(777, tensor(0.2053))\n", + "(778, tensor(0.2052))\n", + "(779, tensor(0.2052))\n", + "(780, tensor(0.2052))\n", + "(781, tensor(0.2052))\n", + "(782, tensor(0.2052))\n", + "(783, tensor(0.2052))\n", + "(784, tensor(0.2052))\n", + "(785, tensor(0.2051))\n", + "(786, tensor(0.2051))\n", + "(787, tensor(0.2051))\n", + "(788, tensor(0.2051))\n", + "(789, tensor(0.2051))\n", + "(790, tensor(0.2051))\n", + "(791, tensor(0.2050))\n", + "(792, tensor(0.2050))\n", + "(793, tensor(0.2050))\n", + "(794, tensor(0.2050))\n", + "(795, tensor(0.2050))\n", + "(796, tensor(0.2050))\n", + "(797, tensor(0.2050))\n", + "(798, tensor(0.2049))\n", + "(799, tensor(0.2049))\n", + "(800, tensor(0.2049))\n", + "(801, tensor(0.2049))\n", + "(802, tensor(0.2049))\n", + "(803, tensor(0.2049))\n", + "(804, tensor(0.2048))\n", + "(805, tensor(0.2048))\n", + "(806, tensor(0.2048))\n", + "(807, tensor(0.2048))\n", + "(808, tensor(0.2048))\n", + "(809, tensor(0.2048))\n", + "(810, tensor(0.2048))\n", + "(811, tensor(0.2047))\n", + "(812, tensor(0.2047))\n", + "(813, tensor(0.2047))\n", + "(814, tensor(0.2047))\n", + "(815, tensor(0.2047))\n", + "(816, tensor(0.2047))\n", + "(817, tensor(0.2047))\n", + "(818, tensor(0.2046))\n", + "(819, tensor(0.2046))\n", + "(820, tensor(0.2046))\n", + "(821, tensor(0.2046))\n", + "(822, tensor(0.2046))\n", + "(823, tensor(0.2046))\n", + "(824, tensor(0.2046))\n", + "(825, tensor(0.2045))\n", + "(826, tensor(0.2045))\n", + "(827, tensor(0.2045))\n", + "(828, tensor(0.2045))\n", + "(829, tensor(0.2045))\n", + "(830, tensor(0.2045))\n", + "(831, tensor(0.2045))\n", + "(832, tensor(0.2044))\n", + "(833, tensor(0.2044))\n", + "(834, tensor(0.2044))\n", + "(835, tensor(0.2044))\n", + "(836, tensor(0.2044))\n", + "(837, tensor(0.2044))\n", + "(838, tensor(0.2044))\n", + "(839, tensor(0.2044))\n", + "(840, tensor(0.2043))\n", + "(841, tensor(0.2043))\n", + "(842, tensor(0.2043))\n", + "(843, tensor(0.2043))\n", + "(844, tensor(0.2043))\n", + "(845, tensor(0.2043))\n", + "(846, tensor(0.2043))\n", + "(847, tensor(0.2043))\n", + "(848, tensor(0.2042))\n", + "(849, tensor(0.2042))\n", + "(850, tensor(0.2042))\n", + "(851, tensor(0.2042))\n", + "(852, tensor(0.2042))\n", + "(853, tensor(0.2042))\n", + "(854, tensor(0.2042))\n", + "(855, tensor(0.2042))\n", + "(856, tensor(0.2041))\n", + "(857, tensor(0.2041))\n", + "(858, tensor(0.2041))\n", + "(859, tensor(0.2041))\n", + "(860, tensor(0.2041))\n", + "(861, tensor(0.2041))\n", + "(862, tensor(0.2041))\n", + "(863, tensor(0.2041))\n", + "(864, tensor(0.2040))\n", + "(865, tensor(0.2040))\n", + "(866, tensor(0.2040))\n", + "(867, tensor(0.2040))\n", + "(868, tensor(0.2040))\n", + "(869, tensor(0.2040))\n", + "(870, tensor(0.2040))\n", + "(871, tensor(0.2040))\n", + "(872, tensor(0.2039))\n", + "(873, tensor(0.2039))\n", + "(874, tensor(0.2039))\n", + "(875, tensor(0.2039))\n", + "(876, tensor(0.2039))\n", + "(877, tensor(0.2039))\n", + "(878, tensor(0.2039))\n", + "(879, tensor(0.2039))\n", + "(880, tensor(0.2039))\n", + "(881, tensor(0.2038))\n", + "(882, tensor(0.2038))\n", + "(883, tensor(0.2038))\n", + "(884, tensor(0.2038))\n", + "(885, tensor(0.2038))\n", + "(886, tensor(0.2038))\n", + "(887, tensor(0.2038))\n", + "(888, tensor(0.2038))\n", + "(889, tensor(0.2037))\n", + "(890, tensor(0.2037))\n", + "(891, tensor(0.2037))\n", + "(892, tensor(0.2037))\n", + "(893, tensor(0.2037))\n", + "(894, tensor(0.2037))\n", + "(895, tensor(0.2037))\n", + "(896, tensor(0.2037))\n", + "(897, tensor(0.2037))\n", + "(898, tensor(0.2036))\n", + "(899, tensor(0.2036))\n", + "(900, tensor(0.2036))\n", + "(901, tensor(0.2036))\n", + "(902, tensor(0.2036))\n", + "(903, tensor(0.2036))\n", + "(904, tensor(0.2036))\n", + "(905, tensor(0.2036))\n", + "(906, tensor(0.2036))\n", + "(907, tensor(0.2036))\n", + "(908, tensor(0.2035))\n", + "(909, tensor(0.2035))\n", + "(910, tensor(0.2035))\n", + "(911, tensor(0.2035))\n", + "(912, tensor(0.2035))\n", + "(913, tensor(0.2035))\n", + "(914, tensor(0.2035))\n", + "(915, tensor(0.2035))\n", + "(916, tensor(0.2035))\n", + "(917, tensor(0.2034))\n", + "(918, tensor(0.2034))\n", + "(919, tensor(0.2034))\n", + "(920, tensor(0.2034))\n", + "(921, tensor(0.2034))\n", + "(922, tensor(0.2034))\n", + "(923, tensor(0.2034))\n", + "(924, tensor(0.2034))\n", + "(925, tensor(0.2034))\n", + "(926, tensor(0.2034))\n", + "(927, tensor(0.2033))\n", + "(928, tensor(0.2033))\n", + "(929, tensor(0.2033))\n", + "(930, tensor(0.2033))\n", + "(931, tensor(0.2033))\n", + "(932, tensor(0.2033))\n", + "(933, tensor(0.2033))\n", + "(934, tensor(0.2033))\n", + "(935, tensor(0.2033))\n", + "(936, tensor(0.2033))\n", + "(937, tensor(0.2032))\n", + "(938, tensor(0.2032))\n", + "(939, tensor(0.2032))\n", + "(940, tensor(0.2032))\n", + "(941, tensor(0.2032))\n", + "(942, tensor(0.2032))\n", + "(943, tensor(0.2032))\n", + "(944, tensor(0.2032))\n", + "(945, tensor(0.2032))\n", + "(946, tensor(0.2032))\n", + "(947, tensor(0.2032))\n", + "(948, tensor(0.2031))\n", + "(949, tensor(0.2031))\n", + "(950, tensor(0.2031))\n", + "(951, tensor(0.2031))\n", + "(952, tensor(0.2031))\n", + "(953, tensor(0.2031))\n", + "(954, tensor(0.2031))\n", + "(955, tensor(0.2031))\n", + "(956, tensor(0.2031))\n", + "(957, tensor(0.2031))\n", + "(958, tensor(0.2031))\n", + "(959, tensor(0.2030))\n", + "(960, tensor(0.2030))\n", + "(961, tensor(0.2030))\n", + "(962, tensor(0.2030))\n", + "(963, tensor(0.2030))\n", + "(964, tensor(0.2030))\n", + "(965, tensor(0.2030))\n", + "(966, tensor(0.2030))\n", + "(967, tensor(0.2030))\n", + "(968, tensor(0.2030))\n", + "(969, tensor(0.2030))\n", + "(970, tensor(0.2029))\n", + "(971, tensor(0.2029))\n", + "(972, tensor(0.2029))\n", + "(973, tensor(0.2029))\n", + "(974, tensor(0.2029))\n", + "(975, tensor(0.2029))\n", + "(976, tensor(0.2029))\n", + "(977, tensor(0.2029))\n", + "(978, tensor(0.2029))\n", + "(979, tensor(0.2029))\n", + "(980, tensor(0.2029))\n", + "(981, tensor(0.2028))\n", + "(982, tensor(0.2028))\n", + "(983, tensor(0.2028))\n", + "(984, tensor(0.2028))\n", + "(985, tensor(0.2028))\n", + "(986, tensor(0.2028))\n", + "(987, tensor(0.2028))\n", + "(988, tensor(0.2028))\n", + "(989, tensor(0.2028))\n", + "(990, tensor(0.2028))\n", + "(991, tensor(0.2028))\n", + "(992, tensor(0.2028))\n", + "(993, tensor(0.2027))\n", + "(994, tensor(0.2027))\n", + "(995, tensor(0.2027))\n", + "(996, tensor(0.2027))\n", + "(997, tensor(0.2027))\n", + "(998, tensor(0.2027))\n", + "(999, tensor(0.2027))\n" ] } ], @@ -1138,7 +1139,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -1146,25 +1147,11 @@ "output_type": "stream", "text": [ "data is\n", - "\n", - " 1.0270 0.9022\n", - "[torch.FloatTensor of size 1x2]\n", - "\n", - "Variable containing:\n", - "1.00000e-02 *\n", - " -2.6297 -2.6428\n", - "[torch.FloatTensor of size 1x2]\n", - "\n", + "tensor([[0.9169, 0.9204]])\n", + "tensor([[-0.0209, -0.0191]])\n", "data is\n", - "\n", - "-0.3595\n", - "[torch.FloatTensor of size 1]\n", - "\n", - "Variable containing:\n", - "1.00000e-03 *\n", - " 5.8335\n", - "[torch.FloatTensor of size 1]\n", - "\n" + "tensor([-0.2480])\n", + "tensor([-0.0018])\n" ] } ], @@ -1178,7 +1165,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -1187,7 +1174,7 @@ }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -1196,7 +1183,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -1205,27 +1192,22 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Final gradient descend: [Parameter containing:\n", - " 1.0270 0.9022\n", - "[torch.FloatTensor of size 1x2]\n", - ", Parameter containing:\n", - "-0.3595\n", - "[torch.FloatTensor of size 1]\n", - "]\n" + "('Final gradient descend:', [Parameter containing:\n", + "tensor([[0.9169, 0.9204]], requires_grad=True), Parameter containing:\n", + "tensor([-0.2480], requires_grad=True)])\n" ] }, { "data": { - "image/png": "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\nyEs01TSRmp2K3WlDSklzXQvuZi9zV0znyk8uSMgCaTAQ5KmfvEDZgdNkj8jEkWzvEIfRi6CWO7//\nsV495JQoH6zawgerS+LOrddXNjJ21kiuvW95P0YGL/56Dcd2lJJdkNnh5xAKhqg+VctN9199zqn2\ncCjMqQPllO4vRw+HySnIYsysUb3akEdKyYert/LuC5txJjtJyUz6aEqvugkJ3PqN62OeZk8Un8fP\nkW3H2PnmPtxNHlypTmYsmczY2aN7t3JvWZkxdfSzn4HNBseOQXHxR9VWlXYJTwgxLyjEVGAj0LYa\nOwI4A8yTUlbG+94L7ansbTUOj219bSfuJuNyhRPzmbtyJiOnFiZst4y72cPvvvYXsvIz4k5X1VU0\nMOmycay4Z0k/Rtc3fv/A39p3xcQSDuvUV9TztSe+cMHTeE21zZQfriAUDJGU5qJwYv45C/ax1J6u\n48/f/Rc55/WkAGMk2VjdxJnjVWgCrvvSSibPH9crp9y7SkpJ6d5TbH51O+WHz4AQCCGYcsUEZl81\nPebByESpKa/juf95mdZGN65UJ1a7lYAvgLvJQ1Kai49/4/penYZs5/XCuHGQmQk//zlceWXvX+Mi\nNmB7Kksp9wDt9RYuZMroQjmSHMxdOZPZV00n4AtiMmtdepPoa94Wb3tXtnhsDisNVU39FFXfCvqC\nOJLjT2uYTBp6WBrnJ6xdSwieFi+v/+1tDm87BlK2FwS0Oa0svHU+0xdNjpv4D5ccQ2gdtyi3NLg5\nuOUIAV8AzaThc/t589/v8cFLW5h55RSu/OSCmIcSe5MQgpFTixg5tah9Ss+RZO90F10iuJs9PPPY\nKqQuz1m/s9otkQN7LTzz+Go+/aPbcaX08kK43Q7/8z/wrW8Z5xhuuMGYUhrb/VplQ9GgPJh2Pk3T\nsDttAyIZAFhsFvTIDpJ4QsHwoOkJnJabis8dv3eC3xvAkWzvdKtlG6/bxzOPreLo9hNkj8gktyiH\nvOIccouycSY7eO1Pb7DltR1xn6Ol3o3lvDUXT4uXfe8fAF2SlOrCmeTA5rCSmpVCTmEW2zfsYeNT\n73Qpxt7kTHaQmpUyIJMBwP4PD+Np9pKSGb2YYkpmMp5mDwc2He79iwsBt90GBw8aU0hvvmk05tm9\nu/evNYglPCFIKYv7YnQwkKVkJpNTkNk+jRWLz+Nj0vxx/RRV35q9fDruJnfcxzRWN7XvyuqKnW/s\n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\noKUHFRSLlgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1235,7 +1217,7 @@ "source": [ "import matplotlib.pyplot as plt\n", "\n", - "print \"Final gradient descend:\", w\n", + "print(\"Final gradient descend:\", w)\n", "# plot the data and separating line\n", "plt.scatter(X[:,0], X[:,1], c=T.reshape(N), s=100, alpha=0.5)\n", "x_axis = np.linspace(-6, 6, 100)\n", @@ -1246,22 +1228,13 @@ "plt.ylabel('X(2)')\n", "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1273,7 +1246,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.14" + "version": "2.7.15" } }, "nbformat": 4, diff --git a/LogisticPytorch.py b/LogisticPytorch.py new file mode 100644 index 0000000..2045a51 --- /dev/null +++ b/LogisticPytorch.py @@ -0,0 +1,130 @@ + +# coding: utf-8 + +# In[9]: + + +import numpy as np +import torch +import torch.nn.functional as F +from torch.autograd import Variable + + +# In[10]: + + +N = 100 +D = 2 + + +# In[11]: + + +X = np.random.randn(N,D)*2 + + +# In[12]: + + +# center the first N/2 points at (-2,-2) +X[:int(N / 2), :] = X[:int(N / 2), :] - 2 * np.ones((int(N / 2), D)) + +# center the last N/2 points at (2, 2) +X[int(N / 2):, :] = X[int(N / 2):, :] + 2 * np.ones((int(N / 2), D)) + +# labels: first N/2 are 0, last N/2 are 1 +T = np.array([0] * int(N / 2) + [1] * int(N / 2)).reshape(100, 1) + + +# In[13]: + + +x_data = Variable(torch.Tensor(X)) +y_data = Variable(torch.Tensor(T)) + + +# In[14]: + + +class Model(torch.nn.Module): + def __init__(self): + super(Model, self).__init__() + self.linear = torch.nn.Linear(2, 1) # 2 in and 1 out + + def forward(self, x): + y_pred = torch.sigmoid(self.linear(x)) + return y_pred + +# Our model +model = Model() + + +# In[15]: + + +criterion = torch.nn.BCELoss(size_average=True) +optimizer = torch.optim.SGD(model.parameters(), lr=0.01) + + +# In[16]: + + +# Training loop +for epoch in range(1000): + # Forward pass: Compute predicted y by passing x to the model + y_pred = model(x_data) + + # Compute and print loss + loss = criterion(y_pred, y_data) + print(epoch, loss.data[0]) + + # Zero gradients, perform a backward pass, and update the weights. + optimizer.zero_grad() + loss.backward() + optimizer.step() + + +# In[17]: + + +w = np.array([]) +for f in model.parameters(): + print('data is') + print(f.data) + print(f.grad) + + +# In[18]: + + +w = list(model.parameters()) + + +# In[19]: + + +w0 = w[0].data.numpy() + + +# In[20]: + + +w1 = w[1].data.numpy() + + +# In[21]: + + +import matplotlib.pyplot as plt + +print("Final gradient descend:", w) +# plot the data and separating line +plt.scatter(X[:,0], X[:,1], c=T.reshape(N), s=100, alpha=0.5) +x_axis = np.linspace(-6, 6, 100) +y_axis = -(w1[0] + x_axis*w0[0][0]) / w0[0][1] +line_up, = plt.plot(x_axis, y_axis,'r--', label='gradient descent') +plt.legend(handles=[line_up]) +plt.xlabel('X(1)') +plt.ylabel('X(2)') +plt.show() + From d6fdb358e78242b96254bce5f1977f7e7a057216 Mon Sep 17 00:00:00 2001 From: Sunny Date: Sun, 16 Sep 2018 23:40:26 -0400 Subject: [PATCH 2/2] Prettied up README --- LogisticPytorch.png | Bin 0 -> 58130 bytes LogisticPytorch.py | 54 +------------------------------------------- README.md | 3 ++- 3 files changed, 3 insertions(+), 54 deletions(-) create mode 100644 LogisticPytorch.png diff --git a/LogisticPytorch.png b/LogisticPytorch.png new file mode 100644 index 0000000000000000000000000000000000000000..b73329a6d78191addf0f878670c0441edc861085 GIT binary patch literal 58130 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 literal 0 HcmV?d00001 diff --git a/LogisticPytorch.py b/LogisticPytorch.py index 2045a51..4812126 100644 --- a/LogisticPytorch.py +++ b/LogisticPytorch.py @@ -1,31 +1,13 @@ - -# coding: utf-8 - -# In[9]: - - import numpy as np import torch import torch.nn.functional as F from torch.autograd import Variable - -# In[10]: - - N = 100 D = 2 - -# In[11]: - - X = np.random.randn(N,D)*2 - -# In[12]: - - # center the first N/2 points at (-2,-2) X[:int(N / 2), :] = X[:int(N / 2), :] - 2 * np.ones((int(N / 2), D)) @@ -35,17 +17,10 @@ # labels: first N/2 are 0, last N/2 are 1 T = np.array([0] * int(N / 2) + [1] * int(N / 2)).reshape(100, 1) - -# In[13]: - - x_data = Variable(torch.Tensor(X)) y_data = Variable(torch.Tensor(T)) -# In[14]: - - class Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() @@ -58,17 +33,9 @@ def forward(self, x): # Our model model = Model() - -# In[15]: - - criterion = torch.nn.BCELoss(size_average=True) optimizer = torch.optim.SGD(model.parameters(), lr=0.01) - -# In[16]: - - # Training loop for epoch in range(1000): # Forward pass: Compute predicted y by passing x to the model @@ -83,38 +50,18 @@ def forward(self, x): loss.backward() optimizer.step() - -# In[17]: - - w = np.array([]) for f in model.parameters(): print('data is') print(f.data) print(f.grad) - -# In[18]: - - w = list(model.parameters()) - -# In[19]: - - w0 = w[0].data.numpy() - -# In[20]: - - w1 = w[1].data.numpy() - -# In[21]: - - import matplotlib.pyplot as plt print("Final gradient descend:", w) @@ -127,4 +74,5 @@ def forward(self, x): plt.xlabel('X(1)') plt.ylabel('X(2)') plt.show() +#plt.savefig('LogisticPytorch.png') diff --git a/README.md b/README.md index 3e62064..0bd0188 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ -# notebooks +# Pytorch logistic regression example +![Result](LogisticPytorch.png) \ No newline at end of file