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.png b/LogisticPytorch.png new file mode 100644 index 0000000..b73329a Binary files /dev/null and b/LogisticPytorch.png differ diff --git a/LogisticPytorch.py b/LogisticPytorch.py new file mode 100644 index 0000000..4812126 --- /dev/null +++ b/LogisticPytorch.py @@ -0,0 +1,78 @@ +import numpy as np +import torch +import torch.nn.functional as F +from torch.autograd import Variable + +N = 100 +D = 2 + +X = np.random.randn(N,D)*2 + +# 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) + +x_data = Variable(torch.Tensor(X)) +y_data = Variable(torch.Tensor(T)) + + +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() + +criterion = torch.nn.BCELoss(size_average=True) +optimizer = torch.optim.SGD(model.parameters(), lr=0.01) + +# 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() + +w = np.array([]) +for f in model.parameters(): + print('data is') + print(f.data) + print(f.grad) + +w = list(model.parameters()) + +w0 = w[0].data.numpy() + +w1 = w[1].data.numpy() + +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() +#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