You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Least_squares.ipynb 455 kB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# Least squares\n",
  8. "\n",
  9. "A mathematical procedure for finding the best-fitting curve to a given set of points by minimizing the sum of the squares of the offsets (\"the residuals\") of the points from the curve. The sum of the squares of the offsets is used instead of the offset absolute values because this allows the residuals to be treated as a continuous differentiable quantity. However, because squares of the offsets are used, outlying points can have a disproportionate effect on the fit, a property which may or may not be desirable depending on the problem at hand. \n"
  10. ]
  11. },
  12. {
  13. "cell_type": "markdown",
  14. "metadata": {},
  15. "source": [
  16. "### Show the data\n"
  17. ]
  18. },
  19. {
  20. "cell_type": "code",
  21. "execution_count": 2,
  22. "metadata": {},
  23. "outputs": [
  24. {
  25. "data": {
  26. "image/png": "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\n",
  27. "text/plain": [
  28. "<Figure size 432x288 with 1 Axes>"
  29. ]
  30. },
  31. "metadata": {
  32. "needs_background": "light"
  33. },
  34. "output_type": "display_data"
  35. }
  36. ],
  37. "source": [
  38. "%matplotlib inline\n",
  39. "\n",
  40. "import matplotlib.pyplot as plt\n",
  41. "import numpy as np\n",
  42. "import sklearn\n",
  43. "from sklearn import datasets\n",
  44. "\n",
  45. "# load data\n",
  46. "d = datasets.load_diabetes()\n",
  47. "\n",
  48. "X = d.data[:, 2]\n",
  49. "Y = d.target\n",
  50. "\n",
  51. "# draw original data\n",
  52. "plt.scatter(X, Y)\n",
  53. "plt.xlabel(\"X\")\n",
  54. "plt.ylabel(\"Y\")\n",
  55. "plt.show()\n"
  56. ]
  57. },
  58. {
  59. "cell_type": "markdown",
  60. "metadata": {},
  61. "source": [
  62. "### Theory\n",
  63. "For $N$ observation data:\n",
  64. "$$\n",
  65. "\\mathbf{X} = \\{x_1, x_2, ..., x_N \\} \\\\\n",
  66. "\\mathbf{Y} = \\{y_1, y_2, ..., y_N \\}\n",
  67. "$$\n",
  68. "\n",
  69. "We want to find the model which can predict the data. The simplest model is linear model, which has the form of \n",
  70. "$$\n",
  71. "y = ax + b\n",
  72. "$$\n",
  73. "\n",
  74. "The purpose is to find parameters $a, b$ which best fit the model to the observation data. \n",
  75. "\n",
  76. "We use the sum of squares to measure the differences (loss function) between the model's prediction and observation data:\n",
  77. "$$\n",
  78. "L = \\sum_{i=1}^{N} (y_i - a x_i - b)^2\n",
  79. "$$\n",
  80. "\n",
  81. "To make the loss function minimize, we can find the parameters:\n",
  82. "$$\n",
  83. "\\frac{\\partial L}{\\partial a} = -2 \\sum_{i=1}^{N} (y_i - a x_i - b) x_i \\\\\n",
  84. "\\frac{\\partial L}{\\partial b} = -2 \\sum_{i=1}^{N} (y_i - a x_i - b)\n",
  85. "$$\n",
  86. "When the loss is minimized, therefore the partial difference is zero, then we can get:\n",
  87. "$$\n",
  88. "-2 \\sum_{i=1}^{N} (y_i - a x_i - b) x_i = 0 \\\\\n",
  89. "-2 \\sum_{i=1}^{N} (y_i - a x_i - b) = 0 \\\\\n",
  90. "$$\n",
  91. "\n",
  92. "We reoder the items as:\n",
  93. "$$\n",
  94. "a \\sum x_i^2 + b \\sum x_i = \\sum y_i x_i \\\\\n",
  95. "a \\sum x_i + b N = \\sum y_i\n",
  96. "$$\n",
  97. "By solving the linear equation we can obtain the model parameters."
  98. ]
  99. },
  100. {
  101. "cell_type": "markdown",
  102. "metadata": {},
  103. "source": [
  104. "### Program"
  105. ]
  106. },
  107. {
  108. "cell_type": "code",
  109. "execution_count": 2,
  110. "metadata": {},
  111. "outputs": [
  112. {
  113. "name": "stdout",
  114. "output_type": "stream",
  115. "text": [
  116. "a = 949.435260, b = 152.133484\n"
  117. ]
  118. },
  119. {
  120. "data": {
  121. "image/png": "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h+gw1WgeffRRysrKPLVDEUm6LVhKBumaeExhjbLo40BKiZSSd955x3bf8ePHJ6FF9jz66KNcc801ZGdnp7opNZq6atmmY1inwp5aY9Enwrp6+OGH6dKlC126dOHRUL6djRs30rFjR4YMGUKXLl3YvHlzRMGQe++9l44dO3LmmWdy9dVX8+CDDwIwbNgwZs6cCWgFRsaMGcPJJ59M165dWbNmDQCLFy/m9NNPJy8vjzPOOIO1a62tpPLycq666ipOOOEELr30UsrLD3/Z/vSnP5Gfn0/nzp0ZM2YMAI899hhbt26lT58+9OnTx3Q/hT111bI1C99MdVinwppaYdEnwrpaunQpzz//PF9++SVSSk477TTOPvtsmjRpwrp165g6dSo9e/aMOOarr75i1qxZLF++nGAwyMknn0yPHj0Mz9+sWTO+/vprnnrqKR588EH+85//0KlTJz799FPq1avHBx98wB133FGdGdOIp59+muzsbFavXs2KFSs4+eSTq9+77777aNq0KZWVlZx77rmsWLGCW265hYcffpgFCxbQrFkz0/26devm6Z7VJeqqZasSj7mgshIyM+33SwK1QujjzZpnxGeffcall15Ko0aNALjsssv49NNPGThwIO3atYsReYCFCxcyaNAgGjZsSMOGDbnkkktMz3/ZZZcB0KNHj+p0xnv37mXo0KGsW7cOIQTBYNCyjZ988gm33HILAN26dYsQ6Ndee40pU6ZQUVHBtm3b+Pbbbw0F3Ol+iSTdojictMfpgqWa2DcrVFinA9auhTvvhCOPhOefT3VrgFoi9Mm2rnTxjwc93XFmZiYVFRUA3H333fTp04fZs2ezceNGzjnnHE/n/v7773nwwQf56quvaNKkCcOGDePAgQOe90sk6ebrdtoeJ5ZtTe2bHWr1qwklJTBuHDz3HGRlwahRICUIkeqW1Q4ffSL8hmeddRZFRUWUlZWxf/9+Zs+ezVlnnWV5TK9evXjrrbc4cOAA+/bt4+2333Z1zb1795Kbq32BXnjhBdv9w1Mhf/PNN9VlDH/++WcaNWpE48aN2b59O++++271MUceeSS//PKL7X7JIt183U7b4ySlbk3tWzpQoyKa9uyBwkI47jh44QW4+WbYsAHuuistRB5qiUWfCL/hySefzLBhwzj11FMB+MMf/kBeXh4bN240PeaUU05h4MCBdOvW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\n",
  122. "text/plain": [
  123. "<Figure size 432x288 with 1 Axes>"
  124. ]
  125. },
  126. "metadata": {
  127. "needs_background": "light"
  128. },
  129. "output_type": "display_data"
  130. }
  131. ],
  132. "source": [
  133. "N = X.shape[0]\n",
  134. "\n",
  135. "S_X2 = np.sum(X*X)\n",
  136. "S_X = np.sum(X)\n",
  137. "S_XY = np.sum(X*Y)\n",
  138. "S_Y = np.sum(Y)\n",
  139. "\n",
  140. "A1 = np.array([[S_X2, S_X], \n",
  141. " [S_X, N]])\n",
  142. "B1 = np.array([S_XY, S_Y])\n",
  143. "\n",
  144. "coeff = np.linalg.inv(A1).dot(B1)\n",
  145. "\n",
  146. "print('a = %f, b = %f' % (coeff[0], coeff[1]))\n",
  147. "\n",
  148. "x_min = np.min(X)\n",
  149. "x_max = np.max(X)\n",
  150. "y_min = coeff[0] * x_min + coeff[1]\n",
  151. "y_max = coeff[0] * x_max + coeff[1]\n",
  152. "\n",
  153. "plt.scatter(X, Y, label='original data')\n",
  154. "plt.plot([x_min, x_max], [y_min, y_max], 'r', label='model')\n",
  155. "plt.legend()\n",
  156. "plt.show()"
  157. ]
  158. },
  159. {
  160. "cell_type": "markdown",
  161. "metadata": {},
  162. "source": [
  163. "## 如何使用迭代的方法求出模型参数\n",
  164. "\n",
  165. "当数据比较多的时候,或者模型比较复杂,无法直接使用解析的方式求出模型参数。因此更为常用的方式是,通过迭代的方式逐步逼近模型的参数。\n",
  166. "\n",
  167. "### 梯度下降法\n",
  168. "在机器学习算法中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,以便寻找到最优的参数。在求解机器学习参数的优化算法中,使用较多的是基于梯度下降的优化算法(Gradient Descent, GD)。\n",
  169. "\n",
  170. "梯度下降法有很多优点,其中,在梯度下降法的求解过程中,只需求解损失函数的一阶导数,计算的代价比较小,这使得梯度下降法能在很多大规模数据集上得到应用。梯度下降法的含义是通过当前点的梯度方向寻找到新的迭代点。\n",
  171. "\n",
  172. "梯度下降法的基本思想可以类比为一个下山的过程。假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。\n",
  173. "\n",
  174. "\n",
  175. "我们同时可以假设这座山最陡峭的地方是无法通过肉眼立马观察出来的,而是需要一个复杂的工具来测量,同时,这个人此时正好拥有测量出最陡峭方向的能力。所以,此人每走一段距离,都需要一段时间来测量所在位置最陡峭的方向,这是比较耗时的。那么为了在太阳下山之前到达山底,就要尽可能的减少测量方向的次数。这是一个两难的选择,如果测量的频繁,可以保证下山的方向是绝对正确的,但又非常耗时,如果测量的过少,又有偏离轨道的风险。所以需要找到一个合适的测量方向的频率,来确保下山的方向不错误,同时又不至于耗时太多!\n",
  176. "\n",
  177. "\n",
  178. "![gradient_descent](images/gradient_descent.png)\n",
  179. "\n",
  180. "如上图所示,得到了局部最优解。x,y表示的是$\\theta_0$和$\\theta_1$,z方向表示的是花费函数,很明显出发点不同,最后到达的收敛点可能不一样。当然如果是碗状的,那么收敛点就应该是一样的。\n",
  181. "\n",
  182. "对于某一个损失函数\n",
  183. "$$\n",
  184. "L = \\sum_{i=1}^{N} (y_i - a x_i + b)^2\n",
  185. "$$\n",
  186. "\n",
  187. "我们更新的策略是:\n",
  188. "$$\n",
  189. "\\theta^1 = \\theta^0 - \\alpha \\triangledown L(\\theta)\n",
  190. "$$\n",
  191. "其中$\\theta$代表了模型中的参数,例如$a$, $b$\n",
  192. "\n",
  193. "此公式的意义是:L是关于$\\theta$的一个函数,我们当前所处的位置为$\\theta_0$点,要从这个点走到L的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是$\\alpha$,走完这个段步长,就到达了$\\theta_1$这个点!\n",
  194. "\n",
  195. "下面就这个公式的几个常见的疑问:\n",
  196. "\n",
  197. "* **$\\alpha$是什么含义?**\n",
  198. "$\\alpha$在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过$\\alpha$来控制每一步走的距离,以保证不要步子跨的太大扯着蛋,哈哈,其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以$\\alpha$的选择在梯度下降法中往往是很重要的!$\\alpha$不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点!\n",
  199. "![gd_stepsize](images/gd_stepsize.png)\n",
  200. "\n",
  201. "* **为什么要梯度要乘以一个负号?**\n",
  202. "梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文提到,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号\n",
  203. "\n"
  204. ]
  205. },
  206. {
  207. "cell_type": "markdown",
  208. "metadata": {},
  209. "source": [
  210. "### Program"
  211. ]
  212. },
  213. {
  214. "cell_type": "code",
  215. "execution_count": 3,
  216. "metadata": {},
  217. "outputs": [
  218. {
  219. "name": "stdout",
  220. "output_type": "stream",
  221. "text": [
  222. "epoch 0: loss = 4303817.496892, a = 2.826518, b = 90.332322\n",
  223. "epoch 1: loss = 2886806.756007, a = 4.689320, b = 127.204624\n",
  224. "epoch 2: loss = 2650260.562182, a = 6.564882, b = 142.423411\n",
  225. "epoch 3: loss = 2610244.478756, a = 8.443497, b = 148.704446\n",
  226. "epoch 4: loss = 2601826.873313, a = 10.321163, b = 151.296317\n",
  227. "epoch 5: loss = 2598022.583256, a = 12.196235, b = 152.365440\n",
  228. "epoch 6: loss = 2594693.583475, a = 14.068035, b = 152.806033\n",
  229. "epoch 7: loss = 2591324.277053, a = 15.936290, b = 152.987193\n",
  230. "epoch 8: loss = 2587904.879022, a = 17.800890, b = 153.061271\n",
  231. "epoch 9: loss = 2584465.875668, a = 19.661796, b = 153.091151\n",
  232. "epoch 10: loss = 2581025.689621, a = 21.518994, b = 153.102788\n",
  233. "epoch 11: loss = 2577592.886376, a = 23.372484, b = 153.106897\n",
  234. "epoch 12: loss = 2574171.135769, a = 25.222270, b = 153.107901\n",
  235. "epoch 13: loss = 2570761.947715, a = 27.068358, b = 153.107623\n",
  236. "epoch 14: loss = 2567365.917653, a = 28.910755, b = 153.106819\n",
  237. "epoch 15: loss = 2563983.260031, a = 30.749468, b = 153.105798\n",
  238. "epoch 16: loss = 2560614.031657, a = 32.584504, b = 153.104690\n",
  239. "epoch 17: loss = 2557258.224357, a = 34.415871, b = 153.103546\n",
  240. "epoch 18: loss = 2553915.803272, a = 36.243576, b = 153.102390\n",
  241. "epoch 19: loss = 2550586.722666, a = 38.067626, b = 153.101229\n",
  242. "epoch 20: loss = 2547270.932442, a = 39.888028, b = 153.100068\n",
  243. "epoch 21: loss = 2543968.380830, a = 41.704790, b = 153.098909\n",
  244. "epoch 22: loss = 2540679.015496, a = 43.517919, b = 153.097751\n",
  245. "epoch 23: loss = 2537402.783996, a = 45.327423, b = 153.096595\n",
  246. "epoch 24: loss = 2534139.633964, a = 47.133308, b = 153.095442\n",
  247. "epoch 25: loss = 2530889.513189, a = 48.935582, b = 153.094291\n",
  248. "epoch 26: loss = 2527652.369647, a = 50.734252, b = 153.093142\n",
  249. "epoch 27: loss = 2524428.151512, a = 52.529326, b = 153.091995\n",
  250. "epoch 28: loss = 2521216.807162, a = 54.320809, b = 153.090851\n",
  251. "epoch 29: loss = 2518018.285178, a = 56.108711, b = 153.089709\n",
  252. "epoch 30: loss = 2514832.534347, a = 57.893037, b = 153.088570\n",
  253. "epoch 31: loss = 2511659.503661, a = 59.673795, b = 153.087432\n",
  254. "epoch 32: loss = 2508499.142314, a = 61.450992, b = 153.086297\n",
  255. "epoch 33: loss = 2505351.399704, a = 63.224636, b = 153.085164\n",
  256. "epoch 34: loss = 2502216.225431, a = 64.994732, b = 153.084034\n",
  257. "epoch 35: loss = 2499093.569295, a = 66.761289, b = 153.082906\n",
  258. "epoch 36: loss = 2495983.381300, a = 68.524314, b = 153.081780\n",
  259. "epoch 37: loss = 2492885.611645, a = 70.283813, b = 153.080656\n",
  260. "epoch 38: loss = 2489800.210732, a = 72.039794, b = 153.079534\n",
  261. "epoch 39: loss = 2486727.129159, a = 73.792263, b = 153.078415\n",
  262. "epoch 40: loss = 2483666.317722, a = 75.541228, b = 153.077298\n",
  263. "epoch 41: loss = 2480617.727412, a = 77.286695, b = 153.076183\n",
  264. "epoch 42: loss = 2477581.309419, a = 79.028673, b = 153.075070\n",
  265. "epoch 43: loss = 2474557.015125, a = 80.767166, b = 153.073960\n",
  266. "epoch 44: loss = 2471544.796108, a = 82.502184, b = 153.072852\n",
  267. "epoch 45: loss = 2468544.604139, a = 84.233732, b = 153.071746\n",
  268. "epoch 46: loss = 2465556.391180, a = 85.961817, b = 153.070642\n",
  269. "epoch 47: loss = 2462580.109388, a = 87.686447, b = 153.069541\n",
  270. "epoch 48: loss = 2459615.711109, a = 89.407628, b = 153.068441\n",
  271. "epoch 49: loss = 2456663.148878, a = 91.125368, b = 153.067344\n",
  272. "epoch 50: loss = 2453722.375424, a = 92.839672, b = 153.066249\n",
  273. "epoch 51: loss = 2450793.343662, a = 94.550548, b = 153.065157\n",
  274. "epoch 52: loss = 2447876.006693, a = 96.258004, b = 153.064066\n",
  275. "epoch 53: loss = 2444970.317810, a = 97.962044, b = 153.062978\n",
  276. "epoch 54: loss = 2442076.230490, a = 99.662678, b = 153.061892\n",
  277. "epoch 55: loss = 2439193.698395, a = 101.359910, b = 153.060808\n",
  278. "epoch 56: loss = 2436322.675374, a = 103.053749, b = 153.059726\n",
  279. "epoch 57: loss = 2433463.115460, a = 104.744201, b = 153.058646\n",
  280. "epoch 58: loss = 2430614.972868, a = 106.431272, b = 153.057569\n",
  281. "epoch 59: loss = 2427778.201998, a = 108.114970, b = 153.056493\n",
  282. "epoch 60: loss = 2424952.757431, a = 109.795301, b = 153.055420\n",
  283. "epoch 61: loss = 2422138.593930, a = 111.472271, b = 153.054349\n",
  284. "epoch 62: loss = 2419335.666438, a = 113.145889, b = 153.053280\n",
  285. "epoch 63: loss = 2416543.930078, a = 114.816160, b = 153.052213\n",
  286. "epoch 64: loss = 2413763.340154, a = 116.483090, b = 153.051148\n",
  287. "epoch 65: loss = 2410993.852146, a = 118.146688, b = 153.050086\n",
  288. "epoch 66: loss = 2408235.421713, a = 119.806958, b = 153.049026\n",
  289. "epoch 67: loss = 2405488.004692, a = 121.463909, b = 153.047967\n",
  290. "epoch 68: loss = 2402751.557095, a = 123.117547, b = 153.046911\n",
  291. "epoch 69: loss = 2400026.035111, a = 124.767877, b = 153.045857\n",
  292. "epoch 70: loss = 2397311.395102, a = 126.414908, b = 153.044805\n",
  293. "epoch 71: loss = 2394607.593607, a = 128.058645, b = 153.043755\n",
  294. "epoch 72: loss = 2391914.587336, a = 129.699095, b = 153.042707\n",
  295. "epoch 73: loss = 2389232.333175, a = 131.336265, b = 153.041662\n",
  296. "epoch 74: loss = 2386560.788178, a = 132.970161, b = 153.040618\n",
  297. "epoch 75: loss = 2383899.909575, a = 134.600789, b = 153.039577\n",
  298. "epoch 76: loss = 2381249.654764, a = 136.228157, b = 153.038537\n",
  299. "epoch 77: loss = 2378609.981313, a = 137.852271, b = 153.037500\n",
  300. "epoch 78: loss = 2375980.846962, a = 139.473137, b = 153.036465\n",
  301. "epoch 79: loss = 2373362.209618, a = 141.090762, b = 153.035432\n",
  302. "epoch 80: loss = 2370754.027356, a = 142.705152, b = 153.034401\n",
  303. "epoch 81: loss = 2368156.258420, a = 144.316314, b = 153.033371\n",
  304. "epoch 82: loss = 2365568.861218, a = 145.924254, b = 153.032344\n",
  305. "epoch 83: loss = 2362991.794327, a = 147.528979, b = 153.031320\n",
  306. "epoch 84: loss = 2360425.016488, a = 149.130495, b = 153.030297\n",
  307. "epoch 85: loss = 2357868.486607, a = 150.728809, b = 153.029276\n",
  308. "epoch 86: loss = 2355322.163754, a = 152.323926, b = 153.028257\n",
  309. "epoch 87: loss = 2352786.007164, a = 153.915853, b = 153.027240\n",
  310. "epoch 88: loss = 2350259.976233, a = 155.504598, b = 153.026226\n",
  311. "epoch 89: loss = 2347744.030520, a = 157.090165, b = 153.025213\n",
  312. "epoch 90: loss = 2345238.129745, a = 158.672562, b = 153.024202\n",
  313. "epoch 91: loss = 2342742.233790, a = 160.251794, b = 153.023194\n",
  314. "epoch 92: loss = 2340256.302696, a = 161.827869, b = 153.022187\n",
  315. "epoch 93: loss = 2337780.296663, a = 163.400791, b = 153.021182\n",
  316. "epoch 94: loss = 2335314.176054, a = 164.970569, b = 153.020180\n",
  317. "epoch 95: loss = 2332857.901385, a = 166.537207, b = 153.019179\n",
  318. "epoch 96: loss = 2330411.433334, a = 168.100713, b = 153.018180\n",
  319. "epoch 97: loss = 2327974.732732, a = 169.661092, b = 153.017184\n",
  320. "epoch 98: loss = 2325547.760572, a = 171.218351, b = 153.016189\n",
  321. "epoch 99: loss = 2323130.477996, a = 172.772496, b = 153.015197\n",
  322. "epoch 100: loss = 2320722.846308, a = 174.323534, b = 153.014206\n",
  323. "epoch 101: loss = 2318324.826961, a = 175.871469, b = 153.013217\n",
  324. "epoch 102: loss = 2315936.381566, a = 177.416310, b = 153.012231\n",
  325. "epoch 103: loss = 2313557.471885, a = 178.958061, b = 153.011246\n",
  326. "epoch 104: loss = 2311188.059833, a = 180.496729, b = 153.010263\n",
  327. "epoch 105: loss = 2308828.107479, a = 182.032320, b = 153.009282\n",
  328. "epoch 106: loss = 2306477.577040, a = 183.564841, b = 153.008304\n",
  329. "epoch 107: loss = 2304136.430888, a = 185.094297, b = 153.007327\n",
  330. "epoch 108: loss = 2301804.631543, a = 186.620695, b = 153.006352\n",
  331. "epoch 109: loss = 2299482.141674, a = 188.144040, b = 153.005379\n",
  332. "epoch 110: loss = 2297168.924101, a = 189.664339, b = 153.004408\n",
  333. "epoch 111: loss = 2294864.941791, a = 191.181598, b = 153.003439\n",
  334. "epoch 112: loss = 2292570.157861, a = 192.695823, b = 153.002472\n",
  335. "epoch 113: loss = 2290284.535573, a = 194.207021, b = 153.001506\n",
  336. "epoch 114: loss = 2288008.038337, a = 195.715196, b = 153.000543\n",
  337. "epoch 115: loss = 2285740.629708, a = 197.220355, b = 152.999582\n",
  338. "epoch 116: loss = 2283482.273389, a = 198.722505, b = 152.998622\n",
  339. "epoch 117: loss = 2281232.933225, a = 200.221651, b = 152.997665\n",
  340. "epoch 118: loss = 2278992.573208, a = 201.717799, b = 152.996709\n",
  341. "epoch 119: loss = 2276761.157473, a = 203.210955, b = 152.995756\n",
  342. "epoch 120: loss = 2274538.650297, a = 204.701125, b = 152.994804\n",
  343. "epoch 121: loss = 2272325.016100, a = 206.188316, b = 152.993854\n",
  344. "epoch 122: loss = 2270120.219447, a = 207.672532, b = 152.992906\n",
  345. "epoch 123: loss = 2267924.225041, a = 209.153781, b = 152.991960\n",
  346. "epoch 124: loss = 2265736.997727, a = 210.632068, b = 152.991016\n",
  347. "epoch 125: loss = 2263558.502491, a = 212.107398, b = 152.990074\n",
  348. "epoch 126: loss = 2261388.704460, a = 213.579779, b = 152.989133\n",
  349. "epoch 127: loss = 2259227.568898, a = 215.049215, b = 152.988195\n",
  350. "epoch 128: loss = 2257075.061208, a = 216.515713, b = 152.987258\n",
  351. "epoch 129: loss = 2254931.146933, a = 217.979278, b = 152.986323\n",
  352. "epoch 130: loss = 2252795.791751, a = 219.439916, b = 152.985390\n",
  353. "epoch 131: loss = 2250668.961481, a = 220.897634, b = 152.984459\n",
  354. "epoch 132: loss = 2248550.622075, a = 222.352437, b = 152.983530\n",
  355. "epoch 133: loss = 2246440.739622, a = 223.804331, b = 152.982603\n",
  356. "epoch 134: loss = 2244339.280347, a = 225.253321, b = 152.981677\n",
  357. "epoch 135: loss = 2242246.210609, a = 226.699414, b = 152.980754\n",
  358. "epoch 136: loss = 2240161.496903, a = 228.142616, b = 152.979832\n",
  359. "epoch 137: loss = 2238085.105855, a = 229.582931, b = 152.978912\n",
  360. "epoch 138: loss = 2236017.004229, a = 231.020366, b = 152.977994\n",
  361. "epoch 139: loss = 2233957.158916, a = 232.454927, b = 152.977078\n",
  362. "epoch 140: loss = 2231905.536944, a = 233.886619, b = 152.976163\n",
  363. "epoch 141: loss = 2229862.105469, a = 235.315448, b = 152.975251\n",
  364. "epoch 142: loss = 2227826.831783, a = 236.741420, b = 152.974340\n",
  365. "epoch 143: loss = 2225799.683303, a = 238.164541, b = 152.973431\n",
  366. "epoch 144: loss = 2223780.627579, a = 239.584815, b = 152.972524\n",
  367. "epoch 145: loss = 2221769.632292, a = 241.002250, b = 152.971619\n",
  368. "epoch 146: loss = 2219766.665250, a = 242.416850, b = 152.970715\n",
  369. "epoch 147: loss = 2217771.694390, a = 243.828622, b = 152.969813\n",
  370. "epoch 148: loss = 2215784.687776, a = 245.237570, b = 152.968913\n",
  371. "epoch 149: loss = 2213805.613603, a = 246.643701, b = 152.968015\n",
  372. "epoch 150: loss = 2211834.440190, a = 248.047021, b = 152.967119\n",
  373. "epoch 151: loss = 2209871.135983, a = 249.447534, b = 152.966225\n",
  374. "epoch 152: loss = 2207915.669555, a = 250.845246, b = 152.965332\n",
  375. "epoch 153: loss = 2205968.009603, a = 252.240164, b = 152.964441\n",
  376. "epoch 154: loss = 2204028.124951, a = 253.632292, b = 152.963552\n",
  377. "epoch 155: loss = 2202095.984547, a = 255.021636, b = 152.962664\n",
  378. "epoch 156: loss = 2200171.557461, a = 256.408203, b = 152.961779\n",
  379. "epoch 157: loss = 2198254.812889, a = 257.791996, b = 152.960895\n",
  380. "epoch 158: loss = 2196345.720150, a = 259.173022, b = 152.960013\n",
  381. "epoch 159: loss = 2194444.248684, a = 260.551287, b = 152.959133\n",
  382. "epoch 160: loss = 2192550.368053, a = 261.926796, b = 152.958254\n",
  383. "epoch 161: loss = 2190664.047943, a = 263.299554, b = 152.957377\n",
  384. "epoch 162: loss = 2188785.258158, a = 264.669567, b = 152.956502\n",
  385. "epoch 163: loss = 2186913.968625, a = 266.036841, b = 152.955629\n",
  386. "epoch 164: loss = 2185050.149391, a = 267.401380, b = 152.954757\n",
  387. "epoch 165: loss = 2183193.770620, a = 268.763191, b = 152.953888\n",
  388. "epoch 166: loss = 2181344.802598, a = 270.122278, b = 152.953020\n",
  389. "epoch 167: loss = 2179503.215730, a = 271.478648, b = 152.952153\n",
  390. "epoch 168: loss = 2177668.980536, a = 272.832306, b = 152.951289\n",
  391. "epoch 169: loss = 2175842.067656, a = 274.183256, b = 152.950426\n",
  392. "epoch 170: loss = 2174022.447849, a = 275.531506, b = 152.949565\n",
  393. "epoch 171: loss = 2172210.091986, a = 276.877059, b = 152.948705\n",
  394. "epoch 172: loss = 2170404.971060, a = 278.219921, b = 152.947848\n",
  395. "epoch 173: loss = 2168607.056175, a = 279.560099, b = 152.946992\n",
  396. "epoch 174: loss = 2166816.318553, a = 280.897596, b = 152.946138\n",
  397. "epoch 175: loss = 2165032.729530, a = 282.232419, b = 152.945285\n",
  398. "epoch 176: loss = 2163256.260558, a = 283.564572, b = 152.944434\n",
  399. "epoch 177: loss = 2161486.883202, a = 284.894062, b = 152.943585\n",
  400. "epoch 178: loss = 2159724.569140, a = 286.220893, b = 152.942738\n",
  401. "epoch 179: loss = 2157969.290163, a = 287.545071, b = 152.941892\n",
  402. "epoch 180: loss = 2156221.018176, a = 288.866601, b = 152.941048\n",
  403. "epoch 181: loss = 2154479.725196, a = 290.185489, b = 152.940205\n",
  404. "epoch 182: loss = 2152745.383351, a = 291.501739, b = 152.939365\n",
  405. "epoch 183: loss = 2151017.964881, a = 292.815357, b = 152.938526\n",
  406. "epoch 184: loss = 2149297.442136, a = 294.126348, b = 152.937688\n",
  407. "epoch 185: loss = 2147583.787577, a = 295.434718, b = 152.936853\n",
  408. "epoch 186: loss = 2145876.973776, a = 296.740471, b = 152.936019\n",
  409. "epoch 187: loss = 2144176.973412, a = 298.043614, b = 152.935186\n",
  410. "epoch 188: loss = 2142483.759277, a = 299.344150, b = 152.934356\n",
  411. "epoch 189: loss = 2140797.304267, a = 300.642086, b = 152.933527\n",
  412. "epoch 190: loss = 2139117.581390, a = 301.937426, b = 152.932699\n",
  413. "epoch 191: loss = 2137444.563760, a = 303.230176, b = 152.931874\n",
  414. "epoch 192: loss = 2135778.224600, a = 304.520341, b = 152.931050\n",
  415. "epoch 193: loss = 2134118.537237, a = 305.807926, b = 152.930227\n",
  416. "epoch 194: loss = 2132465.475108, a = 307.092937, b = 152.929407\n",
  417. "epoch 195: loss = 2130819.011754, a = 308.375378, b = 152.928588\n",
  418. "epoch 196: loss = 2129179.120822, a = 309.655254, b = 152.927770\n",
  419. "epoch 197: loss = 2127545.776064, a = 310.932571, b = 152.926954\n",
  420. "epoch 198: loss = 2125918.951339, a = 312.207334, b = 152.926140\n",
  421. "epoch 199: loss = 2124298.620607, a = 313.479547, b = 152.925328\n",
  422. "epoch 200: loss = 2122684.757934, a = 314.749217, b = 152.924517\n",
  423. "epoch 201: loss = 2121077.337490, a = 316.016348, b = 152.923707\n",
  424. "epoch 202: loss = 2119476.333547, a = 317.280945, b = 152.922900\n",
  425. "epoch 203: loss = 2117881.720480, a = 318.543013, b = 152.922094\n",
  426. "epoch 204: loss = 2116293.472768, a = 319.802557, b = 152.921289\n",
  427. "epoch 205: loss = 2114711.564989, a = 321.059583, b = 152.920486\n",
  428. "epoch 206: loss = 2113135.971825, a = 322.314095, b = 152.919685\n",
  429. "epoch 207: loss = 2111566.668058, a = 323.566099, b = 152.918885\n",
  430. "epoch 208: loss = 2110003.628571, a = 324.815599, b = 152.918087\n",
  431. "epoch 209: loss = 2108446.828347, a = 326.062600, b = 152.917291\n",
  432. "epoch 210: loss = 2106896.242470, a = 327.307108, b = 152.916496\n",
  433. "epoch 211: loss = 2105351.846122, a = 328.549127, b = 152.915703\n",
  434. "epoch 212: loss = 2103813.614585, a = 329.788662, b = 152.914911\n",
  435. "epoch 213: loss = 2102281.523241, a = 331.025719, b = 152.914121\n",
  436. "epoch 214: loss = 2100755.547567, a = 332.260302, b = 152.913332\n",
  437. "epoch 215: loss = 2099235.663141, a = 333.492417, b = 152.912545\n",
  438. "epoch 216: loss = 2097721.845637, a = 334.722067, b = 152.911760\n",
  439. "epoch 217: loss = 2096214.070828, a = 335.949259, b = 152.910976\n",
  440. "epoch 218: loss = 2094712.314580, a = 337.173997, b = 152.910194\n",
  441. "epoch 219: loss = 2093216.552860, a = 338.396285, b = 152.909413\n",
  442. "epoch 220: loss = 2091726.761728, a = 339.616130, b = 152.908634\n",
  443. "epoch 221: loss = 2090242.917340, a = 340.833535, b = 152.907857\n",
  444. "epoch 222: loss = 2088764.995948, a = 342.048506, b = 152.907081\n",
  445. "epoch 223: loss = 2087292.973899, a = 343.261047, b = 152.906306\n",
  446. "epoch 224: loss = 2085826.827634, a = 344.471164, b = 152.905533\n",
  447. "epoch 225: loss = 2084366.533687, a = 345.678860, b = 152.904762\n",
  448. "epoch 226: loss = 2082912.068689, a = 346.884142, b = 152.903992\n",
  449. "epoch 227: loss = 2081463.409360, a = 348.087014, b = 152.903224\n",
  450. "epoch 228: loss = 2080020.532516, a = 349.287480, b = 152.902457\n",
  451. "epoch 229: loss = 2078583.415065, a = 350.485545, b = 152.901692\n",
  452. "epoch 230: loss = 2077152.034007, a = 351.681215, b = 152.900928\n",
  453. "epoch 231: loss = 2075726.366435, a = 352.874494, b = 152.900166\n",
  454. "epoch 232: loss = 2074306.389530, a = 354.065387, b = 152.899405\n",
  455. "epoch 233: loss = 2072892.080568, a = 355.253899, b = 152.898646\n",
  456. "epoch 234: loss = 2071483.416915, a = 356.440033, b = 152.897889\n",
  457. "epoch 235: loss = 2070080.376026, a = 357.623796, b = 152.897133\n",
  458. "epoch 236: loss = 2068682.935446, a = 358.805192, b = 152.896378\n",
  459. "epoch 237: loss = 2067291.072812, a = 359.984226, b = 152.895625\n",
  460. "epoch 238: loss = 2065904.765847, a = 361.160901, b = 152.894874\n",
  461. "epoch 239: loss = 2064523.992367, a = 362.335224, b = 152.894124\n",
  462. "epoch 240: loss = 2063148.730273, a = 363.507199, b = 152.893375\n",
  463. "epoch 241: loss = 2061778.957556, a = 364.676830, b = 152.892628\n",
  464. "epoch 242: loss = 2060414.652294, a = 365.844122, b = 152.891882\n",
  465. "epoch 243: loss = 2059055.792654, a = 367.009079, b = 152.891138\n",
  466. "epoch 244: loss = 2057702.356890, a = 368.171708, b = 152.890396\n",
  467. "epoch 245: loss = 2056354.323340, a = 369.332011, b = 152.889655\n",
  468. "epoch 246: loss = 2055011.670433, a = 370.489995, b = 152.888915\n",
  469. "epoch 247: loss = 2053674.376681, a = 371.645662, b = 152.888177\n",
  470. "epoch 248: loss = 2052342.420683, a = 372.799019, b = 152.887440\n",
  471. "epoch 249: loss = 2051015.781122, a = 373.950069, b = 152.886705\n",
  472. "epoch 250: loss = 2049694.436769, a = 375.098818, b = 152.885972\n",
  473. "epoch 251: loss = 2048378.366478, a = 376.245269, b = 152.885239\n",
  474. "epoch 252: loss = 2047067.549187, a = 377.389428, b = 152.884509\n",
  475. "epoch 253: loss = 2045761.963919, a = 378.531300, b = 152.883779\n",
  476. "epoch 254: loss = 2044461.589780, a = 379.670887, b = 152.883051\n",
  477. "epoch 255: loss = 2043166.405962, a = 380.808196, b = 152.882325\n",
  478. "epoch 256: loss = 2041876.391735, a = 381.943231, b = 152.881600\n",
  479. "epoch 257: loss = 2040591.526458, a = 383.075996, b = 152.880877\n",
  480. "epoch 258: loss = 2039311.789567, a = 384.206496, b = 152.880154\n",
  481. "epoch 259: loss = 2038037.160585, a = 385.334735, b = 152.879434\n",
  482. "epoch 260: loss = 2036767.619112, a = 386.460718, b = 152.878715\n",
  483. "epoch 261: loss = 2035503.144833, a = 387.584449, b = 152.877997\n",
  484. "epoch 262: loss = 2034243.717512, a = 388.705934, b = 152.877281\n",
  485. "epoch 263: loss = 2032989.316996, a = 389.825176, b = 152.876566\n",
  486. "epoch 264: loss = 2031739.923211, a = 390.942179, b = 152.875852\n",
  487. "epoch 265: loss = 2030495.516162, a = 392.056949, b = 152.875140\n",
  488. "epoch 266: loss = 2029256.075938, a = 393.169490, b = 152.874430\n",
  489. "epoch 267: loss = 2028021.582702, a = 394.279807, b = 152.873721\n",
  490. "epoch 268: loss = 2026792.016702, a = 395.387902, b = 152.873013\n",
  491. "epoch 269: loss = 2025567.358259, a = 396.493783, b = 152.872307\n",
  492. "epoch 270: loss = 2024347.587778, a = 397.597451, b = 152.871602\n",
  493. "epoch 271: loss = 2023132.685738, a = 398.698913, b = 152.870898\n",
  494. "epoch 272: loss = 2021922.632700, a = 399.798172, b = 152.870196\n",
  495. "epoch 273: loss = 2020717.409298, a = 400.895233, b = 152.869495\n",
  496. "epoch 274: loss = 2019516.996248, a = 401.990100, b = 152.868796\n",
  497. "epoch 275: loss = 2018321.374339, a = 403.082778, b = 152.868098\n",
  498. "epoch 276: loss = 2017130.524440, a = 404.173271, b = 152.867402\n",
  499. "epoch 277: loss = 2015944.427495, a = 405.261583, b = 152.866707\n",
  500. "epoch 278: loss = 2014763.064523, a = 406.347719, b = 152.866013\n",
  501. "epoch 279: loss = 2013586.416620, a = 407.431683, b = 152.865321\n",
  502. "epoch 280: loss = 2012414.464959, a = 408.513480, b = 152.864630\n",
  503. "epoch 281: loss = 2011247.190786, a = 409.593113, b = 152.863940\n",
  504. "epoch 282: loss = 2010084.575421, a = 410.670588, b = 152.863252\n",
  505. "epoch 283: loss = 2008926.600262, a = 411.745907, b = 152.862565\n",
  506. "epoch 284: loss = 2007773.246779, a = 412.819077, b = 152.861880\n",
  507. "epoch 285: loss = 2006624.496517, a = 413.890100, b = 152.861196\n",
  508. "epoch 286: loss = 2005480.331093, a = 414.958982, b = 152.860513\n",
  509. "epoch 287: loss = 2004340.732199, a = 416.025727, b = 152.859832\n",
  510. "epoch 288: loss = 2003205.681600, a = 417.090338, b = 152.859152\n",
  511. "epoch 289: loss = 2002075.161134, a = 418.152820, b = 152.858473\n",
  512. "epoch 290: loss = 2000949.152710, a = 419.213178, b = 152.857796\n",
  513. "epoch 291: loss = 1999827.638312, a = 420.271415, b = 152.857120\n",
  514. "epoch 292: loss = 1998710.599993, a = 421.327537, b = 152.856445\n",
  515. "epoch 293: loss = 1997598.019879, a = 422.381546, b = 152.855772\n",
  516. "epoch 294: loss = 1996489.880169, a = 423.433448, b = 152.855100\n",
  517. "epoch 295: loss = 1995386.163130, a = 424.483246, b = 152.854430\n",
  518. "epoch 296: loss = 1994286.851102, a = 425.530945, b = 152.853761\n",
  519. "epoch 297: loss = 1993191.926495, a = 426.576549, b = 152.853093\n",
  520. "epoch 298: loss = 1992101.371788, a = 427.620062, b = 152.852426\n",
  521. "epoch 299: loss = 1991015.169533, a = 428.661489, b = 152.851761\n",
  522. "epoch 300: loss = 1989933.302349, a = 429.700833, b = 152.851097\n",
  523. "epoch 301: loss = 1988855.752925, a = 430.738098, b = 152.850435\n",
  524. "epoch 302: loss = 1987782.504019, a = 431.773290, b = 152.849774\n",
  525. "epoch 303: loss = 1986713.538460, a = 432.806411, b = 152.849114\n",
  526. "epoch 304: loss = 1985648.839142, a = 433.837466, b = 152.848455\n",
  527. "epoch 305: loss = 1984588.389031, a = 434.866460, b = 152.847798\n",
  528. "epoch 306: loss = 1983532.171157, a = 435.893396, b = 152.847142\n",
  529. "epoch 307: loss = 1982480.168622, a = 436.918279, b = 152.846488\n",
  530. "epoch 308: loss = 1981432.364593, a = 437.941112, b = 152.845834\n",
  531. "epoch 309: loss = 1980388.742304, a = 438.961900, b = 152.845182\n",
  532. "epoch 310: loss = 1979349.285057, a = 439.980646, b = 152.844532\n",
  533. "epoch 311: loss = 1978313.976221, a = 440.997355, b = 152.843882\n",
  534. "epoch 312: loss = 1977282.799230, a = 442.012032, b = 152.843234\n",
  535. "epoch 313: loss = 1976255.737586, a = 443.024679, b = 152.842588\n",
  536. "epoch 314: loss = 1975232.774855, a = 444.035301, b = 152.841942\n",
  537. "epoch 315: loss = 1974213.894670, a = 445.043903, b = 152.841298\n",
  538. "epoch 316: loss = 1973199.080729, a = 446.050487, b = 152.840655\n",
  539. "epoch 317: loss = 1972188.316794, a = 447.055059, b = 152.840013\n",
  540. "epoch 318: loss = 1971181.586695, a = 448.057622, b = 152.839373\n",
  541. "epoch 319: loss = 1970178.874323, a = 449.058180, b = 152.838734\n",
  542. "epoch 320: loss = 1969180.163634, a = 450.056737, b = 152.838096\n",
  543. "epoch 321: loss = 1968185.438651, a = 451.053298, b = 152.837460\n",
  544. "epoch 322: loss = 1967194.683457, a = 452.047865, b = 152.836824\n",
  545. "epoch 323: loss = 1966207.882201, a = 453.040444, b = 152.836190\n",
  546. "epoch 324: loss = 1965225.019095, a = 454.031038, b = 152.835558\n",
  547. "epoch 325: loss = 1964246.078413, a = 455.019652, b = 152.834926\n",
  548. "epoch 326: loss = 1963271.044493, a = 456.006288, b = 152.834296\n",
  549. "epoch 327: loss = 1962299.901734, a = 456.990951, b = 152.833667\n",
  550. "epoch 328: loss = 1961332.634599, a = 457.973646, b = 152.833040\n",
  551. "epoch 329: loss = 1960369.227613, a = 458.954375, b = 152.832413\n",
  552. "epoch 330: loss = 1959409.665362, a = 459.933143, b = 152.831788\n",
  553. "epoch 331: loss = 1958453.932493, a = 460.909954, b = 152.831164\n",
  554. "epoch 332: loss = 1957502.013716, a = 461.884812, b = 152.830542\n",
  555. "epoch 333: loss = 1956553.893800, a = 462.857720, b = 152.829920\n",
  556. "epoch 334: loss = 1955609.557577, a = 463.828683, b = 152.829300\n",
  557. "epoch 335: loss = 1954668.989939, a = 464.797704, b = 152.828681\n",
  558. "epoch 336: loss = 1953732.175837, a = 465.764787, b = 152.828063\n",
  559. "epoch 337: loss = 1952799.100283, a = 466.729937, b = 152.827447\n",
  560. "epoch 338: loss = 1951869.748350, a = 467.693157, b = 152.826832\n",
  561. "epoch 339: loss = 1950944.105168, a = 468.654450, b = 152.826218\n",
  562. "epoch 340: loss = 1950022.155929, a = 469.613821, b = 152.825605\n",
  563. "epoch 341: loss = 1949103.885883, a = 470.571274, b = 152.824994\n",
  564. "epoch 342: loss = 1948189.280339, a = 471.526812, b = 152.824383\n",
  565. "epoch 343: loss = 1947278.324664, a = 472.480440, b = 152.823774\n",
  566. "epoch 344: loss = 1946371.004285, a = 473.432160, b = 152.823166\n",
  567. "epoch 345: loss = 1945467.304686, a = 474.381978, b = 152.822560\n",
  568. "epoch 346: loss = 1944567.211409, a = 475.329896, b = 152.821954\n",
  569. "epoch 347: loss = 1943670.710054, a = 476.275919, b = 152.821350\n",
  570. "epoch 348: loss = 1942777.786279, a = 477.220049, b = 152.820747\n",
  571. "epoch 349: loss = 1941888.425799, a = 478.162292, b = 152.820145\n",
  572. "epoch 350: loss = 1941002.614385, a = 479.102651, b = 152.819545\n",
  573. "epoch 351: loss = 1940120.337867, a = 480.041129, b = 152.818945\n",
  574. "epoch 352: loss = 1939241.582129, a = 480.977731, b = 152.818347\n",
  575. "epoch 353: loss = 1938366.333114, a = 481.912460, b = 152.817750\n",
  576. "epoch 354: loss = 1937494.576819, a = 482.845319, b = 152.817154\n",
  577. "epoch 355: loss = 1936626.299297, a = 483.776313, b = 152.816560\n",
  578. "epoch 356: loss = 1935761.486660, a = 484.705446, b = 152.815966\n",
  579. "epoch 357: loss = 1934900.125071, a = 485.632721, b = 152.815374\n",
  580. "epoch 358: loss = 1934042.200750, a = 486.558141, b = 152.814783\n",
  581. "epoch 359: loss = 1933187.699974, a = 487.481711, b = 152.814193\n",
  582. "epoch 360: loss = 1932336.609071, a = 488.403434, b = 152.813604\n",
  583. "epoch 361: loss = 1931488.914427, a = 489.323313, b = 152.813017\n",
  584. "epoch 362: loss = 1930644.602481, a = 490.241354, b = 152.812430\n",
  585. "epoch 363: loss = 1929803.659727, a = 491.157558, b = 152.811845\n",
  586. "epoch 364: loss = 1928966.072710, a = 492.071931, b = 152.811261\n",
  587. "epoch 365: loss = 1928131.828033, a = 492.984475, b = 152.810678\n",
  588. "epoch 366: loss = 1927300.912349, a = 493.895194, b = 152.810097\n",
  589. "epoch 367: loss = 1926473.312366, a = 494.804092, b = 152.809516\n",
  590. "epoch 368: loss = 1925649.014846, a = 495.711173, b = 152.808937\n",
  591. "epoch 369: loss = 1924828.006601, a = 496.616440, b = 152.808359\n",
  592. "epoch 370: loss = 1924010.274499, a = 497.519896, b = 152.807782\n",
  593. "epoch 371: loss = 1923195.805457, a = 498.421546, b = 152.807206\n",
  594. "epoch 372: loss = 1922384.586448, a = 499.321393, b = 152.806631\n",
  595. "epoch 373: loss = 1921576.604494, a = 500.219440, b = 152.806057\n",
  596. "epoch 374: loss = 1920771.846670, a = 501.115692, b = 152.805485\n",
  597. "epoch 375: loss = 1919970.300103, a = 502.010152, b = 152.804914\n",
  598. "epoch 376: loss = 1919171.951971, a = 502.902823, b = 152.804344\n",
  599. "epoch 377: loss = 1918376.789502, a = 503.793708, b = 152.803775\n",
  600. "epoch 378: loss = 1917584.799978, a = 504.682813, b = 152.803207\n",
  601. "epoch 379: loss = 1916795.970729, a = 505.570139, b = 152.802640\n",
  602. "epoch 380: loss = 1916010.289136, a = 506.455691, b = 152.802074\n",
  603. "epoch 381: loss = 1915227.742632, a = 507.339473, b = 152.801510\n",
  604. "epoch 382: loss = 1914448.318700, a = 508.221487, b = 152.800947\n",
  605. "epoch 383: loss = 1913672.004870, a = 509.101737, b = 152.800384\n",
  606. "epoch 384: loss = 1912898.788726, a = 509.980227, b = 152.799823\n",
  607. "epoch 385: loss = 1912128.657898, a = 510.856960, b = 152.799263\n",
  608. "epoch 386: loss = 1911361.600068, a = 511.731940, b = 152.798704\n",
  609. "epoch 387: loss = 1910597.602966, a = 512.605171, b = 152.798147\n",
  610. "epoch 388: loss = 1909836.654372, a = 513.476655, b = 152.797590\n",
  611. "epoch 389: loss = 1909078.742112, a = 514.346397, b = 152.797035\n",
  612. "epoch 390: loss = 1908323.854064, a = 515.214399, b = 152.796480\n",
  613. "epoch 391: loss = 1907571.978154, a = 516.080666, b = 152.795927\n",
  614. "epoch 392: loss = 1906823.102353, a = 516.945201, b = 152.795375\n",
  615. "epoch 393: loss = 1906077.214684, a = 517.808006, b = 152.794824\n",
  616. "epoch 394: loss = 1905334.303215, a = 518.669087, b = 152.794274\n",
  617. "epoch 395: loss = 1904594.356064, a = 519.528445, b = 152.793725\n",
  618. "epoch 396: loss = 1903857.361395, a = 520.386085, b = 152.793177\n",
  619. "epoch 397: loss = 1903123.307419, a = 521.242011, b = 152.792630\n",
  620. "epoch 398: loss = 1902392.182395, a = 522.096224, b = 152.792085\n",
  621. "epoch 399: loss = 1901663.974628, a = 522.948729, b = 152.791540\n",
  622. "epoch 400: loss = 1900938.672471, a = 523.799530, b = 152.790997\n",
  623. "epoch 401: loss = 1900216.264323, a = 524.648629, b = 152.790455\n",
  624. "epoch 402: loss = 1899496.738628, a = 525.496031, b = 152.789913\n",
  625. "epoch 403: loss = 1898780.083878, a = 526.341738, b = 152.789373\n",
  626. "epoch 404: loss = 1898066.288609, a = 527.185753, b = 152.788834\n",
  627. "epoch 405: loss = 1897355.341406, a = 528.028081, b = 152.788296\n",
  628. "epoch 406: loss = 1896647.230897, a = 528.868725, b = 152.787759\n",
  629. "epoch 407: loss = 1895941.945754, a = 529.707688, b = 152.787223\n",
  630. "epoch 408: loss = 1895239.474699, a = 530.544973, b = 152.786689\n",
  631. "epoch 409: loss = 1894539.806495, a = 531.380583, b = 152.786155\n",
  632. "epoch 410: loss = 1893842.929951, a = 532.214523, b = 152.785622\n",
  633. "epoch 411: loss = 1893148.833922, a = 533.046795, b = 152.785091\n",
  634. "epoch 412: loss = 1892457.507305, a = 533.877403, b = 152.784560\n",
  635. "epoch 413: loss = 1891768.939043, a = 534.706350, b = 152.784031\n",
  636. "epoch 414: loss = 1891083.118123, a = 535.533639, b = 152.783502\n",
  637. "epoch 415: loss = 1890400.033577, a = 536.359274, b = 152.782975\n",
  638. "epoch 416: loss = 1889719.674478, a = 537.183258, b = 152.782449\n",
  639. "epoch 417: loss = 1889042.029945, a = 538.005595, b = 152.781924\n",
  640. "epoch 418: loss = 1888367.089140, a = 538.826287, b = 152.781399\n",
  641. "epoch 419: loss = 1887694.841269, a = 539.645337, b = 152.780876\n",
  642. "epoch 420: loss = 1887025.275578, a = 540.462750, b = 152.780354\n",
  643. "epoch 421: loss = 1886358.381359, a = 541.278529, b = 152.779833\n",
  644. "epoch 422: loss = 1885694.147947, a = 542.092676, b = 152.779313\n",
  645. "epoch 423: loss = 1885032.564717, a = 542.905195, b = 152.778794\n",
  646. "epoch 424: loss = 1884373.621089, a = 543.716089, b = 152.778276\n",
  647. "epoch 425: loss = 1883717.306523, a = 544.525362, b = 152.777759\n",
  648. "epoch 426: loss = 1883063.610524, a = 545.333017, b = 152.777244\n",
  649. "epoch 427: loss = 1882412.522636, a = 546.139056, b = 152.776729\n",
  650. "epoch 428: loss = 1881764.032446, a = 546.943484, b = 152.776215\n",
  651. "epoch 429: loss = 1881118.129583, a = 547.746303, b = 152.775702\n",
  652. "epoch 430: loss = 1880474.803717, a = 548.547517, b = 152.775190\n",
  653. "epoch 431: loss = 1879834.044558, a = 549.347128, b = 152.774680\n",
  654. "epoch 432: loss = 1879195.841860, a = 550.145141, b = 152.774170\n",
  655. "epoch 433: loss = 1878560.185416, a = 550.941558, b = 152.773661\n",
  656. "epoch 434: loss = 1877927.065059, a = 551.736382, b = 152.773154\n",
  657. "epoch 435: loss = 1877296.470664, a = 552.529617, b = 152.772647\n",
  658. "epoch 436: loss = 1876668.392146, a = 553.321265, b = 152.772141\n",
  659. "epoch 437: loss = 1876042.819461, a = 554.111331, b = 152.771637\n",
  660. "epoch 438: loss = 1875419.742604, a = 554.899817, b = 152.771133\n",
  661. "epoch 439: loss = 1874799.151611, a = 555.686726, b = 152.770631\n",
  662. "epoch 440: loss = 1874181.036556, a = 556.472061, b = 152.770129\n",
  663. "epoch 441: loss = 1873565.387555, a = 557.255826, b = 152.769629\n",
  664. "epoch 442: loss = 1872952.194761, a = 558.038024, b = 152.769129\n",
  665. "epoch 443: loss = 1872341.448369, a = 558.818658, b = 152.768630\n",
  666. "epoch 444: loss = 1871733.138612, a = 559.597731, b = 152.768133\n",
  667. "epoch 445: loss = 1871127.255760, a = 560.375245, b = 152.767636\n",
  668. "epoch 446: loss = 1870523.790126, a = 561.151205, b = 152.767141\n",
  669. "epoch 447: loss = 1869922.732057, a = 561.925614, b = 152.766646\n",
  670. "epoch 448: loss = 1869324.071943, a = 562.698474, b = 152.766152\n",
  671. "epoch 449: loss = 1868727.800209, a = 563.469788, b = 152.765660\n",
  672. "epoch 450: loss = 1868133.907320, a = 564.239560, b = 152.765168\n",
  673. "epoch 451: loss = 1867542.383779, a = 565.007792, b = 152.764677\n",
  674. "epoch 452: loss = 1866953.220126, a = 565.774489, b = 152.764188\n",
  675. "epoch 453: loss = 1866366.406939, a = 566.539652, b = 152.763699\n",
  676. "epoch 454: loss = 1865781.934835, a = 567.303285, b = 152.763211\n",
  677. "epoch 455: loss = 1865199.794467, a = 568.065392, b = 152.762724\n",
  678. "epoch 456: loss = 1864619.976525, a = 568.825974, b = 152.762239\n",
  679. "epoch 457: loss = 1864042.471739, a = 569.585035, b = 152.761754\n",
  680. "epoch 458: loss = 1863467.270872, a = 570.342579, b = 152.761270\n",
  681. "epoch 459: loss = 1862894.364726, a = 571.098607, b = 152.760787\n",
  682. "epoch 460: loss = 1862323.744141, a = 571.853124, b = 152.760305\n",
  683. "epoch 461: loss = 1861755.399991, a = 572.606132, b = 152.759824\n",
  684. "epoch 462: loss = 1861189.323188, a = 573.357635, b = 152.759344\n",
  685. "epoch 463: loss = 1860625.504680, a = 574.107634, b = 152.758865\n",
  686. "epoch 464: loss = 1860063.935451, a = 574.856134, b = 152.758387\n",
  687. "epoch 465: loss = 1859504.606521, a = 575.603137, b = 152.757910\n",
  688. "epoch 466: loss = 1858947.508946, a = 576.348646, b = 152.757434\n",
  689. "epoch 467: loss = 1858392.633818, a = 577.092665, b = 152.756959\n",
  690. "epoch 468: loss = 1857839.972264, a = 577.835195, b = 152.756485\n",
  691. "epoch 469: loss = 1857289.515447, a = 578.576241, b = 152.756011\n",
  692. "epoch 470: loss = 1856741.254564, a = 579.315805, b = 152.755539\n",
  693. "epoch 471: loss = 1856195.180850, a = 580.053891, b = 152.755067\n",
  694. "epoch 472: loss = 1855651.285571, a = 580.790500, b = 152.754597\n",
  695. "epoch 473: loss = 1855109.560032, a = 581.525636, b = 152.754127\n",
  696. "epoch 474: loss = 1854569.995569, a = 582.259302, b = 152.753659\n",
  697. "epoch 475: loss = 1854032.583556, a = 582.991501, b = 152.753191\n",
  698. "epoch 476: loss = 1853497.315398, a = 583.722236, b = 152.752725\n",
  699. "epoch 477: loss = 1852964.182538, a = 584.451510, b = 152.752259\n",
  700. "epoch 478: loss = 1852433.176450, a = 585.179326, b = 152.751794\n",
  701. "epoch 479: loss = 1851904.288645, a = 585.905686, b = 152.751330\n",
  702. "epoch 480: loss = 1851377.510664, a = 586.630593, b = 152.750867\n",
  703. "epoch 481: loss = 1850852.834086, a = 587.354051, b = 152.750405\n",
  704. "epoch 482: loss = 1850330.250520, a = 588.076063, b = 152.749944\n",
  705. "epoch 483: loss = 1849809.751612, a = 588.796630, b = 152.749484\n",
  706. "epoch 484: loss = 1849291.329038, a = 589.515757, b = 152.749024\n",
  707. "epoch 485: loss = 1848774.974510, a = 590.233445, b = 152.748566\n",
  708. "epoch 486: loss = 1848260.679771, a = 590.949699, b = 152.748108\n",
  709. "epoch 487: loss = 1847748.436598, a = 591.664520, b = 152.747652\n",
  710. "epoch 488: loss = 1847238.236802, a = 592.377912, b = 152.747196\n",
  711. "epoch 489: loss = 1846730.072224, a = 593.089877, b = 152.746741\n",
  712. "epoch 490: loss = 1846223.934739, a = 593.800419, b = 152.746288\n",
  713. "epoch 491: loss = 1845719.816255, a = 594.509540, b = 152.745835\n",
  714. "epoch 492: loss = 1845217.708712, a = 595.217242, b = 152.745383\n",
  715. "epoch 493: loss = 1844717.604082, a = 595.923530, b = 152.744932\n",
  716. "epoch 494: loss = 1844219.494368, a = 596.628405, b = 152.744481\n",
  717. "epoch 495: loss = 1843723.371607, a = 597.331871, b = 152.744032\n",
  718. "epoch 496: loss = 1843229.227867, a = 598.033930, b = 152.743584\n",
  719. "epoch 497: loss = 1842737.055246, a = 598.734585, b = 152.743136\n",
  720. "epoch 498: loss = 1842246.845876, a = 599.433839, b = 152.742690\n",
  721. "epoch 499: loss = 1841758.591920, a = 600.131695, b = 152.742244\n",
  722. "epoch 500: loss = 1841272.285571, a = 600.828155, b = 152.741799\n",
  723. "epoch 501: loss = 1840787.919054, a = 601.523222, b = 152.741355\n",
  724. "epoch 502: loss = 1840305.484625, a = 602.216900, b = 152.740912\n",
  725. "epoch 503: loss = 1839824.974571, a = 602.909191, b = 152.740470\n",
  726. "epoch 504: loss = 1839346.381209, a = 603.600097, b = 152.740029\n",
  727. "epoch 505: loss = 1838869.696888, a = 604.289621, b = 152.739588\n",
  728. "epoch 506: loss = 1838394.913987, a = 604.977767, b = 152.739149\n",
  729. "epoch 507: loss = 1837922.024916, a = 605.664537, b = 152.738710\n",
  730. "epoch 508: loss = 1837451.022113, a = 606.349933, b = 152.738272\n",
  731. "epoch 509: loss = 1836981.898050, a = 607.033959, b = 152.737835\n",
  732. "epoch 510: loss = 1836514.645225, a = 607.716617, b = 152.737399\n",
  733. "epoch 511: loss = 1836049.256168, a = 608.397910, b = 152.736964\n",
  734. "epoch 512: loss = 1835585.723441, a = 609.077841, b = 152.736530\n",
  735. "epoch 513: loss = 1835124.039631, a = 609.756412, b = 152.736097\n",
  736. "epoch 514: loss = 1834664.197358, a = 610.433626, b = 152.735664\n",
  737. "epoch 515: loss = 1834206.189270, a = 611.109486, b = 152.735232\n",
  738. "epoch 516: loss = 1833750.008046, a = 611.783994, b = 152.734802\n",
  739. "epoch 517: loss = 1833295.646392, a = 612.457153, b = 152.734372\n",
  740. "epoch 518: loss = 1832843.097045, a = 613.128967, b = 152.733943\n",
  741. "epoch 519: loss = 1832392.352771, a = 613.799437, b = 152.733514\n",
  742. "epoch 520: loss = 1831943.406362, a = 614.468566, b = 152.733087\n",
  743. "epoch 521: loss = 1831496.250642, a = 615.136357, b = 152.732660\n",
  744. "epoch 522: loss = 1831050.878463, a = 615.802813, b = 152.732235\n",
  745. "epoch 523: loss = 1830607.282705, a = 616.467937, b = 152.731810\n",
  746. "epoch 524: loss = 1830165.456276, a = 617.131730, b = 152.731386\n",
  747. "epoch 525: loss = 1829725.392114, a = 617.794196, b = 152.730963\n",
  748. "epoch 526: loss = 1829287.083183, a = 618.455337, b = 152.730541\n",
  749. "epoch 527: loss = 1828850.522477, a = 619.115156, b = 152.730119\n",
  750. "epoch 528: loss = 1828415.703016, a = 619.773655, b = 152.729699\n",
  751. "epoch 529: loss = 1827982.617850, a = 620.430838, b = 152.729279\n",
  752. "epoch 530: loss = 1827551.260056, a = 621.086707, b = 152.728860\n",
  753. "epoch 531: loss = 1827121.622739, a = 621.741264, b = 152.728442\n",
  754. "epoch 532: loss = 1826693.699029, a = 622.394512, b = 152.728025\n",
  755. "epoch 533: loss = 1826267.482087, a = 623.046454, b = 152.727608\n",
  756. "epoch 534: loss = 1825842.965099, a = 623.697093, b = 152.727193\n",
  757. "epoch 535: loss = 1825420.141279, a = 624.346430, b = 152.726778\n",
  758. "epoch 536: loss = 1824999.003869, a = 624.994469, b = 152.726364\n",
  759. "epoch 537: loss = 1824579.546136, a = 625.641212, b = 152.725951\n",
  760. "epoch 538: loss = 1824161.761376, a = 626.286662, b = 152.725539\n",
  761. "epoch 539: loss = 1823745.642910, a = 626.930821, b = 152.725127\n",
  762. "epoch 540: loss = 1823331.184086, a = 627.573691, b = 152.724717\n",
  763. "epoch 541: loss = 1822918.378279, a = 628.215277, b = 152.724307\n",
  764. "epoch 542: loss = 1822507.218891, a = 628.855579, b = 152.723898\n",
  765. "epoch 543: loss = 1822097.699350, a = 629.494601, b = 152.723490\n",
  766. "epoch 544: loss = 1821689.813109, a = 630.132345, b = 152.723083\n",
  767. "epoch 545: loss = 1821283.553649, a = 630.768814, b = 152.722676\n",
  768. "epoch 546: loss = 1820878.914476, a = 631.404010, b = 152.722270\n",
  769. "epoch 547: loss = 1820475.889122, a = 632.037936, b = 152.721865\n",
  770. "epoch 548: loss = 1820074.471145, a = 632.670595, b = 152.721461\n",
  771. "epoch 549: loss = 1819674.654128, a = 633.301988, b = 152.721058\n",
  772. "epoch 550: loss = 1819276.431682, a = 633.932119, b = 152.720656\n",
  773. "epoch 551: loss = 1818879.797440, a = 634.560989, b = 152.720254\n",
  774. "epoch 552: loss = 1818484.745063, a = 635.188602, b = 152.719853\n",
  775. "epoch 553: loss = 1818091.268237, a = 635.814960, b = 152.719453\n",
  776. "epoch 554: loss = 1817699.360671, a = 636.440066, b = 152.719054\n",
  777. "epoch 555: loss = 1817309.016104, a = 637.063922, b = 152.718655\n",
  778. "epoch 556: loss = 1816920.228294, a = 637.686530, b = 152.718258\n",
  779. "epoch 557: loss = 1816532.991028, a = 638.307893, b = 152.717861\n",
  780. "epoch 558: loss = 1816147.298117, a = 638.928013, b = 152.717465\n"
  781. ]
  782. },
  783. {
  784. "name": "stdout",
  785. "output_type": "stream",
  786. "text": [
  787. "epoch 559: loss = 1815763.143396, a = 639.546894, b = 152.717070\n",
  788. "epoch 560: loss = 1815380.520724, a = 640.164537, b = 152.716675\n",
  789. "epoch 561: loss = 1814999.423987, a = 640.780944, b = 152.716281\n",
  790. "epoch 562: loss = 1814619.847094, a = 641.396120, b = 152.715888\n",
  791. "epoch 563: loss = 1814241.783977, a = 642.010065, b = 152.715496\n",
  792. "epoch 564: loss = 1813865.228594, a = 642.622782, b = 152.715105\n",
  793. "epoch 565: loss = 1813490.174926, a = 643.234274, b = 152.714714\n",
  794. "epoch 566: loss = 1813116.616980, a = 643.844544, b = 152.714325\n",
  795. "epoch 567: loss = 1812744.548785, a = 644.453593, b = 152.713936\n",
  796. "epoch 568: loss = 1812373.964394, a = 645.061424, b = 152.713547\n",
  797. "epoch 569: loss = 1812004.857885, a = 645.668039, b = 152.713160\n",
  798. "epoch 570: loss = 1811637.223358, a = 646.273442, b = 152.712773\n",
  799. "epoch 571: loss = 1811271.054937, a = 646.877634, b = 152.712387\n",
  800. "epoch 572: loss = 1810906.346771, a = 647.480618, b = 152.712002\n",
  801. "epoch 573: loss = 1810543.093031, a = 648.082396, b = 152.711618\n",
  802. "epoch 574: loss = 1810181.287911, a = 648.682971, b = 152.711234\n",
  803. "epoch 575: loss = 1809820.925628, a = 649.282345, b = 152.710852\n",
  804. "epoch 576: loss = 1809462.000425, a = 649.880520, b = 152.710469\n",
  805. "epoch 577: loss = 1809104.506563, a = 650.477499, b = 152.710088\n",
  806. "epoch 578: loss = 1808748.438331, a = 651.073284, b = 152.709708\n",
  807. "epoch 579: loss = 1808393.790037, a = 651.667878, b = 152.709328\n",
  808. "epoch 580: loss = 1808040.556015, a = 652.261283, b = 152.708949\n",
  809. "epoch 581: loss = 1807688.730617, a = 652.853502, b = 152.708571\n",
  810. "epoch 582: loss = 1807338.308223, a = 653.444536, b = 152.708193\n",
  811. "epoch 583: loss = 1806989.283232, a = 654.034388, b = 152.707816\n",
  812. "epoch 584: loss = 1806641.650065, a = 654.623061, b = 152.707440\n",
  813. "epoch 585: loss = 1806295.403168, a = 655.210556, b = 152.707065\n",
  814. "epoch 586: loss = 1805950.537008, a = 655.796877, b = 152.706691\n",
  815. "epoch 587: loss = 1805607.046072, a = 656.382025, b = 152.706317\n",
  816. "epoch 588: loss = 1805264.924872, a = 656.966004, b = 152.705944\n",
  817. "epoch 589: loss = 1804924.167940, a = 657.548814, b = 152.705572\n",
  818. "epoch 590: loss = 1804584.769832, a = 658.130459, b = 152.705200\n",
  819. "epoch 591: loss = 1804246.725122, a = 658.710941, b = 152.704829\n",
  820. "epoch 592: loss = 1803910.028410, a = 659.290262, b = 152.704459\n",
  821. "epoch 593: loss = 1803574.674315, a = 659.868425, b = 152.704090\n",
  822. "epoch 594: loss = 1803240.657477, a = 660.445432, b = 152.703722\n",
  823. "epoch 595: loss = 1802907.972559, a = 661.021284, b = 152.703354\n",
  824. "epoch 596: loss = 1802576.614245, a = 661.595986, b = 152.702987\n",
  825. "epoch 597: loss = 1802246.577240, a = 662.169538, b = 152.702620\n",
  826. "epoch 598: loss = 1801917.856269, a = 662.741943, b = 152.702255\n",
  827. "epoch 599: loss = 1801590.446081, a = 663.313203, b = 152.701890\n",
  828. "epoch 600: loss = 1801264.341442, a = 663.883321, b = 152.701526\n",
  829. "epoch 601: loss = 1800939.537143, a = 664.452299, b = 152.701163\n",
  830. "epoch 602: loss = 1800616.027992, a = 665.020140, b = 152.700800\n",
  831. "epoch 603: loss = 1800293.808821, a = 665.586845, b = 152.700438\n",
  832. "epoch 604: loss = 1799972.874480, a = 666.152416, b = 152.700077\n",
  833. "epoch 605: loss = 1799653.219842, a = 666.716857, b = 152.699716\n",
  834. "epoch 606: loss = 1799334.839799, a = 667.280169, b = 152.699356\n",
  835. "epoch 607: loss = 1799017.729262, a = 667.842355, b = 152.698997\n",
  836. "epoch 608: loss = 1798701.883166, a = 668.403416, b = 152.698639\n",
  837. "epoch 609: loss = 1798387.296463, a = 668.963355, b = 152.698281\n",
  838. "epoch 610: loss = 1798073.964127, a = 669.522175, b = 152.697924\n",
  839. "epoch 611: loss = 1797761.881151, a = 670.079877, b = 152.697568\n",
  840. "epoch 612: loss = 1797451.042549, a = 670.636464, b = 152.697213\n",
  841. "epoch 613: loss = 1797141.443353, a = 671.191938, b = 152.696858\n",
  842. "epoch 614: loss = 1796833.078618, a = 671.746302, b = 152.696504\n",
  843. "epoch 615: loss = 1796525.943415, a = 672.299557, b = 152.696150\n",
  844. "epoch 616: loss = 1796220.032837, a = 672.851705, b = 152.695798\n",
  845. "epoch 617: loss = 1795915.341998, a = 673.402749, b = 152.695446\n",
  846. "epoch 618: loss = 1795611.866027, a = 673.952692, b = 152.695095\n",
  847. "epoch 619: loss = 1795309.600077, a = 674.501534, b = 152.694744\n",
  848. "epoch 620: loss = 1795008.539318, a = 675.049280, b = 152.694394\n",
  849. "epoch 621: loss = 1794708.678940, a = 675.595930, b = 152.694045\n",
  850. "epoch 622: loss = 1794410.014151, a = 676.141486, b = 152.693697\n",
  851. "epoch 623: loss = 1794112.540180, a = 676.685952, b = 152.693349\n",
  852. "epoch 624: loss = 1793816.252274, a = 677.229329, b = 152.693002\n",
  853. "epoch 625: loss = 1793521.145700, a = 677.771620, b = 152.692656\n",
  854. "epoch 626: loss = 1793227.215741, a = 678.312826, b = 152.692310\n",
  855. "epoch 627: loss = 1792934.457703, a = 678.852950, b = 152.691965\n",
  856. "epoch 628: loss = 1792642.866907, a = 679.391994, b = 152.691621\n",
  857. "epoch 629: loss = 1792352.438696, a = 679.929959, b = 152.691277\n",
  858. "epoch 630: loss = 1792063.168428, a = 680.466850, b = 152.690934\n",
  859. "epoch 631: loss = 1791775.051483, a = 681.002666, b = 152.690592\n",
  860. "epoch 632: loss = 1791488.083257, a = 681.537411, b = 152.690250\n",
  861. "epoch 633: loss = 1791202.259166, a = 682.071087, b = 152.689909\n",
  862. "epoch 634: loss = 1790917.574643, a = 682.603696, b = 152.689569\n",
  863. "epoch 635: loss = 1790634.025140, a = 683.135239, b = 152.689230\n",
  864. "epoch 636: loss = 1790351.606127, a = 683.665720, b = 152.688891\n",
  865. "epoch 637: loss = 1790070.313092, a = 684.195140, b = 152.688553\n",
  866. "epoch 638: loss = 1789790.141542, a = 684.723501, b = 152.688215\n",
  867. "epoch 639: loss = 1789511.087000, a = 685.250806, b = 152.687879\n",
  868. "epoch 640: loss = 1789233.145008, a = 685.777056, b = 152.687542\n",
  869. "epoch 641: loss = 1788956.311125, a = 686.302254, b = 152.687207\n",
  870. "epoch 642: loss = 1788680.580931, a = 686.826401, b = 152.686872\n",
  871. "epoch 643: loss = 1788405.950018, a = 687.349501, b = 152.686538\n",
  872. "epoch 644: loss = 1788132.414001, a = 687.871555, b = 152.686205\n",
  873. "epoch 645: loss = 1787859.968509, a = 688.392564, b = 152.685872\n",
  874. "epoch 646: loss = 1787588.609190, a = 688.912532, b = 152.685540\n",
  875. "epoch 647: loss = 1787318.331709, a = 689.431460, b = 152.685208\n",
  876. "epoch 648: loss = 1787049.131749, a = 689.949350, b = 152.684878\n",
  877. "epoch 649: loss = 1786781.005009, a = 690.466205, b = 152.684548\n",
  878. "epoch 650: loss = 1786513.947206, a = 690.982026, b = 152.684218\n",
  879. "epoch 651: loss = 1786247.954073, a = 691.496816, b = 152.683889\n",
  880. "epoch 652: loss = 1785983.021362, a = 692.010576, b = 152.683561\n",
  881. "epoch 653: loss = 1785719.144840, a = 692.523309, b = 152.683234\n",
  882. "epoch 654: loss = 1785456.320293, a = 693.035016, b = 152.682907\n",
  883. "epoch 655: loss = 1785194.543521, a = 693.545701, b = 152.682581\n",
  884. "epoch 656: loss = 1784933.810344, a = 694.055364, b = 152.682255\n",
  885. "epoch 657: loss = 1784674.116596, a = 694.564008, b = 152.681930\n",
  886. "epoch 658: loss = 1784415.458129, a = 695.071635, b = 152.681606\n",
  887. "epoch 659: loss = 1784157.830811, a = 695.578247, b = 152.681282\n",
  888. "epoch 660: loss = 1783901.230528, a = 696.083846, b = 152.680960\n",
  889. "epoch 661: loss = 1783645.653179, a = 696.588433, b = 152.680637\n",
  890. "epoch 662: loss = 1783391.094684, a = 697.092012, b = 152.680316\n",
  891. "epoch 663: loss = 1783137.550975, a = 697.594584, b = 152.679995\n",
  892. "epoch 664: loss = 1782885.018003, a = 698.096150, b = 152.679674\n",
  893. "epoch 665: loss = 1782633.491734, a = 698.596714, b = 152.679355\n",
  894. "epoch 666: loss = 1782382.968150, a = 699.096277, b = 152.679036\n",
  895. "epoch 667: loss = 1782133.443251, a = 699.594841, b = 152.678717\n",
  896. "epoch 668: loss = 1781884.913049, a = 700.092408, b = 152.678399\n",
  897. "epoch 669: loss = 1781637.373576, a = 700.588980, b = 152.678082\n",
  898. "epoch 670: loss = 1781390.820878, a = 701.084559, b = 152.677766\n",
  899. "epoch 671: loss = 1781145.251017, a = 701.579147, b = 152.677450\n",
  900. "epoch 672: loss = 1780900.660070, a = 702.072746, b = 152.677134\n",
  901. "epoch 673: loss = 1780657.044131, a = 702.565358, b = 152.676820\n",
  902. "epoch 674: loss = 1780414.399308, a = 703.056984, b = 152.676506\n",
  903. "epoch 675: loss = 1780172.721727, a = 703.547628, b = 152.676192\n",
  904. "epoch 676: loss = 1779932.007527, a = 704.037291, b = 152.675880\n",
  905. "epoch 677: loss = 1779692.252863, a = 704.525974, b = 152.675568\n",
  906. "epoch 678: loss = 1779453.453906, a = 705.013681, b = 152.675256\n",
  907. "epoch 679: loss = 1779215.606843, a = 705.500412, b = 152.674945\n",
  908. "epoch 680: loss = 1778978.707874, a = 705.986169, b = 152.674635\n",
  909. "epoch 681: loss = 1778742.753217, a = 706.470956, b = 152.674325\n",
  910. "epoch 682: loss = 1778507.739101, a = 706.954773, b = 152.674016\n",
  911. "epoch 683: loss = 1778273.661775, a = 707.437622, b = 152.673708\n",
  912. "epoch 684: loss = 1778040.517499, a = 707.919506, b = 152.673400\n",
  913. "epoch 685: loss = 1777808.302550, a = 708.400426, b = 152.673093\n",
  914. "epoch 686: loss = 1777577.013219, a = 708.880385, b = 152.672786\n",
  915. "epoch 687: loss = 1777346.645813, a = 709.359384, b = 152.672481\n",
  916. "epoch 688: loss = 1777117.196652, a = 709.837425, b = 152.672175\n",
  917. "epoch 689: loss = 1776888.662073, a = 710.314510, b = 152.671870\n",
  918. "epoch 690: loss = 1776661.038424, a = 710.790641, b = 152.671566\n",
  919. "epoch 691: loss = 1776434.322072, a = 711.265820, b = 152.671263\n",
  920. "epoch 692: loss = 1776208.509395, a = 711.740049, b = 152.670960\n",
  921. "epoch 693: loss = 1775983.596787, a = 712.213329, b = 152.670658\n",
  922. "epoch 694: loss = 1775759.580657, a = 712.685664, b = 152.670356\n",
  923. "epoch 695: loss = 1775536.457426, a = 713.157053, b = 152.670055\n",
  924. "epoch 696: loss = 1775314.223532, a = 713.627500, b = 152.669754\n",
  925. "epoch 697: loss = 1775092.875426, a = 714.097006, b = 152.669455\n",
  926. "epoch 698: loss = 1774872.409572, a = 714.565574, b = 152.669155\n",
  927. "epoch 699: loss = 1774652.822451, a = 715.033204, b = 152.668857\n",
  928. "epoch 700: loss = 1774434.110556, a = 715.499899, b = 152.668559\n",
  929. "epoch 701: loss = 1774216.270393, a = 715.965661, b = 152.668261\n",
  930. "epoch 702: loss = 1773999.298484, a = 716.430492, b = 152.667964\n",
  931. "epoch 703: loss = 1773783.191366, a = 716.894393, b = 152.667668\n",
  932. "epoch 704: loss = 1773567.945585, a = 717.357367, b = 152.667372\n",
  933. "epoch 705: loss = 1773353.557706, a = 717.819415, b = 152.667077\n",
  934. "epoch 706: loss = 1773140.024305, a = 718.280538, b = 152.666783\n",
  935. "epoch 707: loss = 1772927.341972, a = 718.740740, b = 152.666489\n",
  936. "epoch 708: loss = 1772715.507311, a = 719.200021, b = 152.666195\n",
  937. "epoch 709: loss = 1772504.516939, a = 719.658384, b = 152.665903\n",
  938. "epoch 710: loss = 1772294.367487, a = 720.115831, b = 152.665610\n",
  939. "epoch 711: loss = 1772085.055600, a = 720.572363, b = 152.665319\n",
  940. "epoch 712: loss = 1771876.577936, a = 721.027981, b = 152.665028\n",
  941. "epoch 713: loss = 1771668.931165, a = 721.482689, b = 152.664737\n",
  942. "epoch 714: loss = 1771462.111971, a = 721.936488, b = 152.664448\n",
  943. "epoch 715: loss = 1771256.117053, a = 722.389379, b = 152.664158\n",
  944. "epoch 716: loss = 1771050.943122, a = 722.841364, b = 152.663870\n",
  945. "epoch 717: loss = 1770846.586900, a = 723.292446, b = 152.663582\n",
  946. "epoch 718: loss = 1770643.045126, a = 723.742625, b = 152.663294\n",
  947. "epoch 719: loss = 1770440.314550, a = 724.191904, b = 152.663007\n",
  948. "epoch 720: loss = 1770238.391933, a = 724.640285, b = 152.662721\n",
  949. "epoch 721: loss = 1770037.274053, a = 725.087770, b = 152.662435\n",
  950. "epoch 722: loss = 1769836.957698, a = 725.534359, b = 152.662150\n",
  951. "epoch 723: loss = 1769637.439670, a = 725.980056, b = 152.661865\n",
  952. "epoch 724: loss = 1769438.716783, a = 726.424861, b = 152.661581\n",
  953. "epoch 725: loss = 1769240.785864, a = 726.868776, b = 152.661297\n",
  954. "epoch 726: loss = 1769043.643754, a = 727.311805, b = 152.661014\n",
  955. "epoch 727: loss = 1768847.287304, a = 727.753947, b = 152.660732\n",
  956. "epoch 728: loss = 1768651.713380, a = 728.195205, b = 152.660450\n",
  957. "epoch 729: loss = 1768456.918858, a = 728.635580, b = 152.660169\n",
  958. "epoch 730: loss = 1768262.900630, a = 729.075075, b = 152.659888\n",
  959. "epoch 731: loss = 1768069.655598, a = 729.513692, b = 152.659608\n",
  960. "epoch 732: loss = 1767877.180675, a = 729.951431, b = 152.659328\n",
  961. "epoch 733: loss = 1767685.472790, a = 730.388294, b = 152.659049\n",
  962. "epoch 734: loss = 1767494.528882, a = 730.824285, b = 152.658771\n",
  963. "epoch 735: loss = 1767304.345902, a = 731.259403, b = 152.658493\n",
  964. "epoch 736: loss = 1767114.920814, a = 731.693651, b = 152.658216\n",
  965. "epoch 737: loss = 1766926.250593, a = 732.127031, b = 152.657939\n",
  966. "epoch 738: loss = 1766738.332229, a = 732.559544, b = 152.657663\n",
  967. "epoch 739: loss = 1766551.162720, a = 732.991193, b = 152.657387\n",
  968. "epoch 740: loss = 1766364.739080, a = 733.421978, b = 152.657112\n",
  969. "epoch 741: loss = 1766179.058330, a = 733.851902, b = 152.656837\n",
  970. "epoch 742: loss = 1765994.117509, a = 734.280966, b = 152.656563\n",
  971. "epoch 743: loss = 1765809.913662, a = 734.709172, b = 152.656290\n",
  972. "epoch 744: loss = 1765626.443849, a = 735.136522, b = 152.656017\n",
  973. "epoch 745: loss = 1765443.705143, a = 735.563017, b = 152.655744\n",
  974. "epoch 746: loss = 1765261.694624, a = 735.988660, b = 152.655472\n",
  975. "epoch 747: loss = 1765080.409388, a = 736.413451, b = 152.655201\n",
  976. "epoch 748: loss = 1764899.846541, a = 736.837393, b = 152.654930\n",
  977. "epoch 749: loss = 1764720.003201, a = 737.260487, b = 152.654660\n",
  978. "epoch 750: loss = 1764540.876496, a = 737.682735, b = 152.654390\n",
  979. "epoch 751: loss = 1764362.463568, a = 738.104139, b = 152.654121\n",
  980. "epoch 752: loss = 1764184.761567, a = 738.524700, b = 152.653853\n",
  981. "epoch 753: loss = 1764007.767659, a = 738.944420, b = 152.653585\n",
  982. "epoch 754: loss = 1763831.479016, a = 739.363301, b = 152.653317\n",
  983. "epoch 755: loss = 1763655.892826, a = 739.781344, b = 152.653050\n",
  984. "epoch 756: loss = 1763481.006286, a = 740.198551, b = 152.652784\n",
  985. "epoch 757: loss = 1763306.816603, a = 740.614924, b = 152.652518\n",
  986. "epoch 758: loss = 1763133.320998, a = 741.030464, b = 152.652252\n",
  987. "epoch 759: loss = 1762960.516702, a = 741.445174, b = 152.651987\n",
  988. "epoch 760: loss = 1762788.400955, a = 741.859054, b = 152.651723\n",
  989. "epoch 761: loss = 1762616.971010, a = 742.272106, b = 152.651459\n",
  990. "epoch 762: loss = 1762446.224132, a = 742.684333, b = 152.651196\n",
  991. "epoch 763: loss = 1762276.157595, a = 743.095735, b = 152.650933\n",
  992. "epoch 764: loss = 1762106.768685, a = 743.506314, b = 152.650671\n",
  993. "epoch 765: loss = 1761938.054697, a = 743.916073, b = 152.650409\n",
  994. "epoch 766: loss = 1761770.012940, a = 744.325012, b = 152.650148\n",
  995. "epoch 767: loss = 1761602.640730, a = 744.733133, b = 152.649887\n",
  996. "epoch 768: loss = 1761435.935396, a = 745.140439, b = 152.649627\n",
  997. "epoch 769: loss = 1761269.894279, a = 745.546929, b = 152.649368\n",
  998. "epoch 770: loss = 1761104.514727, a = 745.952607, b = 152.649109\n",
  999. "epoch 771: loss = 1760939.794101, a = 746.357474, b = 152.648850\n",
  1000. "epoch 772: loss = 1760775.729772, a = 746.761531, b = 152.648592\n",
  1001. "epoch 773: loss = 1760612.319122, a = 747.164780, b = 152.648334\n",
  1002. "epoch 774: loss = 1760449.559542, a = 747.567223, b = 152.648077\n",
  1003. "epoch 775: loss = 1760287.448435, a = 747.968861, b = 152.647821\n",
  1004. "epoch 776: loss = 1760125.983214, a = 748.369696, b = 152.647565\n",
  1005. "epoch 777: loss = 1759965.161302, a = 748.769729, b = 152.647309\n",
  1006. "epoch 778: loss = 1759804.980131, a = 749.168963, b = 152.647054\n",
  1007. "epoch 779: loss = 1759645.437147, a = 749.567398, b = 152.646800\n",
  1008. "epoch 780: loss = 1759486.529802, a = 749.965036, b = 152.646546\n",
  1009. "epoch 781: loss = 1759328.255560, a = 750.361879, b = 152.646292\n",
  1010. "epoch 782: loss = 1759170.611896, a = 750.757929, b = 152.646039\n",
  1011. "epoch 783: loss = 1759013.596294, a = 751.153187, b = 152.645787\n",
  1012. "epoch 784: loss = 1758857.206248, a = 751.547654, b = 152.645535\n",
  1013. "epoch 785: loss = 1758701.439262, a = 751.941332, b = 152.645284\n",
  1014. "epoch 786: loss = 1758546.292851, a = 752.334224, b = 152.645033\n",
  1015. "epoch 787: loss = 1758391.764538, a = 752.726329, b = 152.644782\n",
  1016. "epoch 788: loss = 1758237.851858, a = 753.117651, b = 152.644532\n",
  1017. "epoch 789: loss = 1758084.552355, a = 753.508190, b = 152.644283\n",
  1018. "epoch 790: loss = 1757931.863581, a = 753.897948, b = 152.644034\n",
  1019. "epoch 791: loss = 1757779.783102, a = 754.286926, b = 152.643785\n",
  1020. "epoch 792: loss = 1757628.308489, a = 754.675127, b = 152.643538\n",
  1021. "epoch 793: loss = 1757477.437325, a = 755.062552, b = 152.643290\n",
  1022. "epoch 794: loss = 1757327.167204, a = 755.449202, b = 152.643043\n",
  1023. "epoch 795: loss = 1757177.495727, a = 755.835078, b = 152.642797\n",
  1024. "epoch 796: loss = 1757028.420505, a = 756.220183, b = 152.642551\n",
  1025. "epoch 797: loss = 1756879.939161, a = 756.604518, b = 152.642305\n",
  1026. "epoch 798: loss = 1756732.049325, a = 756.988085, b = 152.642060\n",
  1027. "epoch 799: loss = 1756584.748637, a = 757.370884, b = 152.641816\n",
  1028. "epoch 800: loss = 1756438.034746, a = 757.752918, b = 152.641572\n",
  1029. "epoch 801: loss = 1756291.905312, a = 758.134188, b = 152.641328\n",
  1030. "epoch 802: loss = 1756146.358003, a = 758.514696, b = 152.641085\n",
  1031. "epoch 803: loss = 1756001.390496, a = 758.894442, b = 152.640843\n",
  1032. "epoch 804: loss = 1755857.000479, a = 759.273430, b = 152.640601\n",
  1033. "epoch 805: loss = 1755713.185647, a = 759.651659, b = 152.640359\n",
  1034. "epoch 806: loss = 1755569.943706, a = 760.029132, b = 152.640118\n",
  1035. "epoch 807: loss = 1755427.272371, a = 760.405851, b = 152.639877\n",
  1036. "epoch 808: loss = 1755285.169365, a = 760.781816, b = 152.639637\n",
  1037. "epoch 809: loss = 1755143.632421, a = 761.157029, b = 152.639398\n",
  1038. "epoch 810: loss = 1755002.659280, a = 761.531492, b = 152.639158\n",
  1039. "epoch 811: loss = 1754862.247693, a = 761.905206, b = 152.638920\n",
  1040. "epoch 812: loss = 1754722.395421, a = 762.278173, b = 152.638681\n",
  1041. "epoch 813: loss = 1754583.100231, a = 762.650394, b = 152.638444\n",
  1042. "epoch 814: loss = 1754444.359902, a = 763.021870, b = 152.638206\n",
  1043. "epoch 815: loss = 1754306.172220, a = 763.392604, b = 152.637970\n",
  1044. "epoch 816: loss = 1754168.534980, a = 763.762597, b = 152.637733\n",
  1045. "epoch 817: loss = 1754031.445986, a = 764.131849, b = 152.637498\n",
  1046. "epoch 818: loss = 1753894.903051, a = 764.500363, b = 152.637262\n",
  1047. "epoch 819: loss = 1753758.903998, a = 764.868141, b = 152.637027\n",
  1048. "epoch 820: loss = 1753623.446655, a = 765.235183, b = 152.636793\n",
  1049. "epoch 821: loss = 1753488.528863, a = 765.601491, b = 152.636559\n",
  1050. "epoch 822: loss = 1753354.148468, a = 765.967066, b = 152.636325\n",
  1051. "epoch 823: loss = 1753220.303328, a = 766.331911, b = 152.636092\n",
  1052. "epoch 824: loss = 1753086.991306, a = 766.696025, b = 152.635860\n",
  1053. "epoch 825: loss = 1752954.210276, a = 767.059412, b = 152.635628\n",
  1054. "epoch 826: loss = 1752821.958120, a = 767.422072, b = 152.635396\n",
  1055. "epoch 827: loss = 1752690.232728, a = 767.784007, b = 152.635165\n",
  1056. "epoch 828: loss = 1752559.031999, a = 768.145218, b = 152.634934\n",
  1057. "epoch 829: loss = 1752428.353839, a = 768.505707, b = 152.634704\n",
  1058. "epoch 830: loss = 1752298.196165, a = 768.865475, b = 152.634474\n",
  1059. "epoch 831: loss = 1752168.556899, a = 769.224524, b = 152.634245\n",
  1060. "epoch 832: loss = 1752039.433974, a = 769.582854, b = 152.634016\n",
  1061. "epoch 833: loss = 1751910.825331, a = 769.940468, b = 152.633788\n",
  1062. "epoch 834: loss = 1751782.728917, a = 770.297367, b = 152.633560\n",
  1063. "epoch 835: loss = 1751655.142689, a = 770.653552, b = 152.633332\n",
  1064. "epoch 836: loss = 1751528.064612, a = 771.009025, b = 152.633105\n",
  1065. "epoch 837: loss = 1751401.492660, a = 771.363788, b = 152.632879\n",
  1066. "epoch 838: loss = 1751275.424813, a = 771.717840, b = 152.632652\n",
  1067. "epoch 839: loss = 1751149.859059, a = 772.071185, b = 152.632427\n",
  1068. "epoch 840: loss = 1751024.793398, a = 772.423823, b = 152.632201\n",
  1069. "epoch 841: loss = 1750900.225833, a = 772.775756, b = 152.631977\n",
  1070. "epoch 842: loss = 1750776.154377, a = 773.126986, b = 152.631752\n",
  1071. "epoch 843: loss = 1750652.577052, a = 773.477513, b = 152.631529\n",
  1072. "epoch 844: loss = 1750529.491887, a = 773.827339, b = 152.631305\n",
  1073. "epoch 845: loss = 1750406.896918, a = 774.176465, b = 152.631082\n",
  1074. "epoch 846: loss = 1750284.790190, a = 774.524893, b = 152.630860\n",
  1075. "epoch 847: loss = 1750163.169756, a = 774.872625, b = 152.630637\n",
  1076. "epoch 848: loss = 1750042.033675, a = 775.219661, b = 152.630416\n",
  1077. "epoch 849: loss = 1749921.380017, a = 775.566004, b = 152.630195\n",
  1078. "epoch 850: loss = 1749801.206855, a = 775.911653, b = 152.629974\n",
  1079. "epoch 851: loss = 1749681.512274, a = 776.256612, b = 152.629754\n",
  1080. "epoch 852: loss = 1749562.294365, a = 776.600881, b = 152.629534\n",
  1081. "epoch 853: loss = 1749443.551226, a = 776.944461, b = 152.629314\n",
  1082. "epoch 854: loss = 1749325.280964, a = 777.287354, b = 152.629095\n",
  1083. "epoch 855: loss = 1749207.481692, a = 777.629562, b = 152.628877\n",
  1084. "epoch 856: loss = 1749090.151532, a = 777.971085, b = 152.628658\n",
  1085. "epoch 857: loss = 1748973.288613, a = 778.311925, b = 152.628441\n",
  1086. "epoch 858: loss = 1748856.891070, a = 778.652084, b = 152.628224\n",
  1087. "epoch 859: loss = 1748740.957047, a = 778.991563, b = 152.628007\n",
  1088. "epoch 860: loss = 1748625.484697, a = 779.330363, b = 152.627790\n",
  1089. "epoch 861: loss = 1748510.472176, a = 779.668485, b = 152.627574\n",
  1090. "epoch 862: loss = 1748395.917651, a = 780.005931, b = 152.627359\n",
  1091. "epoch 863: loss = 1748281.819296, a = 780.342702, b = 152.627144\n",
  1092. "epoch 864: loss = 1748168.175290, a = 780.678800, b = 152.626929\n",
  1093. "epoch 865: loss = 1748054.983822, a = 781.014226, b = 152.626715\n",
  1094. "epoch 866: loss = 1747942.243086, a = 781.348981, b = 152.626501\n",
  1095. "epoch 867: loss = 1747829.951284, a = 781.683067, b = 152.626288\n",
  1096. "epoch 868: loss = 1747718.106627, a = 782.016484, b = 152.626075\n",
  1097. "epoch 869: loss = 1747606.707330, a = 782.349235, b = 152.625862\n",
  1098. "epoch 870: loss = 1747495.751617, a = 782.681321, b = 152.625650\n",
  1099. "epoch 871: loss = 1747385.237718, a = 783.012742, b = 152.625438\n",
  1100. "epoch 872: loss = 1747275.163873, a = 783.343501, b = 152.625227\n",
  1101. "epoch 873: loss = 1747165.528325, a = 783.673598, b = 152.625016\n",
  1102. "epoch 874: loss = 1747056.329325, a = 784.003035, b = 152.624806\n",
  1103. "epoch 875: loss = 1746947.565134, a = 784.331814, b = 152.624596\n",
  1104. "epoch 876: loss = 1746839.234017, a = 784.659935, b = 152.624386\n",
  1105. "epoch 877: loss = 1746731.334246, a = 784.987400, b = 152.624177\n",
  1106. "epoch 878: loss = 1746623.864101, a = 785.314210, b = 152.623968\n",
  1107. "epoch 879: loss = 1746516.821869, a = 785.640366, b = 152.623760\n",
  1108. "epoch 880: loss = 1746410.205842, a = 785.965871, b = 152.623552\n",
  1109. "epoch 881: loss = 1746304.014321, a = 786.290724, b = 152.623345\n",
  1110. "epoch 882: loss = 1746198.245613, a = 786.614928, b = 152.623138\n",
  1111. "epoch 883: loss = 1746092.898031, a = 786.938483, b = 152.622931\n",
  1112. "epoch 884: loss = 1745987.969896, a = 787.261392, b = 152.622725\n",
  1113. "epoch 885: loss = 1745883.459534, a = 787.583655, b = 152.622519\n",
  1114. "epoch 886: loss = 1745779.365280, a = 787.905273, b = 152.622314\n",
  1115. "epoch 887: loss = 1745675.685474, a = 788.226248, b = 152.622109\n",
  1116. "epoch 888: loss = 1745572.418463, a = 788.546582, b = 152.621904\n",
  1117. "epoch 889: loss = 1745469.562600, a = 788.866275, b = 152.621700\n",
  1118. "epoch 890: loss = 1745367.116247, a = 789.185328, b = 152.621496\n",
  1119. "epoch 891: loss = 1745265.077768, a = 789.503744, b = 152.621293\n",
  1120. "epoch 892: loss = 1745163.445539, a = 789.821523, b = 152.621090\n",
  1121. "epoch 893: loss = 1745062.217938, a = 790.138666, b = 152.620887\n",
  1122. "epoch 894: loss = 1744961.393352, a = 790.455175, b = 152.620685\n",
  1123. "epoch 895: loss = 1744860.970173, a = 790.771052, b = 152.620483\n",
  1124. "epoch 896: loss = 1744760.946801, a = 791.086296, b = 152.620282\n",
  1125. "epoch 897: loss = 1744661.321640, a = 791.400911, b = 152.620081\n",
  1126. "epoch 898: loss = 1744562.093104, a = 791.714896, b = 152.619880\n",
  1127. "epoch 899: loss = 1744463.259609, a = 792.028253, b = 152.619680\n",
  1128. "epoch 900: loss = 1744364.819581, a = 792.340984, b = 152.619480\n",
  1129. "epoch 901: loss = 1744266.771451, a = 792.653089, b = 152.619281\n",
  1130. "epoch 902: loss = 1744169.113654, a = 792.964570, b = 152.619082\n",
  1131. "epoch 903: loss = 1744071.844635, a = 793.275429, b = 152.618884\n",
  1132. "epoch 904: loss = 1743974.962844, a = 793.585665, b = 152.618685\n",
  1133. "epoch 905: loss = 1743878.466735, a = 793.895282, b = 152.618488\n",
  1134. "epoch 906: loss = 1743782.354770, a = 794.204279, b = 152.618290\n",
  1135. "epoch 907: loss = 1743686.625419, a = 794.512658, b = 152.618093\n",
  1136. "epoch 908: loss = 1743591.277154, a = 794.820421, b = 152.617897\n",
  1137. "epoch 909: loss = 1743496.308456, a = 795.127568, b = 152.617701\n",
  1138. "epoch 910: loss = 1743401.717811, a = 795.434101, b = 152.617505\n",
  1139. "epoch 911: loss = 1743307.503711, a = 795.740021, b = 152.617310\n",
  1140. "epoch 912: loss = 1743213.664656, a = 796.045330, b = 152.617115\n",
  1141. "epoch 913: loss = 1743120.199149, a = 796.350028, b = 152.616920\n",
  1142. "epoch 914: loss = 1743027.105700, a = 796.654116, b = 152.616726\n",
  1143. "epoch 915: loss = 1742934.382825, a = 796.957597, b = 152.616532\n",
  1144. "epoch 916: loss = 1742842.029048, a = 797.260470, b = 152.616338\n",
  1145. "epoch 917: loss = 1742750.042895, a = 797.562738, b = 152.616145\n",
  1146. "epoch 918: loss = 1742658.422902, a = 797.864402, b = 152.615953\n",
  1147. "epoch 919: loss = 1742567.167606, a = 798.165462, b = 152.615760\n",
  1148. "epoch 920: loss = 1742476.275556, a = 798.465920, b = 152.615568\n",
  1149. "epoch 921: loss = 1742385.745300, a = 798.765778, b = 152.615377\n",
  1150. "epoch 922: loss = 1742295.575398, a = 799.065036, b = 152.615186\n",
  1151. "epoch 923: loss = 1742205.764411, a = 799.363695, b = 152.614995\n",
  1152. "epoch 924: loss = 1742116.310909, a = 799.661757, b = 152.614805\n",
  1153. "epoch 925: loss = 1742027.213466, a = 799.959223, b = 152.614615\n",
  1154. "epoch 926: loss = 1741938.470661, a = 800.256095, b = 152.614425\n",
  1155. "epoch 927: loss = 1741850.081082, a = 800.552373, b = 152.614236\n",
  1156. "epoch 928: loss = 1741762.043319, a = 800.848058, b = 152.614047\n",
  1157. "epoch 929: loss = 1741674.355969, a = 801.143152, b = 152.613859\n",
  1158. "epoch 930: loss = 1741587.017634, a = 801.437656, b = 152.613670\n",
  1159. "epoch 931: loss = 1741500.026924, a = 801.731571, b = 152.613483\n",
  1160. "epoch 932: loss = 1741413.382452, a = 802.024898, b = 152.613295\n",
  1161. "epoch 933: loss = 1741327.082837, a = 802.317639, b = 152.613108\n",
  1162. "epoch 934: loss = 1741241.126703, a = 802.609794, b = 152.612922\n",
  1163. "epoch 935: loss = 1741155.512682, a = 802.901365, b = 152.612736\n",
  1164. "epoch 936: loss = 1741070.239409, a = 803.192353, b = 152.612550\n",
  1165. "epoch 937: loss = 1740985.305526, a = 803.482759, b = 152.612364\n",
  1166. "epoch 938: loss = 1740900.709678, a = 803.772585, b = 152.612179\n",
  1167. "epoch 939: loss = 1740816.450518, a = 804.061831, b = 152.611994\n",
  1168. "epoch 940: loss = 1740732.526703, a = 804.350498, b = 152.611810\n",
  1169. "epoch 941: loss = 1740648.936897, a = 804.638588, b = 152.611626\n",
  1170. "epoch 942: loss = 1740565.679766, a = 804.926103, b = 152.611442\n",
  1171. "epoch 943: loss = 1740482.753986, a = 805.213042, b = 152.611259\n",
  1172. "epoch 944: loss = 1740400.158233, a = 805.499407, b = 152.611076\n",
  1173. "epoch 945: loss = 1740317.891193, a = 805.785200, b = 152.610894\n",
  1174. "epoch 946: loss = 1740235.951555, a = 806.070421, b = 152.610712\n",
  1175. "epoch 947: loss = 1740154.338013, a = 806.355072, b = 152.610530\n",
  1176. "epoch 948: loss = 1740073.049267, a = 806.639154, b = 152.610348\n",
  1177. "epoch 949: loss = 1739992.084021, a = 806.922668, b = 152.610167\n",
  1178. "epoch 950: loss = 1739911.440986, a = 807.205615, b = 152.609986\n",
  1179. "epoch 951: loss = 1739831.118877, a = 807.487996, b = 152.609806\n",
  1180. "epoch 952: loss = 1739751.116414, a = 807.769812, b = 152.609626\n",
  1181. "epoch 953: loss = 1739671.432323, a = 808.051065, b = 152.609446\n",
  1182. "epoch 954: loss = 1739592.065335, a = 808.331755, b = 152.609267\n",
  1183. "epoch 955: loss = 1739513.014184, a = 808.611884, b = 152.609088\n",
  1184. "epoch 956: loss = 1739434.277612, a = 808.891453, b = 152.608910\n",
  1185. "epoch 957: loss = 1739355.854363, a = 809.170463, b = 152.608732\n",
  1186. "epoch 958: loss = 1739277.743190, a = 809.448915, b = 152.608554\n",
  1187. "epoch 959: loss = 1739199.942847, a = 809.726810, b = 152.608376\n",
  1188. "epoch 960: loss = 1739122.452096, a = 810.004149, b = 152.608199\n",
  1189. "epoch 961: loss = 1739045.269701, a = 810.280934, b = 152.608022\n",
  1190. "epoch 962: loss = 1738968.394433, a = 810.557165, b = 152.607846\n",
  1191. "epoch 963: loss = 1738891.825068, a = 810.832844, b = 152.607670\n",
  1192. "epoch 964: loss = 1738815.560385, a = 811.107972, b = 152.607494\n",
  1193. "epoch 965: loss = 1738739.599171, a = 811.382550, b = 152.607319\n",
  1194. "epoch 966: loss = 1738663.940215, a = 811.656578, b = 152.607144\n",
  1195. "epoch 967: loss = 1738588.582311, a = 811.930059, b = 152.606969\n",
  1196. "epoch 968: loss = 1738513.524261, a = 812.202992, b = 152.606795\n",
  1197. "epoch 969: loss = 1738438.764867, a = 812.475380, b = 152.606621\n",
  1198. "epoch 970: loss = 1738364.302940, a = 812.747223, b = 152.606447\n",
  1199. "epoch 971: loss = 1738290.137292, a = 813.018523, b = 152.606274\n",
  1200. "epoch 972: loss = 1738216.266744, a = 813.289280, b = 152.606101\n",
  1201. "epoch 973: loss = 1738142.690118, a = 813.559496, b = 152.605928\n",
  1202. "epoch 974: loss = 1738069.406242, a = 813.829171, b = 152.605756\n",
  1203. "epoch 975: loss = 1737996.413950, a = 814.098307, b = 152.605584\n",
  1204. "epoch 976: loss = 1737923.712078, a = 814.366905, b = 152.605413\n",
  1205. "epoch 977: loss = 1737851.299469, a = 814.634966, b = 152.605241\n",
  1206. "epoch 978: loss = 1737779.174969, a = 814.902490, b = 152.605071\n",
  1207. "epoch 979: loss = 1737707.337430, a = 815.169480, b = 152.604900\n",
  1208. "epoch 980: loss = 1737635.785708, a = 815.435936, b = 152.604730\n",
  1209. "epoch 981: loss = 1737564.518663, a = 815.701859, b = 152.604560\n",
  1210. "epoch 982: loss = 1737493.535160, a = 815.967250, b = 152.604390\n",
  1211. "epoch 983: loss = 1737422.834069, a = 816.232111, b = 152.604221\n",
  1212. "epoch 984: loss = 1737352.414263, a = 816.496442, b = 152.604052\n",
  1213. "epoch 985: loss = 1737282.274622, a = 816.760244, b = 152.603884\n",
  1214. "epoch 986: loss = 1737212.414028, a = 817.023519, b = 152.603716\n",
  1215. "epoch 987: loss = 1737142.831368, a = 817.286268, b = 152.603548\n",
  1216. "epoch 988: loss = 1737073.525536, a = 817.548491, b = 152.603381\n",
  1217. "epoch 989: loss = 1737004.495426, a = 817.810189, b = 152.603213\n",
  1218. "epoch 990: loss = 1736935.739941, a = 818.071365, b = 152.603047\n",
  1219. "epoch 991: loss = 1736867.257984, a = 818.332018, b = 152.602880\n",
  1220. "epoch 992: loss = 1736799.048465, a = 818.592150, b = 152.602714\n",
  1221. "epoch 993: loss = 1736731.110299, a = 818.851761, b = 152.602548\n",
  1222. "epoch 994: loss = 1736663.442403, a = 819.110854, b = 152.602383\n",
  1223. "epoch 995: loss = 1736596.043701, a = 819.369428, b = 152.602218\n",
  1224. "epoch 996: loss = 1736528.913118, a = 819.627486, b = 152.602053\n",
  1225. "epoch 997: loss = 1736462.049586, a = 819.885027, b = 152.601888\n",
  1226. "epoch 998: loss = 1736395.452040, a = 820.142053, b = 152.601724\n",
  1227. "epoch 999: loss = 1736329.119420, a = 820.398566, b = 152.601560\n",
  1228. "epoch 1000: loss = 1736263.050670, a = 820.654565, b = 152.601397\n",
  1229. "epoch 1001: loss = 1736197.244737, a = 820.910053, b = 152.601234\n",
  1230. "epoch 1002: loss = 1736131.700574, a = 821.165029, b = 152.601071\n",
  1231. "epoch 1003: loss = 1736066.417138, a = 821.419496, b = 152.600908\n",
  1232. "epoch 1004: loss = 1736001.393389, a = 821.673454, b = 152.600746\n",
  1233. "epoch 1005: loss = 1735936.628292, a = 821.926904, b = 152.600584\n",
  1234. "epoch 1006: loss = 1735872.120815, a = 822.179847, b = 152.600422\n",
  1235. "epoch 1007: loss = 1735807.869932, a = 822.432285, b = 152.600261\n",
  1236. "epoch 1008: loss = 1735743.874619, a = 822.684217, b = 152.600100\n",
  1237. "epoch 1009: loss = 1735680.133859, a = 822.935646, b = 152.599940\n",
  1238. "epoch 1010: loss = 1735616.646635, a = 823.186572, b = 152.599780\n",
  1239. "epoch 1011: loss = 1735553.411939, a = 823.436997, b = 152.599620\n",
  1240. "epoch 1012: loss = 1735490.428761, a = 823.686920, b = 152.599460\n",
  1241. "epoch 1013: loss = 1735427.696101, a = 823.936344, b = 152.599301\n",
  1242. "epoch 1014: loss = 1735365.212960, a = 824.185269, b = 152.599142\n",
  1243. "epoch 1015: loss = 1735302.978342, a = 824.433697, b = 152.598983\n",
  1244. "epoch 1016: loss = 1735240.991257, a = 824.681627, b = 152.598825\n",
  1245. "epoch 1017: loss = 1735179.250719, a = 824.929062, b = 152.598667\n",
  1246. "epoch 1018: loss = 1735117.755744, a = 825.176002, b = 152.598509\n",
  1247. "epoch 1019: loss = 1735056.505353, a = 825.422448, b = 152.598351\n",
  1248. "epoch 1020: loss = 1734995.498573, a = 825.668401, b = 152.598194\n",
  1249. "epoch 1021: loss = 1734934.734430, a = 825.913863, b = 152.598038\n",
  1250. "epoch 1022: loss = 1734874.211960, a = 826.158833, b = 152.597881\n",
  1251. "epoch 1023: loss = 1734813.930197, a = 826.403314, b = 152.597725\n",
  1252. "epoch 1024: loss = 1734753.888182, a = 826.647306, b = 152.597569\n",
  1253. "epoch 1025: loss = 1734694.084961, a = 826.890810, b = 152.597414\n",
  1254. "epoch 1026: loss = 1734634.519580, a = 827.133827, b = 152.597258\n",
  1255. "epoch 1027: loss = 1734575.191092, a = 827.376358, b = 152.597104\n",
  1256. "epoch 1028: loss = 1734516.098553, a = 827.618405, b = 152.596949\n",
  1257. "epoch 1029: loss = 1734457.241022, a = 827.859967, b = 152.596795\n",
  1258. "epoch 1030: loss = 1734398.617562, a = 828.101046, b = 152.596641\n",
  1259. "epoch 1031: loss = 1734340.227240, a = 828.341643, b = 152.596487\n",
  1260. "epoch 1032: loss = 1734282.069127, a = 828.581759, b = 152.596334\n",
  1261. "epoch 1033: loss = 1734224.142298, a = 828.821394, b = 152.596181\n",
  1262. "epoch 1034: loss = 1734166.445830, a = 829.060551, b = 152.596028\n",
  1263. "epoch 1035: loss = 1734108.978805, a = 829.299229, b = 152.595875\n",
  1264. "epoch 1036: loss = 1734051.740309, a = 829.537430, b = 152.595723\n",
  1265. "epoch 1037: loss = 1733994.729431, a = 829.775155, b = 152.595571\n",
  1266. "epoch 1038: loss = 1733937.945263, a = 830.012405, b = 152.595420\n",
  1267. "epoch 1039: loss = 1733881.386903, a = 830.249179, b = 152.595269\n",
  1268. "epoch 1040: loss = 1733825.053449, a = 830.485481, b = 152.595118\n",
  1269. "epoch 1041: loss = 1733768.944005, a = 830.721310, b = 152.594967\n",
  1270. "epoch 1042: loss = 1733713.057679, a = 830.956667, b = 152.594817\n",
  1271. "epoch 1043: loss = 1733657.393581, a = 831.191554, b = 152.594667\n",
  1272. "epoch 1044: loss = 1733601.950825, a = 831.425971, b = 152.594517\n",
  1273. "epoch 1045: loss = 1733546.728530, a = 831.659919, b = 152.594368\n",
  1274. "epoch 1046: loss = 1733491.725816, a = 831.893400, b = 152.594218\n",
  1275. "epoch 1047: loss = 1733436.941808, a = 832.126413, b = 152.594070\n",
  1276. "epoch 1048: loss = 1733382.375635, a = 832.358961, b = 152.593921\n",
  1277. "epoch 1049: loss = 1733328.026428, a = 832.591044, b = 152.593773\n",
  1278. "epoch 1050: loss = 1733273.893322, a = 832.822662, b = 152.593625\n",
  1279. "epoch 1051: loss = 1733219.975457, a = 833.053817, b = 152.593477\n",
  1280. "epoch 1052: loss = 1733166.271975, a = 833.284511, b = 152.593330\n",
  1281. "epoch 1053: loss = 1733112.782020, a = 833.514742, b = 152.593183\n",
  1282. "epoch 1054: loss = 1733059.504742, a = 833.744514, b = 152.593036\n",
  1283. "epoch 1055: loss = 1733006.439293, a = 833.973826, b = 152.592890\n",
  1284. "epoch 1056: loss = 1732953.584830, a = 834.202679, b = 152.592744\n",
  1285. "epoch 1057: loss = 1732900.940510, a = 834.431075, b = 152.592598\n",
  1286. "epoch 1058: loss = 1732848.505497, a = 834.659014, b = 152.592452\n",
  1287. "epoch 1059: loss = 1732796.278956, a = 834.886497, b = 152.592307\n",
  1288. "epoch 1060: loss = 1732744.260056, a = 835.113526, b = 152.592162\n",
  1289. "epoch 1061: loss = 1732692.447971, a = 835.340100, b = 152.592017\n",
  1290. "epoch 1062: loss = 1732640.841875, a = 835.566221, b = 152.591873\n",
  1291. "epoch 1063: loss = 1732589.440947, a = 835.791890, b = 152.591729\n",
  1292. "epoch 1064: loss = 1732538.244371, a = 836.017108, b = 152.591585\n",
  1293. "epoch 1065: loss = 1732487.251331, a = 836.241876, b = 152.591441\n",
  1294. "epoch 1066: loss = 1732436.461017, a = 836.466194, b = 152.591298\n",
  1295. "epoch 1067: loss = 1732385.872620, a = 836.690063, b = 152.591155\n",
  1296. "epoch 1068: loss = 1732335.485336, a = 836.913485, b = 152.591012\n",
  1297. "epoch 1069: loss = 1732285.298362, a = 837.136460, b = 152.590870\n",
  1298. "epoch 1070: loss = 1732235.310902, a = 837.358990, b = 152.590728\n",
  1299. "epoch 1071: loss = 1732185.522160, a = 837.581074, b = 152.590586\n",
  1300. "epoch 1072: loss = 1732135.931343, a = 837.802714, b = 152.590444\n",
  1301. "epoch 1073: loss = 1732086.537664, a = 838.023911, b = 152.590303\n",
  1302. "epoch 1074: loss = 1732037.340336, a = 838.244665, b = 152.590162\n",
  1303. "epoch 1075: loss = 1731988.338577, a = 838.464978, b = 152.590021\n",
  1304. "epoch 1076: loss = 1731939.531607, a = 838.684851, b = 152.589881\n",
  1305. "epoch 1077: loss = 1731890.918651, a = 838.904284, b = 152.589741\n",
  1306. "epoch 1078: loss = 1731842.498935, a = 839.123278, b = 152.589601\n",
  1307. "epoch 1079: loss = 1731794.271688, a = 839.341834, b = 152.589461\n",
  1308. "epoch 1080: loss = 1731746.236145, a = 839.559954, b = 152.589322\n",
  1309. "epoch 1081: loss = 1731698.391541, a = 839.777637, b = 152.589183\n",
  1310. "epoch 1082: loss = 1731650.737115, a = 839.994884, b = 152.589044\n",
  1311. "epoch 1083: loss = 1731603.272109, a = 840.211698, b = 152.588906\n",
  1312. "epoch 1084: loss = 1731555.995768, a = 840.428077, b = 152.588767\n",
  1313. "epoch 1085: loss = 1731508.907341, a = 840.644024, b = 152.588629\n",
  1314. "epoch 1086: loss = 1731462.006079, a = 840.859540, b = 152.588492\n",
  1315. "epoch 1087: loss = 1731415.291236, a = 841.074624, b = 152.588354\n",
  1316. "epoch 1088: loss = 1731368.762068, a = 841.289278, b = 152.588217\n",
  1317. "epoch 1089: loss = 1731322.417837, a = 841.503503, b = 152.588081\n",
  1318. "epoch 1090: loss = 1731276.257805, a = 841.717299, b = 152.587944\n",
  1319. "epoch 1091: loss = 1731230.281238, a = 841.930668, b = 152.587808\n",
  1320. "epoch 1092: loss = 1731184.487405, a = 842.143611, b = 152.587672\n",
  1321. "epoch 1093: loss = 1731138.875577, a = 842.356127, b = 152.587536\n",
  1322. "epoch 1094: loss = 1731093.445031, a = 842.568219, b = 152.587401\n",
  1323. "epoch 1095: loss = 1731048.195043, a = 842.779886, b = 152.587265\n",
  1324. "epoch 1096: loss = 1731003.124893, a = 842.991131, b = 152.587130\n",
  1325. "epoch 1097: loss = 1730958.233866, a = 843.201952, b = 152.586996\n",
  1326. "epoch 1098: loss = 1730913.521247, a = 843.412353, b = 152.586861\n",
  1327. "epoch 1099: loss = 1730868.986325, a = 843.622332, b = 152.586727\n",
  1328. "epoch 1100: loss = 1730824.628393, a = 843.831892, b = 152.586593\n",
  1329. "epoch 1101: loss = 1730780.446745, a = 844.041032, b = 152.586460\n",
  1330. "epoch 1102: loss = 1730736.440678, a = 844.249755, b = 152.586327\n",
  1331. "epoch 1103: loss = 1730692.609494, a = 844.458059, b = 152.586193\n",
  1332. "epoch 1104: loss = 1730648.952495, a = 844.665948, b = 152.586061\n",
  1333. "epoch 1105: loss = 1730605.468987, a = 844.873421, b = 152.585928\n",
  1334. "epoch 1106: loss = 1730562.158279, a = 845.080478, b = 152.585796\n",
  1335. "epoch 1107: loss = 1730519.019683, a = 845.287122, b = 152.585664\n",
  1336. "epoch 1108: loss = 1730476.052512, a = 845.493353, b = 152.585532\n",
  1337. "epoch 1109: loss = 1730433.256083, a = 845.699171, b = 152.585401\n",
  1338. "epoch 1110: loss = 1730390.629717, a = 845.904578, b = 152.585270\n",
  1339. "epoch 1111: loss = 1730348.172735, a = 846.109573, b = 152.585139\n",
  1340. "epoch 1112: loss = 1730305.884463, a = 846.314159, b = 152.585008\n",
  1341. "epoch 1113: loss = 1730263.764229, a = 846.518336, b = 152.584878\n",
  1342. "epoch 1114: loss = 1730221.811362, a = 846.722105, b = 152.584747\n",
  1343. "epoch 1115: loss = 1730180.025197, a = 846.925466, b = 152.584618\n",
  1344. "epoch 1116: loss = 1730138.405068, a = 847.128420, b = 152.584488\n",
  1345. "epoch 1117: loss = 1730096.950315, a = 847.330969, b = 152.584359\n",
  1346. "epoch 1118: loss = 1730055.660278, a = 847.533112, b = 152.584229\n",
  1347. "epoch 1119: loss = 1730014.534302, a = 847.734852, b = 152.584101\n",
  1348. "epoch 1120: loss = 1729973.571731, a = 847.936188, b = 152.583972\n",
  1349. "epoch 1121: loss = 1729932.771917, a = 848.137121, b = 152.583844\n",
  1350. "epoch 1122: loss = 1729892.134209, a = 848.337652, b = 152.583716\n",
  1351. "epoch 1123: loss = 1729851.657962, a = 848.537783, b = 152.583588\n",
  1352. "epoch 1124: loss = 1729811.342534, a = 848.737513, b = 152.583460\n",
  1353. "epoch 1125: loss = 1729771.187282, a = 848.936844, b = 152.583333\n",
  1354. "epoch 1126: loss = 1729731.191569, a = 849.135776, b = 152.583206\n",
  1355. "epoch 1127: loss = 1729691.354760, a = 849.334311, b = 152.583079\n",
  1356. "epoch 1128: loss = 1729651.676220, a = 849.532449, b = 152.582952\n",
  1357. "epoch 1129: loss = 1729612.155321, a = 849.730190, b = 152.582826\n",
  1358. "epoch 1130: loss = 1729572.791433, a = 849.927536, b = 152.582700\n",
  1359. "epoch 1131: loss = 1729533.583931, a = 850.124487, b = 152.582574\n",
  1360. "epoch 1132: loss = 1729494.532192, a = 850.321044, b = 152.582449\n",
  1361. "epoch 1133: loss = 1729455.635596, a = 850.517209, b = 152.582324\n",
  1362. "epoch 1134: loss = 1729416.893524, a = 850.712981, b = 152.582198\n",
  1363. "epoch 1135: loss = 1729378.305361, a = 850.908362, b = 152.582074\n",
  1364. "epoch 1136: loss = 1729339.870493, a = 851.103352, b = 152.581949\n",
  1365. "epoch 1137: loss = 1729301.588311, a = 851.297952, b = 152.581825\n",
  1366. "epoch 1138: loss = 1729263.458205, a = 851.492162, b = 152.581701\n",
  1367. "epoch 1139: loss = 1729225.479569, a = 851.685985, b = 152.581577\n",
  1368. "epoch 1140: loss = 1729187.651801, a = 851.879420, b = 152.581453\n",
  1369. "epoch 1141: loss = 1729149.974300, a = 852.072468, b = 152.581330\n",
  1370. "epoch 1142: loss = 1729112.446466, a = 852.265130, b = 152.581207\n",
  1371. "epoch 1143: loss = 1729075.067703, a = 852.457407, b = 152.581084\n",
  1372. "epoch 1144: loss = 1729037.837419, a = 852.649299, b = 152.580962\n",
  1373. "epoch 1145: loss = 1729000.755020, a = 852.840808, b = 152.580839\n",
  1374. "epoch 1146: loss = 1728963.819918, a = 853.031934, b = 152.580717\n",
  1375. "epoch 1147: loss = 1728927.031526, a = 853.222677, b = 152.580596\n",
  1376. "epoch 1148: loss = 1728890.389260, a = 853.413039, b = 152.580474\n",
  1377. "epoch 1149: loss = 1728853.892538, a = 853.603021, b = 152.580353\n",
  1378. "epoch 1150: loss = 1728817.540780, a = 853.792622, b = 152.580232\n",
  1379. "epoch 1151: loss = 1728781.333408, a = 853.981845, b = 152.580111\n",
  1380. "epoch 1152: loss = 1728745.269847, a = 854.170689, b = 152.579990\n",
  1381. "epoch 1153: loss = 1728709.349524, a = 854.359155, b = 152.579870\n",
  1382. "epoch 1154: loss = 1728673.571869, a = 854.547245, b = 152.579750\n",
  1383. "epoch 1155: loss = 1728637.936314, a = 854.734958, b = 152.579630\n",
  1384. "epoch 1156: loss = 1728602.442292, a = 854.922296, b = 152.579510\n",
  1385. "epoch 1157: loss = 1728567.089239, a = 855.109259, b = 152.579391\n",
  1386. "epoch 1158: loss = 1728531.876595, a = 855.295849, b = 152.579271\n",
  1387. "epoch 1159: loss = 1728496.803799, a = 855.482065, b = 152.579152\n",
  1388. "epoch 1160: loss = 1728461.870295, a = 855.667909, b = 152.579034\n",
  1389. "epoch 1161: loss = 1728427.075528, a = 855.853382, b = 152.578915\n",
  1390. "epoch 1162: loss = 1728392.418945, a = 856.038483, b = 152.578797\n",
  1391. "epoch 1163: loss = 1728357.899996, a = 856.223215, b = 152.578679\n",
  1392. "epoch 1164: loss = 1728323.518132, a = 856.407577, b = 152.578561\n",
  1393. "epoch 1165: loss = 1728289.272808, a = 856.591570, b = 152.578444\n",
  1394. "epoch 1166: loss = 1728255.163480, a = 856.775195, b = 152.578327\n",
  1395. "epoch 1167: loss = 1728221.189605, a = 856.958454, b = 152.578210\n",
  1396. "epoch 1168: loss = 1728187.350645, a = 857.141345, b = 152.578093\n",
  1397. "epoch 1169: loss = 1728153.646062, a = 857.323871, b = 152.577976\n",
  1398. "epoch 1170: loss = 1728120.075320, a = 857.506033, b = 152.577860\n",
  1399. "epoch 1171: loss = 1728086.637887, a = 857.687829, b = 152.577744\n",
  1400. "epoch 1172: loss = 1728053.333232, a = 857.869263, b = 152.577628\n",
  1401. "epoch 1173: loss = 1728020.160826, a = 858.050333, b = 152.577512\n",
  1402. "epoch 1174: loss = 1727987.120142, a = 858.231041, b = 152.577397\n",
  1403. "epoch 1175: loss = 1727954.210655, a = 858.411388, b = 152.577282\n",
  1404. "epoch 1176: loss = 1727921.431843, a = 858.591375, b = 152.577167\n",
  1405. "epoch 1177: loss = 1727888.783186, a = 858.771001, b = 152.577052\n",
  1406. "epoch 1178: loss = 1727856.264164, a = 858.950268, b = 152.576937\n",
  1407. "epoch 1179: loss = 1727823.874263, a = 859.129177, b = 152.576823\n",
  1408. "epoch 1180: loss = 1727791.612966, a = 859.307728, b = 152.576709\n",
  1409. "epoch 1181: loss = 1727759.479763, a = 859.485922, b = 152.576595\n",
  1410. "epoch 1182: loss = 1727727.474143, a = 859.663760, b = 152.576482\n",
  1411. "epoch 1183: loss = 1727695.595598, a = 859.841242, b = 152.576368\n",
  1412. "epoch 1184: loss = 1727663.843621, a = 860.018369, b = 152.576255\n",
  1413. "epoch 1185: loss = 1727632.217709, a = 860.195142, b = 152.576142\n",
  1414. "epoch 1186: loss = 1727600.717360, a = 860.371562, b = 152.576030\n",
  1415. "epoch 1187: loss = 1727569.342073, a = 860.547628, b = 152.575917\n",
  1416. "epoch 1188: loss = 1727538.091351, a = 860.723343, b = 152.575805\n",
  1417. "epoch 1189: loss = 1727506.964697, a = 860.898706, b = 152.575693\n",
  1418. "epoch 1190: loss = 1727475.961618, a = 861.073719, b = 152.575581\n",
  1419. "epoch 1191: loss = 1727445.081620, a = 861.248381, b = 152.575470\n",
  1420. "epoch 1192: loss = 1727414.324214, a = 861.422695, b = 152.575358\n",
  1421. "epoch 1193: loss = 1727383.688912, a = 861.596659, b = 152.575247\n",
  1422. "epoch 1194: loss = 1727353.175228, a = 861.770276, b = 152.575136\n",
  1423. "epoch 1195: loss = 1727322.782676, a = 861.943546, b = 152.575026\n",
  1424. "epoch 1196: loss = 1727292.510775, a = 862.116469, b = 152.574915\n",
  1425. "epoch 1197: loss = 1727262.359044, a = 862.289047, b = 152.574805\n",
  1426. "epoch 1198: loss = 1727232.327005, a = 862.461279, b = 152.574695\n",
  1427. "epoch 1199: loss = 1727202.414181, a = 862.633167, b = 152.574585\n",
  1428. "epoch 1200: loss = 1727172.620097, a = 862.804711, b = 152.574476\n",
  1429. "epoch 1201: loss = 1727142.944280, a = 862.975912, b = 152.574366\n",
  1430. "epoch 1202: loss = 1727113.386259, a = 863.146771, b = 152.574257\n",
  1431. "epoch 1203: loss = 1727083.945566, a = 863.317288, b = 152.574148\n",
  1432. "epoch 1204: loss = 1727054.621733, a = 863.487464, b = 152.574039\n",
  1433. "epoch 1205: loss = 1727025.414294, a = 863.657300, b = 152.573931\n",
  1434. "epoch 1206: loss = 1726996.322787, a = 863.826797, b = 152.573823\n",
  1435. "epoch 1207: loss = 1726967.346749, a = 863.995954, b = 152.573715\n",
  1436. "epoch 1208: loss = 1726938.485720, a = 864.164773, b = 152.573607\n",
  1437. "epoch 1209: loss = 1726909.739243, a = 864.333255, b = 152.573499\n",
  1438. "epoch 1210: loss = 1726881.106862, a = 864.501399, b = 152.573392\n",
  1439. "epoch 1211: loss = 1726852.588122, a = 864.669208, b = 152.573285\n",
  1440. "epoch 1212: loss = 1726824.182571, a = 864.836680, b = 152.573178\n",
  1441. "epoch 1213: loss = 1726795.889757, a = 865.003818, b = 152.573071\n",
  1442. "epoch 1214: loss = 1726767.709233, a = 865.170622, b = 152.572964\n",
  1443. "epoch 1215: loss = 1726739.640550, a = 865.337092, b = 152.572858\n",
  1444. "epoch 1216: loss = 1726711.683264, a = 865.503229, b = 152.572752\n",
  1445. "epoch 1217: loss = 1726683.836931, a = 865.669034, b = 152.572646\n",
  1446. "epoch 1218: loss = 1726656.101109, a = 865.834508, b = 152.572540\n",
  1447. "epoch 1219: loss = 1726628.475358, a = 865.999650, b = 152.572435\n",
  1448. "epoch 1220: loss = 1726600.959240, a = 866.164463, b = 152.572330\n",
  1449. "epoch 1221: loss = 1726573.552318, a = 866.328946, b = 152.572225\n",
  1450. "epoch 1222: loss = 1726546.254158, a = 866.493100, b = 152.572120\n",
  1451. "epoch 1223: loss = 1726519.064326, a = 866.656925, b = 152.572015\n",
  1452. "epoch 1224: loss = 1726491.982391, a = 866.820423, b = 152.571911\n",
  1453. "epoch 1225: loss = 1726465.007924, a = 866.983594, b = 152.571807\n",
  1454. "epoch 1226: loss = 1726438.140496, a = 867.146439, b = 152.571702\n",
  1455. "epoch 1227: loss = 1726411.379682, a = 867.308958, b = 152.571599\n",
  1456. "epoch 1228: loss = 1726384.725056, a = 867.471152, b = 152.571495\n",
  1457. "epoch 1229: loss = 1726358.176197, a = 867.633022, b = 152.571392\n",
  1458. "epoch 1230: loss = 1726331.732682, a = 867.794568, b = 152.571289\n",
  1459. "epoch 1231: loss = 1726305.394093, a = 867.955792, b = 152.571186\n",
  1460. "epoch 1232: loss = 1726279.160012, a = 868.116692, b = 152.571083\n",
  1461. "epoch 1233: loss = 1726253.030023, a = 868.277271, b = 152.570980\n",
  1462. "epoch 1234: loss = 1726227.003711, a = 868.437529, b = 152.570878\n",
  1463. "epoch 1235: loss = 1726201.080663, a = 868.597467, b = 152.570776\n",
  1464. "epoch 1236: loss = 1726175.260468, a = 868.757084, b = 152.570674\n",
  1465. "epoch 1237: loss = 1726149.542718, a = 868.916383, b = 152.570572\n",
  1466. "epoch 1238: loss = 1726123.927003, a = 869.075362, b = 152.570471\n",
  1467. "epoch 1239: loss = 1726098.412918, a = 869.234024, b = 152.570369\n",
  1468. "epoch 1240: loss = 1726073.000058, a = 869.392369, b = 152.570268\n",
  1469. "epoch 1241: loss = 1726047.688020, a = 869.550397, b = 152.570167\n",
  1470. "epoch 1242: loss = 1726022.476403, a = 869.708109, b = 152.570066\n",
  1471. "epoch 1243: loss = 1725997.364807, a = 869.865506, b = 152.569966\n",
  1472. "epoch 1244: loss = 1725972.352833, a = 870.022588, b = 152.569866\n",
  1473. "epoch 1245: loss = 1725947.440086, a = 870.179356, b = 152.569765\n",
  1474. "epoch 1246: loss = 1725922.626169, a = 870.335810, b = 152.569665\n",
  1475. "epoch 1247: loss = 1725897.910690, a = 870.491951, b = 152.569566\n",
  1476. "epoch 1248: loss = 1725873.293257, a = 870.647781, b = 152.569466\n",
  1477. "epoch 1249: loss = 1725848.773479, a = 870.803298, b = 152.569367\n",
  1478. "epoch 1250: loss = 1725824.350968, a = 870.958505, b = 152.569268\n",
  1479. "epoch 1251: loss = 1725800.025336, a = 871.113401, b = 152.569169\n",
  1480. "epoch 1252: loss = 1725775.796198, a = 871.267988, b = 152.569070\n",
  1481. "epoch 1253: loss = 1725751.663170, a = 871.422265, b = 152.568972\n",
  1482. "epoch 1254: loss = 1725727.625869, a = 871.576234, b = 152.568873\n",
  1483. "epoch 1255: loss = 1725703.683913, a = 871.729895, b = 152.568775\n",
  1484. "epoch 1256: loss = 1725679.836924, a = 871.883249, b = 152.568677\n",
  1485. "epoch 1257: loss = 1725656.084523, a = 872.036296, b = 152.568579\n",
  1486. "epoch 1258: loss = 1725632.426334, a = 872.189037, b = 152.568482\n",
  1487. "epoch 1259: loss = 1725608.861981, a = 872.341473, b = 152.568384\n",
  1488. "epoch 1260: loss = 1725585.391092, a = 872.493604, b = 152.568287\n",
  1489. "epoch 1261: loss = 1725562.013294, a = 872.645430, b = 152.568190\n",
  1490. "epoch 1262: loss = 1725538.728217, a = 872.796953, b = 152.568094\n",
  1491. "epoch 1263: loss = 1725515.535491, a = 872.948173, b = 152.567997\n",
  1492. "epoch 1264: loss = 1725492.434749, a = 873.099091, b = 152.567901\n",
  1493. "epoch 1265: loss = 1725469.425625, a = 873.249707, b = 152.567804\n",
  1494. "epoch 1266: loss = 1725446.507753, a = 873.400021, b = 152.567708\n",
  1495. "epoch 1267: loss = 1725423.680772, a = 873.550035, b = 152.567613\n",
  1496. "epoch 1268: loss = 1725400.944319, a = 873.699749, b = 152.567517\n",
  1497. "epoch 1269: loss = 1725378.298033, a = 873.849164, b = 152.567421\n",
  1498. "epoch 1270: loss = 1725355.741556, a = 873.998280, b = 152.567326\n",
  1499. "epoch 1271: loss = 1725333.274530, a = 874.147098, b = 152.567231\n",
  1500. "epoch 1272: loss = 1725310.896600, a = 874.295618, b = 152.567136\n",
  1501. "epoch 1273: loss = 1725288.607410, a = 874.443841, b = 152.567042\n",
  1502. "epoch 1274: loss = 1725266.406608, a = 874.591768, b = 152.566947\n",
  1503. "epoch 1275: loss = 1725244.293841, a = 874.739399, b = 152.566853\n",
  1504. "epoch 1276: loss = 1725222.268760, a = 874.886735, b = 152.566759\n",
  1505. "epoch 1277: loss = 1725200.331014, a = 875.033776, b = 152.566665\n",
  1506. "epoch 1278: loss = 1725178.480257, a = 875.180523, b = 152.566571\n",
  1507. "epoch 1279: loss = 1725156.716143, a = 875.326977, b = 152.566478\n",
  1508. "epoch 1280: loss = 1725135.038326, a = 875.473137, b = 152.566384\n",
  1509. "epoch 1281: loss = 1725113.446463, a = 875.619006, b = 152.566291\n",
  1510. "epoch 1282: loss = 1725091.940212, a = 875.764583, b = 152.566198\n",
  1511. "epoch 1283: loss = 1725070.519232, a = 875.909868, b = 152.566105\n",
  1512. "epoch 1284: loss = 1725049.183184, a = 876.054864, b = 152.566013\n",
  1513. "epoch 1285: loss = 1725027.931730, a = 876.199569, b = 152.565920\n",
  1514. "epoch 1286: loss = 1725006.764533, a = 876.343985, b = 152.565828\n",
  1515. "epoch 1287: loss = 1724985.681258, a = 876.488112, b = 152.565736\n",
  1516. "epoch 1288: loss = 1724964.681570, a = 876.631951, b = 152.565644\n",
  1517. "epoch 1289: loss = 1724943.765137, a = 876.775502, b = 152.565552\n",
  1518. "epoch 1290: loss = 1724922.931629, a = 876.918766, b = 152.565461\n",
  1519. "epoch 1291: loss = 1724902.180714, a = 877.061744, b = 152.565370\n",
  1520. "epoch 1292: loss = 1724881.512064, a = 877.204436, b = 152.565278\n",
  1521. "epoch 1293: loss = 1724860.925351, a = 877.346842, b = 152.565188\n",
  1522. "epoch 1294: loss = 1724840.420250, a = 877.488964, b = 152.565097\n",
  1523. "epoch 1295: loss = 1724819.996436, a = 877.630802, b = 152.565006\n"
  1524. ]
  1525. },
  1526. {
  1527. "name": "stdout",
  1528. "output_type": "stream",
  1529. "text": [
  1530. "epoch 1296: loss = 1724799.653585, a = 877.772356, b = 152.564916\n",
  1531. "epoch 1297: loss = 1724779.391376, a = 877.913626, b = 152.564826\n",
  1532. "epoch 1298: loss = 1724759.209486, a = 878.054615, b = 152.564735\n",
  1533. "epoch 1299: loss = 1724739.107597, a = 878.195321, b = 152.564646\n",
  1534. "epoch 1300: loss = 1724719.085390, a = 878.335746, b = 152.564556\n",
  1535. "epoch 1301: loss = 1724699.142548, a = 878.475891, b = 152.564466\n",
  1536. "epoch 1302: loss = 1724679.278756, a = 878.615755, b = 152.564377\n",
  1537. "epoch 1303: loss = 1724659.493698, a = 878.755339, b = 152.564288\n",
  1538. "epoch 1304: loss = 1724639.787061, a = 878.894644, b = 152.564199\n",
  1539. "epoch 1305: loss = 1724620.158533, a = 879.033671, b = 152.564110\n",
  1540. "epoch 1306: loss = 1724600.607805, a = 879.172419, b = 152.564022\n",
  1541. "epoch 1307: loss = 1724581.134564, a = 879.310891, b = 152.563933\n",
  1542. "epoch 1308: loss = 1724561.738505, a = 879.449085, b = 152.563845\n",
  1543. "epoch 1309: loss = 1724542.419319, a = 879.587003, b = 152.563757\n",
  1544. "epoch 1310: loss = 1724523.176700, a = 879.724645, b = 152.563669\n",
  1545. "epoch 1311: loss = 1724504.010344, a = 879.862012, b = 152.563581\n",
  1546. "epoch 1312: loss = 1724484.919948, a = 879.999104, b = 152.563494\n",
  1547. "epoch 1313: loss = 1724465.905208, a = 880.135922, b = 152.563406\n",
  1548. "epoch 1314: loss = 1724446.965825, a = 880.272467, b = 152.563319\n",
  1549. "epoch 1315: loss = 1724428.101498, a = 880.408738, b = 152.563232\n",
  1550. "epoch 1316: loss = 1724409.311929, a = 880.544737, b = 152.563145\n",
  1551. "epoch 1317: loss = 1724390.596819, a = 880.680464, b = 152.563058\n",
  1552. "epoch 1318: loss = 1724371.955874, a = 880.815920, b = 152.562972\n",
  1553. "epoch 1319: loss = 1724353.388797, a = 880.951104, b = 152.562886\n",
  1554. "epoch 1320: loss = 1724334.895295, a = 881.086019, b = 152.562799\n",
  1555. "epoch 1321: loss = 1724316.475075, a = 881.220663, b = 152.562713\n",
  1556. "epoch 1322: loss = 1724298.127846, a = 881.355039, b = 152.562628\n",
  1557. "epoch 1323: loss = 1724279.853317, a = 881.489145, b = 152.562542\n",
  1558. "epoch 1324: loss = 1724261.651198, a = 881.622984, b = 152.562456\n",
  1559. "epoch 1325: loss = 1724243.521203, a = 881.756555, b = 152.562371\n",
  1560. "epoch 1326: loss = 1724225.463043, a = 881.889859, b = 152.562286\n",
  1561. "epoch 1327: loss = 1724207.476433, a = 882.022896, b = 152.562201\n",
  1562. "epoch 1328: loss = 1724189.561089, a = 882.155667, b = 152.562116\n",
  1563. "epoch 1329: loss = 1724171.716726, a = 882.288173, b = 152.562032\n",
  1564. "epoch 1330: loss = 1724153.943063, a = 882.420413, b = 152.561947\n",
  1565. "epoch 1331: loss = 1724136.239817, a = 882.552390, b = 152.561863\n",
  1566. "epoch 1332: loss = 1724118.606710, a = 882.684102, b = 152.561779\n",
  1567. "epoch 1333: loss = 1724101.043462, a = 882.815551, b = 152.561695\n",
  1568. "epoch 1334: loss = 1724083.549795, a = 882.946737, b = 152.561611\n",
  1569. "epoch 1335: loss = 1724066.125431, a = 883.077661, b = 152.561527\n",
  1570. "epoch 1336: loss = 1724048.770097, a = 883.208323, b = 152.561444\n",
  1571. "epoch 1337: loss = 1724031.483516, a = 883.338724, b = 152.561361\n",
  1572. "epoch 1338: loss = 1724014.265415, a = 883.468864, b = 152.561277\n",
  1573. "epoch 1339: loss = 1723997.115522, a = 883.598743, b = 152.561194\n",
  1574. "epoch 1340: loss = 1723980.033566, a = 883.728363, b = 152.561112\n",
  1575. "epoch 1341: loss = 1723963.019276, a = 883.857724, b = 152.561029\n",
  1576. "epoch 1342: loss = 1723946.072383, a = 883.986826, b = 152.560947\n",
  1577. "epoch 1343: loss = 1723929.192619, a = 884.115670, b = 152.560864\n",
  1578. "epoch 1344: loss = 1723912.379717, a = 884.244256, b = 152.560782\n",
  1579. "epoch 1345: loss = 1723895.633411, a = 884.372586, b = 152.560700\n",
  1580. "epoch 1346: loss = 1723878.953436, a = 884.500658, b = 152.560618\n",
  1581. "epoch 1347: loss = 1723862.339528, a = 884.628475, b = 152.560537\n",
  1582. "epoch 1348: loss = 1723845.791425, a = 884.756036, b = 152.560455\n",
  1583. "epoch 1349: loss = 1723829.308864, a = 884.883341, b = 152.560374\n",
  1584. "epoch 1350: loss = 1723812.891585, a = 885.010393, b = 152.560293\n",
  1585. "epoch 1351: loss = 1723796.539328, a = 885.137190, b = 152.560212\n",
  1586. "epoch 1352: loss = 1723780.251834, a = 885.263733, b = 152.560131\n",
  1587. "epoch 1353: loss = 1723764.028847, a = 885.390024, b = 152.560050\n",
  1588. "epoch 1354: loss = 1723747.870109, a = 885.516062, b = 152.559970\n",
  1589. "epoch 1355: loss = 1723731.775364, a = 885.641848, b = 152.559890\n",
  1590. "epoch 1356: loss = 1723715.744359, a = 885.767382, b = 152.559809\n",
  1591. "epoch 1357: loss = 1723699.776840, a = 885.892666, b = 152.559729\n",
  1592. "epoch 1358: loss = 1723683.872554, a = 886.017699, b = 152.559649\n",
  1593. "epoch 1359: loss = 1723668.031249, a = 886.142482, b = 152.559570\n",
  1594. "epoch 1360: loss = 1723652.252676, a = 886.267015, b = 152.559490\n",
  1595. "epoch 1361: loss = 1723636.536584, a = 886.391299, b = 152.559411\n",
  1596. "epoch 1362: loss = 1723620.882726, a = 886.515335, b = 152.559332\n",
  1597. "epoch 1363: loss = 1723605.290853, a = 886.639123, b = 152.559253\n",
  1598. "epoch 1364: loss = 1723589.760719, a = 886.762663, b = 152.559174\n",
  1599. "epoch 1365: loss = 1723574.292078, a = 886.885956, b = 152.559095\n",
  1600. "epoch 1366: loss = 1723558.884687, a = 887.009003, b = 152.559016\n",
  1601. "epoch 1367: loss = 1723543.538300, a = 887.131804, b = 152.558938\n",
  1602. "epoch 1368: loss = 1723528.252677, a = 887.254359, b = 152.558860\n",
  1603. "epoch 1369: loss = 1723513.027574, a = 887.376669, b = 152.558782\n",
  1604. "epoch 1370: loss = 1723497.862752, a = 887.498734, b = 152.558704\n",
  1605. "epoch 1371: loss = 1723482.757971, a = 887.620555, b = 152.558626\n",
  1606. "epoch 1372: loss = 1723467.712991, a = 887.742133, b = 152.558548\n",
  1607. "epoch 1373: loss = 1723452.727575, a = 887.863468, b = 152.558471\n",
  1608. "epoch 1374: loss = 1723437.801486, a = 887.984560, b = 152.558393\n",
  1609. "epoch 1375: loss = 1723422.934489, a = 888.105410, b = 152.558316\n",
  1610. "epoch 1376: loss = 1723408.126347, a = 888.226018, b = 152.558239\n",
  1611. "epoch 1377: loss = 1723393.376828, a = 888.346385, b = 152.558162\n",
  1612. "epoch 1378: loss = 1723378.685697, a = 888.466511, b = 152.558085\n",
  1613. "epoch 1379: loss = 1723364.052724, a = 888.586397, b = 152.558009\n",
  1614. "epoch 1380: loss = 1723349.477675, a = 888.706043, b = 152.557932\n",
  1615. "epoch 1381: loss = 1723334.960322, a = 888.825451, b = 152.557856\n",
  1616. "epoch 1382: loss = 1723320.500434, a = 888.944619, b = 152.557780\n",
  1617. "epoch 1383: loss = 1723306.097784, a = 889.063549, b = 152.557704\n",
  1618. "epoch 1384: loss = 1723291.752143, a = 889.182241, b = 152.557628\n",
  1619. "epoch 1385: loss = 1723277.463285, a = 889.300696, b = 152.557553\n",
  1620. "epoch 1386: loss = 1723263.230984, a = 889.418914, b = 152.557477\n",
  1621. "epoch 1387: loss = 1723249.055015, a = 889.536895, b = 152.557402\n",
  1622. "epoch 1388: loss = 1723234.935154, a = 889.654641, b = 152.557327\n",
  1623. "epoch 1389: loss = 1723220.871178, a = 889.772151, b = 152.557252\n",
  1624. "epoch 1390: loss = 1723206.862865, a = 889.889427, b = 152.557177\n",
  1625. "epoch 1391: loss = 1723192.909994, a = 890.006467, b = 152.557102\n",
  1626. "epoch 1392: loss = 1723179.012343, a = 890.123274, b = 152.557027\n",
  1627. "epoch 1393: loss = 1723165.169694, a = 890.239847, b = 152.556953\n",
  1628. "epoch 1394: loss = 1723151.381827, a = 890.356187, b = 152.556879\n",
  1629. "epoch 1395: loss = 1723137.648526, a = 890.472294, b = 152.556804\n",
  1630. "epoch 1396: loss = 1723123.969572, a = 890.588170, b = 152.556730\n",
  1631. "epoch 1397: loss = 1723110.344750, a = 890.703813, b = 152.556656\n",
  1632. "epoch 1398: loss = 1723096.773845, a = 890.819225, b = 152.556583\n",
  1633. "epoch 1399: loss = 1723083.256642, a = 890.934407, b = 152.556509\n",
  1634. "epoch 1400: loss = 1723069.792927, a = 891.049358, b = 152.556436\n",
  1635. "epoch 1401: loss = 1723056.382489, a = 891.164079, b = 152.556363\n",
  1636. "epoch 1402: loss = 1723043.025115, a = 891.278571, b = 152.556289\n",
  1637. "epoch 1403: loss = 1723029.720594, a = 891.392834, b = 152.556216\n",
  1638. "epoch 1404: loss = 1723016.468716, a = 891.506868, b = 152.556144\n",
  1639. "epoch 1405: loss = 1723003.269272, a = 891.620675, b = 152.556071\n",
  1640. "epoch 1406: loss = 1722990.122053, a = 891.734253, b = 152.555998\n",
  1641. "epoch 1407: loss = 1722977.026852, a = 891.847605, b = 152.555926\n",
  1642. "epoch 1408: loss = 1722963.983461, a = 891.960730, b = 152.555854\n",
  1643. "epoch 1409: loss = 1722950.991676, a = 892.073629, b = 152.555782\n",
  1644. "epoch 1410: loss = 1722938.051290, a = 892.186302, b = 152.555710\n",
  1645. "epoch 1411: loss = 1722925.162100, a = 892.298750, b = 152.555638\n",
  1646. "epoch 1412: loss = 1722912.323901, a = 892.410972, b = 152.555566\n",
  1647. "epoch 1413: loss = 1722899.536492, a = 892.522971, b = 152.555495\n",
  1648. "epoch 1414: loss = 1722886.799670, a = 892.634745, b = 152.555423\n",
  1649. "epoch 1415: loss = 1722874.113234, a = 892.746296, b = 152.555352\n",
  1650. "epoch 1416: loss = 1722861.476984, a = 892.857624, b = 152.555281\n",
  1651. "epoch 1417: loss = 1722848.890720, a = 892.968730, b = 152.555210\n",
  1652. "epoch 1418: loss = 1722836.354243, a = 893.079613, b = 152.555139\n",
  1653. "epoch 1419: loss = 1722823.867356, a = 893.190274, b = 152.555068\n",
  1654. "epoch 1420: loss = 1722811.429862, a = 893.300714, b = 152.554998\n",
  1655. "epoch 1421: loss = 1722799.041564, a = 893.410934, b = 152.554927\n",
  1656. "epoch 1422: loss = 1722786.702267, a = 893.520932, b = 152.554857\n",
  1657. "epoch 1423: loss = 1722774.411775, a = 893.630711, b = 152.554787\n",
  1658. "epoch 1424: loss = 1722762.169895, a = 893.740271, b = 152.554717\n",
  1659. "epoch 1425: loss = 1722749.976434, a = 893.849611, b = 152.554647\n",
  1660. "epoch 1426: loss = 1722737.831199, a = 893.958733, b = 152.554578\n",
  1661. "epoch 1427: loss = 1722725.733998, a = 894.067636, b = 152.554508\n",
  1662. "epoch 1428: loss = 1722713.684641, a = 894.176322, b = 152.554439\n",
  1663. "epoch 1429: loss = 1722701.682937, a = 894.284790, b = 152.554369\n",
  1664. "epoch 1430: loss = 1722689.728697, a = 894.393042, b = 152.554300\n",
  1665. "epoch 1431: loss = 1722677.821732, a = 894.501077, b = 152.554231\n",
  1666. "epoch 1432: loss = 1722665.961855, a = 894.608895, b = 152.554162\n",
  1667. "epoch 1433: loss = 1722654.148878, a = 894.716499, b = 152.554094\n",
  1668. "epoch 1434: loss = 1722642.382614, a = 894.823887, b = 152.554025\n",
  1669. "epoch 1435: loss = 1722630.662879, a = 894.931060, b = 152.553957\n",
  1670. "epoch 1436: loss = 1722618.989486, a = 895.038020, b = 152.553888\n",
  1671. "epoch 1437: loss = 1722607.362253, a = 895.144765, b = 152.553820\n",
  1672. "epoch 1438: loss = 1722595.780995, a = 895.251297, b = 152.553752\n",
  1673. "epoch 1439: loss = 1722584.245530, a = 895.357615, b = 152.553684\n",
  1674. "epoch 1440: loss = 1722572.755676, a = 895.463721, b = 152.553616\n",
  1675. "epoch 1441: loss = 1722561.311251, a = 895.569615, b = 152.553549\n",
  1676. "epoch 1442: loss = 1722549.912075, a = 895.675298, b = 152.553481\n",
  1677. "epoch 1443: loss = 1722538.557968, a = 895.780769, b = 152.553414\n",
  1678. "epoch 1444: loss = 1722527.248752, a = 895.886029, b = 152.553347\n",
  1679. "epoch 1445: loss = 1722515.984246, a = 895.991078, b = 152.553280\n",
  1680. "epoch 1446: loss = 1722504.764275, a = 896.095917, b = 152.553213\n",
  1681. "epoch 1447: loss = 1722493.588661, a = 896.200547, b = 152.553146\n",
  1682. "epoch 1448: loss = 1722482.457227, a = 896.304968, b = 152.553079\n",
  1683. "epoch 1449: loss = 1722471.369798, a = 896.409180, b = 152.553012\n",
  1684. "epoch 1450: loss = 1722460.326199, a = 896.513183, b = 152.552946\n",
  1685. "epoch 1451: loss = 1722449.326257, a = 896.616978, b = 152.552880\n",
  1686. "epoch 1452: loss = 1722438.369797, a = 896.720566, b = 152.552814\n",
  1687. "epoch 1453: loss = 1722427.456646, a = 896.823947, b = 152.552748\n",
  1688. "epoch 1454: loss = 1722416.586633, a = 896.927121, b = 152.552682\n",
  1689. "epoch 1455: loss = 1722405.759587, a = 897.030088, b = 152.552616\n",
  1690. "epoch 1456: loss = 1722394.975336, a = 897.132850, b = 152.552550\n",
  1691. "epoch 1457: loss = 1722384.233710, a = 897.235407, b = 152.552485\n",
  1692. "epoch 1458: loss = 1722373.534540, a = 897.337758, b = 152.552419\n",
  1693. "epoch 1459: loss = 1722362.877657, a = 897.439904, b = 152.552354\n",
  1694. "epoch 1460: loss = 1722352.262894, a = 897.541846, b = 152.552289\n",
  1695. "epoch 1461: loss = 1722341.690083, a = 897.643585, b = 152.552224\n",
  1696. "epoch 1462: loss = 1722331.159057, a = 897.745120, b = 152.552159\n",
  1697. "epoch 1463: loss = 1722320.669650, a = 897.846452, b = 152.552095\n",
  1698. "epoch 1464: loss = 1722310.221696, a = 897.947581, b = 152.552030\n",
  1699. "epoch 1465: loss = 1722299.815032, a = 898.048508, b = 152.551965\n",
  1700. "epoch 1466: loss = 1722289.449493, a = 898.149233, b = 152.551901\n",
  1701. "epoch 1467: loss = 1722279.124916, a = 898.249757, b = 152.551837\n",
  1702. "epoch 1468: loss = 1722268.841137, a = 898.350080, b = 152.551773\n",
  1703. "epoch 1469: loss = 1722258.597995, a = 898.450202, b = 152.551709\n",
  1704. "epoch 1470: loss = 1722248.395329, a = 898.550124, b = 152.551645\n",
  1705. "epoch 1471: loss = 1722238.232977, a = 898.649846, b = 152.551581\n",
  1706. "epoch 1472: loss = 1722228.110779, a = 898.749369, b = 152.551518\n",
  1707. "epoch 1473: loss = 1722218.028576, a = 898.848693, b = 152.551454\n",
  1708. "epoch 1474: loss = 1722207.986209, a = 898.947818, b = 152.551391\n",
  1709. "epoch 1475: loss = 1722197.983520, a = 899.046745, b = 152.551328\n",
  1710. "epoch 1476: loss = 1722188.020350, a = 899.145474, b = 152.551265\n",
  1711. "epoch 1477: loss = 1722178.096544, a = 899.244006, b = 152.551202\n",
  1712. "epoch 1478: loss = 1722168.211944, a = 899.342341, b = 152.551139\n",
  1713. "epoch 1479: loss = 1722158.366395, a = 899.440479, b = 152.551076\n",
  1714. "epoch 1480: loss = 1722148.559742, a = 899.538420, b = 152.551014\n",
  1715. "epoch 1481: loss = 1722138.791830, a = 899.636166, b = 152.550951\n",
  1716. "epoch 1482: loss = 1722129.062505, a = 899.733717, b = 152.550889\n",
  1717. "epoch 1483: loss = 1722119.371614, a = 899.831072, b = 152.550827\n",
  1718. "epoch 1484: loss = 1722109.719005, a = 899.928233, b = 152.550765\n",
  1719. "epoch 1485: loss = 1722100.104525, a = 900.025199, b = 152.550703\n",
  1720. "epoch 1486: loss = 1722090.528022, a = 900.121972, b = 152.550641\n",
  1721. "epoch 1487: loss = 1722080.989347, a = 900.218551, b = 152.550579\n",
  1722. "epoch 1488: loss = 1722071.488348, a = 900.314937, b = 152.550518\n",
  1723. "epoch 1489: loss = 1722062.024876, a = 900.411130, b = 152.550456\n",
  1724. "epoch 1490: loss = 1722052.598782, a = 900.507131, b = 152.550395\n",
  1725. "epoch 1491: loss = 1722043.209917, a = 900.602939, b = 152.550334\n",
  1726. "epoch 1492: loss = 1722033.858134, a = 900.698557, b = 152.550273\n",
  1727. "epoch 1493: loss = 1722024.543285, a = 900.793983, b = 152.550212\n",
  1728. "epoch 1494: loss = 1722015.265224, a = 900.889218, b = 152.550151\n",
  1729. "epoch 1495: loss = 1722006.023804, a = 900.984263, b = 152.550090\n",
  1730. "epoch 1496: loss = 1721996.818880, a = 901.079117, b = 152.550030\n",
  1731. "epoch 1497: loss = 1721987.650307, a = 901.173782, b = 152.549969\n",
  1732. "epoch 1498: loss = 1721978.517941, a = 901.268258, b = 152.549909\n",
  1733. "epoch 1499: loss = 1721969.421637, a = 901.362545, b = 152.549849\n",
  1734. "epoch 1500: loss = 1721960.361253, a = 901.456643, b = 152.549789\n",
  1735. "epoch 1501: loss = 1721951.336645, a = 901.550553, b = 152.549729\n",
  1736. "epoch 1502: loss = 1721942.347673, a = 901.644276, b = 152.549669\n",
  1737. "epoch 1503: loss = 1721933.394193, a = 901.737811, b = 152.549609\n",
  1738. "epoch 1504: loss = 1721924.476066, a = 901.831159, b = 152.549549\n",
  1739. "epoch 1505: loss = 1721915.593151, a = 901.924320, b = 152.549490\n",
  1740. "epoch 1506: loss = 1721906.745308, a = 902.017295, b = 152.549431\n",
  1741. "epoch 1507: loss = 1721897.932397, a = 902.110084, b = 152.549371\n",
  1742. "epoch 1508: loss = 1721889.154280, a = 902.202687, b = 152.549312\n",
  1743. "epoch 1509: loss = 1721880.410820, a = 902.295105, b = 152.549253\n",
  1744. "epoch 1510: loss = 1721871.701877, a = 902.387339, b = 152.549194\n",
  1745. "epoch 1511: loss = 1721863.027315, a = 902.479388, b = 152.549135\n",
  1746. "epoch 1512: loss = 1721854.386998, a = 902.571253, b = 152.549077\n",
  1747. "epoch 1513: loss = 1721845.780790, a = 902.662934, b = 152.549018\n",
  1748. "epoch 1514: loss = 1721837.208555, a = 902.754432, b = 152.548960\n",
  1749. "epoch 1515: loss = 1721828.670157, a = 902.845747, b = 152.548901\n",
  1750. "epoch 1516: loss = 1721820.165464, a = 902.936879, b = 152.548843\n",
  1751. "epoch 1517: loss = 1721811.694341, a = 903.027829, b = 152.548785\n",
  1752. "epoch 1518: loss = 1721803.256654, a = 903.118598, b = 152.548727\n",
  1753. "epoch 1519: loss = 1721794.852271, a = 903.209184, b = 152.548669\n",
  1754. "epoch 1520: loss = 1721786.481060, a = 903.299590, b = 152.548612\n",
  1755. "epoch 1521: loss = 1721778.142889, a = 903.389815, b = 152.548554\n",
  1756. "epoch 1522: loss = 1721769.837627, a = 903.479859, b = 152.548496\n",
  1757. "epoch 1523: loss = 1721761.565142, a = 903.569724, b = 152.548439\n",
  1758. "epoch 1524: loss = 1721753.325306, a = 903.659408, b = 152.548382\n",
  1759. "epoch 1525: loss = 1721745.117988, a = 903.748914, b = 152.548325\n",
  1760. "epoch 1526: loss = 1721736.943059, a = 903.838240, b = 152.548268\n",
  1761. "epoch 1527: loss = 1721728.800390, a = 903.927388, b = 152.548211\n",
  1762. "epoch 1528: loss = 1721720.689854, a = 904.016357, b = 152.548154\n",
  1763. "epoch 1529: loss = 1721712.611323, a = 904.105149, b = 152.548097\n",
  1764. "epoch 1530: loss = 1721704.564670, a = 904.193763, b = 152.548041\n",
  1765. "epoch 1531: loss = 1721696.549768, a = 904.282199, b = 152.547984\n",
  1766. "epoch 1532: loss = 1721688.566492, a = 904.370459, b = 152.547928\n",
  1767. "epoch 1533: loss = 1721680.614715, a = 904.458543, b = 152.547871\n",
  1768. "epoch 1534: loss = 1721672.694312, a = 904.546450, b = 152.547815\n",
  1769. "epoch 1535: loss = 1721664.805160, a = 904.634182, b = 152.547759\n",
  1770. "epoch 1536: loss = 1721656.947133, a = 904.721738, b = 152.547703\n",
  1771. "epoch 1537: loss = 1721649.120109, a = 904.809119, b = 152.547647\n",
  1772. "epoch 1538: loss = 1721641.323964, a = 904.896325, b = 152.547592\n",
  1773. "epoch 1539: loss = 1721633.558576, a = 904.983357, b = 152.547536\n",
  1774. "epoch 1540: loss = 1721625.823823, a = 905.070215, b = 152.547481\n",
  1775. "epoch 1541: loss = 1721618.119582, a = 905.156899, b = 152.547425\n",
  1776. "epoch 1542: loss = 1721610.445734, a = 905.243410, b = 152.547370\n",
  1777. "epoch 1543: loss = 1721602.802156, a = 905.329748, b = 152.547315\n",
  1778. "epoch 1544: loss = 1721595.188730, a = 905.415913, b = 152.547260\n",
  1779. "epoch 1545: loss = 1721587.605335, a = 905.501906, b = 152.547205\n",
  1780. "epoch 1546: loss = 1721580.051852, a = 905.587727, b = 152.547150\n",
  1781. "epoch 1547: loss = 1721572.528163, a = 905.673376, b = 152.547095\n",
  1782. "epoch 1548: loss = 1721565.034149, a = 905.758854, b = 152.547041\n",
  1783. "epoch 1549: loss = 1721557.569692, a = 905.844161, b = 152.546986\n",
  1784. "epoch 1550: loss = 1721550.134675, a = 905.929298, b = 152.546932\n",
  1785. "epoch 1551: loss = 1721542.728982, a = 906.014264, b = 152.546878\n",
  1786. "epoch 1552: loss = 1721535.352495, a = 906.099060, b = 152.546824\n",
  1787. "epoch 1553: loss = 1721528.005099, a = 906.183687, b = 152.546770\n",
  1788. "epoch 1554: loss = 1721520.686678, a = 906.268145, b = 152.546716\n",
  1789. "epoch 1555: loss = 1721513.397118, a = 906.352433, b = 152.546662\n",
  1790. "epoch 1556: loss = 1721506.136304, a = 906.436553, b = 152.546608\n",
  1791. "epoch 1557: loss = 1721498.904121, a = 906.520505, b = 152.546554\n",
  1792. "epoch 1558: loss = 1721491.700457, a = 906.604289, b = 152.546501\n",
  1793. "epoch 1559: loss = 1721484.525197, a = 906.687906, b = 152.546448\n",
  1794. "epoch 1560: loss = 1721477.378230, a = 906.771355, b = 152.546394\n",
  1795. "epoch 1561: loss = 1721470.259443, a = 906.854638, b = 152.546341\n",
  1796. "epoch 1562: loss = 1721463.168723, a = 906.937754, b = 152.546288\n",
  1797. "epoch 1563: loss = 1721456.105960, a = 907.020703, b = 152.546235\n",
  1798. "epoch 1564: loss = 1721449.071043, a = 907.103487, b = 152.546182\n",
  1799. "epoch 1565: loss = 1721442.063862, a = 907.186106, b = 152.546129\n",
  1800. "epoch 1566: loss = 1721435.084305, a = 907.268559, b = 152.546077\n",
  1801. "epoch 1567: loss = 1721428.132264, a = 907.350847, b = 152.546024\n",
  1802. "epoch 1568: loss = 1721421.207629, a = 907.432970, b = 152.545972\n",
  1803. "epoch 1569: loss = 1721414.310292, a = 907.514930, b = 152.545919\n",
  1804. "epoch 1570: loss = 1721407.440144, a = 907.596725, b = 152.545867\n",
  1805. "epoch 1571: loss = 1721400.597077, a = 907.678357, b = 152.545815\n",
  1806. "epoch 1572: loss = 1721393.780984, a = 907.759826, b = 152.545763\n",
  1807. "epoch 1573: loss = 1721386.991758, a = 907.841132, b = 152.545711\n",
  1808. "epoch 1574: loss = 1721380.229293, a = 907.922275, b = 152.545659\n",
  1809. "epoch 1575: loss = 1721373.493481, a = 908.003256, b = 152.545607\n",
  1810. "epoch 1576: loss = 1721366.784218, a = 908.084075, b = 152.545556\n",
  1811. "epoch 1577: loss = 1721360.101397, a = 908.164733, b = 152.545504\n",
  1812. "epoch 1578: loss = 1721353.444915, a = 908.245229, b = 152.545453\n",
  1813. "epoch 1579: loss = 1721346.814666, a = 908.325564, b = 152.545402\n",
  1814. "epoch 1580: loss = 1721340.210546, a = 908.405739, b = 152.545350\n",
  1815. "epoch 1581: loss = 1721333.632452, a = 908.485753, b = 152.545299\n",
  1816. "epoch 1582: loss = 1721327.080281, a = 908.565607, b = 152.545248\n",
  1817. "epoch 1583: loss = 1721320.553929, a = 908.645302, b = 152.545197\n",
  1818. "epoch 1584: loss = 1721314.053295, a = 908.724837, b = 152.545147\n",
  1819. "epoch 1585: loss = 1721307.578275, a = 908.804213, b = 152.545096\n",
  1820. "epoch 1586: loss = 1721301.128770, a = 908.883430, b = 152.545045\n",
  1821. "epoch 1587: loss = 1721294.704676, a = 908.962489, b = 152.544995\n",
  1822. "epoch 1588: loss = 1721288.305894, a = 909.041390, b = 152.544944\n",
  1823. "epoch 1589: loss = 1721281.932323, a = 909.120133, b = 152.544894\n",
  1824. "epoch 1590: loss = 1721275.583863, a = 909.198719, b = 152.544844\n",
  1825. "epoch 1591: loss = 1721269.260415, a = 909.277148, b = 152.544794\n",
  1826. "epoch 1592: loss = 1721262.961879, a = 909.355419, b = 152.544744\n",
  1827. "epoch 1593: loss = 1721256.688156, a = 909.433534, b = 152.544694\n",
  1828. "epoch 1594: loss = 1721250.439148, a = 909.511493, b = 152.544644\n",
  1829. "epoch 1595: loss = 1721244.214757, a = 909.589296, b = 152.544594\n",
  1830. "epoch 1596: loss = 1721238.014885, a = 909.666944, b = 152.544545\n",
  1831. "epoch 1597: loss = 1721231.839435, a = 909.744436, b = 152.544495\n",
  1832. "epoch 1598: loss = 1721225.688310, a = 909.821773, b = 152.544446\n",
  1833. "epoch 1599: loss = 1721219.561414, a = 909.898956, b = 152.544397\n",
  1834. "epoch 1600: loss = 1721213.458651, a = 909.975984, b = 152.544347\n",
  1835. "epoch 1601: loss = 1721207.379924, a = 910.052859, b = 152.544298\n",
  1836. "epoch 1602: loss = 1721201.325138, a = 910.129579, b = 152.544249\n",
  1837. "epoch 1603: loss = 1721195.294200, a = 910.206146, b = 152.544200\n",
  1838. "epoch 1604: loss = 1721189.287013, a = 910.282560, b = 152.544152\n",
  1839. "epoch 1605: loss = 1721183.303483, a = 910.358821, b = 152.544103\n",
  1840. "epoch 1606: loss = 1721177.343518, a = 910.434930, b = 152.544054\n",
  1841. "epoch 1607: loss = 1721171.407023, a = 910.510887, b = 152.544006\n",
  1842. "epoch 1608: loss = 1721165.493905, a = 910.586691, b = 152.543957\n",
  1843. "epoch 1609: loss = 1721159.604072, a = 910.662344, b = 152.543909\n",
  1844. "epoch 1610: loss = 1721153.737431, a = 910.737846, b = 152.543861\n",
  1845. "epoch 1611: loss = 1721147.893890, a = 910.813197, b = 152.543813\n",
  1846. "epoch 1612: loss = 1721142.073358, a = 910.888397, b = 152.543765\n",
  1847. "epoch 1613: loss = 1721136.275743, a = 910.963447, b = 152.543717\n",
  1848. "epoch 1614: loss = 1721130.500955, a = 911.038346, b = 152.543669\n",
  1849. "epoch 1615: loss = 1721124.748902, a = 911.113096, b = 152.543621\n",
  1850. "epoch 1616: loss = 1721119.019496, a = 911.187697, b = 152.543574\n",
  1851. "epoch 1617: loss = 1721113.312646, a = 911.262148, b = 152.543526\n",
  1852. "epoch 1618: loss = 1721107.628262, a = 911.336450, b = 152.543478\n",
  1853. "epoch 1619: loss = 1721101.966255, a = 911.410604, b = 152.543431\n",
  1854. "epoch 1620: loss = 1721096.326537, a = 911.484609, b = 152.543384\n",
  1855. "epoch 1621: loss = 1721090.709020, a = 911.558467, b = 152.543337\n",
  1856. "epoch 1622: loss = 1721085.113615, a = 911.632177, b = 152.543290\n",
  1857. "epoch 1623: loss = 1721079.540234, a = 911.705739, b = 152.543243\n",
  1858. "epoch 1624: loss = 1721073.988791, a = 911.779154, b = 152.543196\n",
  1859. "epoch 1625: loss = 1721068.459198, a = 911.852423, b = 152.543149\n",
  1860. "epoch 1626: loss = 1721062.951369, a = 911.925545, b = 152.543102\n",
  1861. "epoch 1627: loss = 1721057.465217, a = 911.998521, b = 152.543056\n",
  1862. "epoch 1628: loss = 1721052.000656, a = 912.071351, b = 152.543009\n",
  1863. "epoch 1629: loss = 1721046.557601, a = 912.144035, b = 152.542963\n",
  1864. "epoch 1630: loss = 1721041.135967, a = 912.216574, b = 152.542916\n",
  1865. "epoch 1631: loss = 1721035.735668, a = 912.288967, b = 152.542870\n",
  1866. "epoch 1632: loss = 1721030.356621, a = 912.361217, b = 152.542824\n",
  1867. "epoch 1633: loss = 1721024.998740, a = 912.433321, b = 152.542778\n",
  1868. "epoch 1634: loss = 1721019.661942, a = 912.505281, b = 152.542732\n",
  1869. "epoch 1635: loss = 1721014.346143, a = 912.577098, b = 152.542686\n",
  1870. "epoch 1636: loss = 1721009.051260, a = 912.648771, b = 152.542640\n",
  1871. "epoch 1637: loss = 1721003.777210, a = 912.720300, b = 152.542595\n",
  1872. "epoch 1638: loss = 1720998.523911, a = 912.791687, b = 152.542549\n",
  1873. "epoch 1639: loss = 1720993.291280, a = 912.862931, b = 152.542504\n",
  1874. "epoch 1640: loss = 1720988.079235, a = 912.934032, b = 152.542458\n",
  1875. "epoch 1641: loss = 1720982.887695, a = 913.004991, b = 152.542413\n",
  1876. "epoch 1642: loss = 1720977.716578, a = 913.075808, b = 152.542368\n",
  1877. "epoch 1643: loss = 1720972.565804, a = 913.146484, b = 152.542322\n",
  1878. "epoch 1644: loss = 1720967.435291, a = 913.217018, b = 152.542277\n",
  1879. "epoch 1645: loss = 1720962.324960, a = 913.287412, b = 152.542232\n",
  1880. "epoch 1646: loss = 1720957.234731, a = 913.357664, b = 152.542188\n",
  1881. "epoch 1647: loss = 1720952.164523, a = 913.427776, b = 152.542143\n",
  1882. "epoch 1648: loss = 1720947.114257, a = 913.497748, b = 152.542098\n",
  1883. "epoch 1649: loss = 1720942.083855, a = 913.567580, b = 152.542053\n",
  1884. "epoch 1650: loss = 1720937.073238, a = 913.637272, b = 152.542009\n",
  1885. "epoch 1651: loss = 1720932.082327, a = 913.706825, b = 152.541965\n",
  1886. "epoch 1652: loss = 1720927.111044, a = 913.776239, b = 152.541920\n",
  1887. "epoch 1653: loss = 1720922.159311, a = 913.845514, b = 152.541876\n",
  1888. "epoch 1654: loss = 1720917.227051, a = 913.914650, b = 152.541832\n",
  1889. "epoch 1655: loss = 1720912.314187, a = 913.983648, b = 152.541788\n",
  1890. "epoch 1656: loss = 1720907.420641, a = 914.052509, b = 152.541744\n",
  1891. "epoch 1657: loss = 1720902.546338, a = 914.121231, b = 152.541700\n",
  1892. "epoch 1658: loss = 1720897.691201, a = 914.189816, b = 152.541656\n",
  1893. "epoch 1659: loss = 1720892.855154, a = 914.258264, b = 152.541612\n",
  1894. "epoch 1660: loss = 1720888.038121, a = 914.326575, b = 152.541569\n",
  1895. "epoch 1661: loss = 1720883.240027, a = 914.394750, b = 152.541525\n",
  1896. "epoch 1662: loss = 1720878.460797, a = 914.462788, b = 152.541482\n",
  1897. "epoch 1663: loss = 1720873.700356, a = 914.530690, b = 152.541438\n",
  1898. "epoch 1664: loss = 1720868.958630, a = 914.598457, b = 152.541395\n",
  1899. "epoch 1665: loss = 1720864.235544, a = 914.666087, b = 152.541352\n",
  1900. "epoch 1666: loss = 1720859.531025, a = 914.733583, b = 152.541309\n",
  1901. "epoch 1667: loss = 1720854.845000, a = 914.800944, b = 152.541266\n",
  1902. "epoch 1668: loss = 1720850.177394, a = 914.868170, b = 152.541223\n",
  1903. "epoch 1669: loss = 1720845.528135, a = 914.935261, b = 152.541180\n",
  1904. "epoch 1670: loss = 1720840.897150, a = 915.002218, b = 152.541137\n",
  1905. "epoch 1671: loss = 1720836.284366, a = 915.069042, b = 152.541095\n",
  1906. "epoch 1672: loss = 1720831.689713, a = 915.135732, b = 152.541052\n",
  1907. "epoch 1673: loss = 1720827.113117, a = 915.202288, b = 152.541009\n",
  1908. "epoch 1674: loss = 1720822.554508, a = 915.268712, b = 152.540967\n",
  1909. "epoch 1675: loss = 1720818.013813, a = 915.335002, b = 152.540925\n",
  1910. "epoch 1676: loss = 1720813.490962, a = 915.401160, b = 152.540882\n",
  1911. "epoch 1677: loss = 1720808.985885, a = 915.467186, b = 152.540840\n",
  1912. "epoch 1678: loss = 1720804.498511, a = 915.533079, b = 152.540798\n",
  1913. "epoch 1679: loss = 1720800.028769, a = 915.598841, b = 152.540756\n",
  1914. "epoch 1680: loss = 1720795.576590, a = 915.664472, b = 152.540714\n",
  1915. "epoch 1681: loss = 1720791.141905, a = 915.729971, b = 152.540672\n",
  1916. "epoch 1682: loss = 1720786.724644, a = 915.795339, b = 152.540631\n",
  1917. "epoch 1683: loss = 1720782.324737, a = 915.860577, b = 152.540589\n",
  1918. "epoch 1684: loss = 1720777.942117, a = 915.925684, b = 152.540547\n",
  1919. "epoch 1685: loss = 1720773.576714, a = 915.990660, b = 152.540506\n",
  1920. "epoch 1686: loss = 1720769.228461, a = 916.055507, b = 152.540464\n",
  1921. "epoch 1687: loss = 1720764.897290, a = 916.120224, b = 152.540423\n",
  1922. "epoch 1688: loss = 1720760.583133, a = 916.184812, b = 152.540382\n",
  1923. "epoch 1689: loss = 1720756.285922, a = 916.249271, b = 152.540341\n",
  1924. "epoch 1690: loss = 1720752.005590, a = 916.313601, b = 152.540300\n",
  1925. "epoch 1691: loss = 1720747.742072, a = 916.377802, b = 152.540259\n",
  1926. "epoch 1692: loss = 1720743.495299, a = 916.441875, b = 152.540218\n",
  1927. "epoch 1693: loss = 1720739.265205, a = 916.505819, b = 152.540177\n",
  1928. "epoch 1694: loss = 1720735.051726, a = 916.569636, b = 152.540136\n",
  1929. "epoch 1695: loss = 1720730.854794, a = 916.633325, b = 152.540095\n",
  1930. "epoch 1696: loss = 1720726.674344, a = 916.696887, b = 152.540055\n",
  1931. "epoch 1697: loss = 1720722.510311, a = 916.760321, b = 152.540014\n",
  1932. "epoch 1698: loss = 1720718.362630, a = 916.823629, b = 152.539974\n",
  1933. "epoch 1699: loss = 1720714.231237, a = 916.886810, b = 152.539934\n",
  1934. "epoch 1700: loss = 1720710.116066, a = 916.949865, b = 152.539893\n",
  1935. "epoch 1701: loss = 1720706.017053, a = 917.012794, b = 152.539853\n",
  1936. "epoch 1702: loss = 1720701.934135, a = 917.075597, b = 152.539813\n",
  1937. "epoch 1703: loss = 1720697.867247, a = 917.138274, b = 152.539773\n",
  1938. "epoch 1704: loss = 1720693.816327, a = 917.200827, b = 152.539733\n",
  1939. "epoch 1705: loss = 1720689.781311, a = 917.263253, b = 152.539693\n",
  1940. "epoch 1706: loss = 1720685.762135, a = 917.325556, b = 152.539653\n",
  1941. "epoch 1707: loss = 1720681.758738, a = 917.387733, b = 152.539614\n",
  1942. "epoch 1708: loss = 1720677.771057, a = 917.449786, b = 152.539574\n",
  1943. "epoch 1709: loss = 1720673.799029, a = 917.511715, b = 152.539534\n",
  1944. "epoch 1710: loss = 1720669.842593, a = 917.573521, b = 152.539495\n",
  1945. "epoch 1711: loss = 1720665.901687, a = 917.635202, b = 152.539456\n",
  1946. "epoch 1712: loss = 1720661.976249, a = 917.696761, b = 152.539416\n",
  1947. "epoch 1713: loss = 1720658.066218, a = 917.758196, b = 152.539377\n",
  1948. "epoch 1714: loss = 1720654.171533, a = 917.819508, b = 152.539338\n",
  1949. "epoch 1715: loss = 1720650.292133, a = 917.880698, b = 152.539299\n",
  1950. "epoch 1716: loss = 1720646.427958, a = 917.941766, b = 152.539260\n",
  1951. "epoch 1717: loss = 1720642.578948, a = 918.002711, b = 152.539221\n",
  1952. "epoch 1718: loss = 1720638.745042, a = 918.063534, b = 152.539182\n",
  1953. "epoch 1719: loss = 1720634.926181, a = 918.124236, b = 152.539143\n",
  1954. "epoch 1720: loss = 1720631.122305, a = 918.184817, b = 152.539104\n",
  1955. "epoch 1721: loss = 1720627.333355, a = 918.245276, b = 152.539066\n",
  1956. "epoch 1722: loss = 1720623.559271, a = 918.305614, b = 152.539027\n",
  1957. "epoch 1723: loss = 1720619.799996, a = 918.365832, b = 152.538989\n",
  1958. "epoch 1724: loss = 1720616.055469, a = 918.425930, b = 152.538950\n",
  1959. "epoch 1725: loss = 1720612.325634, a = 918.485907, b = 152.538912\n",
  1960. "epoch 1726: loss = 1720608.610431, a = 918.545764, b = 152.538874\n",
  1961. "epoch 1727: loss = 1720604.909803, a = 918.605501, b = 152.538836\n",
  1962. "epoch 1728: loss = 1720601.223691, a = 918.665120, b = 152.538798\n",
  1963. "epoch 1729: loss = 1720597.552040, a = 918.724618, b = 152.538760\n",
  1964. "epoch 1730: loss = 1720593.894791, a = 918.783998, b = 152.538722\n",
  1965. "epoch 1731: loss = 1720590.251887, a = 918.843259, b = 152.538684\n",
  1966. "epoch 1732: loss = 1720586.623272, a = 918.902402, b = 152.538646\n",
  1967. "epoch 1733: loss = 1720583.008889, a = 918.961426, b = 152.538608\n",
  1968. "epoch 1734: loss = 1720579.408681, a = 919.020333, b = 152.538571\n",
  1969. "epoch 1735: loss = 1720575.822593, a = 919.079121, b = 152.538533\n",
  1970. "epoch 1736: loss = 1720572.250569, a = 919.137792, b = 152.538496\n",
  1971. "epoch 1737: loss = 1720568.692553, a = 919.196346, b = 152.538458\n",
  1972. "epoch 1738: loss = 1720565.148489, a = 919.254783, b = 152.538421\n",
  1973. "epoch 1739: loss = 1720561.618323, a = 919.313102, b = 152.538384\n",
  1974. "epoch 1740: loss = 1720558.101999, a = 919.371305, b = 152.538347\n",
  1975. "epoch 1741: loss = 1720554.599463, a = 919.429392, b = 152.538310\n",
  1976. "epoch 1742: loss = 1720551.110660, a = 919.487363, b = 152.538273\n",
  1977. "epoch 1743: loss = 1720547.635535, a = 919.545217, b = 152.538236\n",
  1978. "epoch 1744: loss = 1720544.174035, a = 919.602956, b = 152.538199\n",
  1979. "epoch 1745: loss = 1720540.726106, a = 919.660580, b = 152.538162\n",
  1980. "epoch 1746: loss = 1720537.291694, a = 919.718088, b = 152.538125\n",
  1981. "epoch 1747: loss = 1720533.870745, a = 919.775481, b = 152.538089\n",
  1982. "epoch 1748: loss = 1720530.463206, a = 919.832760, b = 152.538052\n",
  1983. "epoch 1749: loss = 1720527.069024, a = 919.889924, b = 152.538015\n",
  1984. "epoch 1750: loss = 1720523.688147, a = 919.946973, b = 152.537979\n",
  1985. "epoch 1751: loss = 1720520.320521, a = 920.003909, b = 152.537943\n",
  1986. "epoch 1752: loss = 1720516.966095, a = 920.060731, b = 152.537906\n",
  1987. "epoch 1753: loss = 1720513.624815, a = 920.117439, b = 152.537870\n",
  1988. "epoch 1754: loss = 1720510.296631, a = 920.174033, b = 152.537834\n",
  1989. "epoch 1755: loss = 1720506.981489, a = 920.230515, b = 152.537798\n",
  1990. "epoch 1756: loss = 1720503.679339, a = 920.286884, b = 152.537762\n",
  1991. "epoch 1757: loss = 1720500.390129, a = 920.343139, b = 152.537726\n",
  1992. "epoch 1758: loss = 1720497.113808, a = 920.399283, b = 152.537690\n",
  1993. "epoch 1759: loss = 1720493.850325, a = 920.455314, b = 152.537654\n",
  1994. "epoch 1760: loss = 1720490.599630, a = 920.511233, b = 152.537619\n",
  1995. "epoch 1761: loss = 1720487.361670, a = 920.567040, b = 152.537583\n",
  1996. "epoch 1762: loss = 1720484.136397, a = 920.622736, b = 152.537547\n",
  1997. "epoch 1763: loss = 1720480.923760, a = 920.678320, b = 152.537512\n",
  1998. "epoch 1764: loss = 1720477.723709, a = 920.733793, b = 152.537476\n",
  1999. "epoch 1765: loss = 1720474.536195, a = 920.789155, b = 152.537441\n",
  2000. "epoch 1766: loss = 1720471.361166, a = 920.844407, b = 152.537406\n",
  2001. "epoch 1767: loss = 1720468.198576, a = 920.899548, b = 152.537371\n",
  2002. "epoch 1768: loss = 1720465.048373, a = 920.954579, b = 152.537335\n",
  2003. "epoch 1769: loss = 1720461.910509, a = 921.009499, b = 152.537300\n",
  2004. "epoch 1770: loss = 1720458.784936, a = 921.064310, b = 152.537265\n",
  2005. "epoch 1771: loss = 1720455.671604, a = 921.119011, b = 152.537230\n",
  2006. "epoch 1772: loss = 1720452.570465, a = 921.173603, b = 152.537196\n",
  2007. "epoch 1773: loss = 1720449.481472, a = 921.228086, b = 152.537161\n",
  2008. "epoch 1774: loss = 1720446.404575, a = 921.282460, b = 152.537126\n",
  2009. "epoch 1775: loss = 1720443.339727, a = 921.336725, b = 152.537091\n",
  2010. "epoch 1776: loss = 1720440.286881, a = 921.390881, b = 152.537057\n",
  2011. "epoch 1777: loss = 1720437.245989, a = 921.444930, b = 152.537022\n",
  2012. "epoch 1778: loss = 1720434.217004, a = 921.498870, b = 152.536988\n",
  2013. "epoch 1779: loss = 1720431.199878, a = 921.552702, b = 152.536953\n",
  2014. "epoch 1780: loss = 1720428.194566, a = 921.606427, b = 152.536919\n",
  2015. "epoch 1781: loss = 1720425.201019, a = 921.660044, b = 152.536885\n",
  2016. "epoch 1782: loss = 1720422.219191, a = 921.713554, b = 152.536851\n",
  2017. "epoch 1783: loss = 1720419.249037, a = 921.766957, b = 152.536817\n",
  2018. "epoch 1784: loss = 1720416.290510, a = 921.820253, b = 152.536783\n",
  2019. "epoch 1785: loss = 1720413.343564, a = 921.873443, b = 152.536749\n",
  2020. "epoch 1786: loss = 1720410.408153, a = 921.926526, b = 152.536715\n",
  2021. "epoch 1787: loss = 1720407.484232, a = 921.979503, b = 152.536681\n",
  2022. "epoch 1788: loss = 1720404.571755, a = 922.032374, b = 152.536647\n",
  2023. "epoch 1789: loss = 1720401.670677, a = 922.085140, b = 152.536613\n",
  2024. "epoch 1790: loss = 1720398.780953, a = 922.137800, b = 152.536580\n",
  2025. "epoch 1791: loss = 1720395.902538, a = 922.190354, b = 152.536546\n",
  2026. "epoch 1792: loss = 1720393.035387, a = 922.242804, b = 152.536513\n",
  2027. "epoch 1793: loss = 1720390.179456, a = 922.295149, b = 152.536479\n",
  2028. "epoch 1794: loss = 1720387.334700, a = 922.347389, b = 152.536446\n",
  2029. "epoch 1795: loss = 1720384.501075, a = 922.399524, b = 152.536413\n",
  2030. "epoch 1796: loss = 1720381.678538, a = 922.451555, b = 152.536379\n",
  2031. "epoch 1797: loss = 1720378.867044, a = 922.503483, b = 152.536346\n",
  2032. "epoch 1798: loss = 1720376.066550, a = 922.555306, b = 152.536313\n",
  2033. "epoch 1799: loss = 1720373.277012, a = 922.607026, b = 152.536280\n",
  2034. "epoch 1800: loss = 1720370.498388, a = 922.658642, b = 152.536247\n",
  2035. "epoch 1801: loss = 1720367.730632, a = 922.710155, b = 152.536214\n",
  2036. "epoch 1802: loss = 1720364.973704, a = 922.761565, b = 152.536181\n",
  2037. "epoch 1803: loss = 1720362.227560, a = 922.812873, b = 152.536149\n",
  2038. "epoch 1804: loss = 1720359.492157, a = 922.864078, b = 152.536116\n",
  2039. "epoch 1805: loss = 1720356.767453, a = 922.915180, b = 152.536083\n",
  2040. "epoch 1806: loss = 1720354.053406, a = 922.966180, b = 152.536051\n",
  2041. "epoch 1807: loss = 1720351.349974, a = 923.017078, b = 152.536018\n",
  2042. "epoch 1808: loss = 1720348.657114, a = 923.067875, b = 152.535986\n",
  2043. "epoch 1809: loss = 1720345.974785, a = 923.118569, b = 152.535953\n",
  2044. "epoch 1810: loss = 1720343.302945, a = 923.169163, b = 152.535921\n",
  2045. "epoch 1811: loss = 1720340.641553, a = 923.219655, b = 152.535889\n",
  2046. "epoch 1812: loss = 1720337.990567, a = 923.270046, b = 152.535857\n",
  2047. "epoch 1813: loss = 1720335.349947, a = 923.320337, b = 152.535824\n",
  2048. "epoch 1814: loss = 1720332.719651, a = 923.370527, b = 152.535792\n",
  2049. "epoch 1815: loss = 1720330.099638, a = 923.420616, b = 152.535760\n",
  2050. "epoch 1816: loss = 1720327.489869, a = 923.470606, b = 152.535728\n",
  2051. "epoch 1817: loss = 1720324.890302, a = 923.520495, b = 152.535697\n",
  2052. "epoch 1818: loss = 1720322.300897, a = 923.570285, b = 152.535665\n",
  2053. "epoch 1819: loss = 1720319.721615, a = 923.619975, b = 152.535633\n",
  2054. "epoch 1820: loss = 1720317.152414, a = 923.669566, b = 152.535601\n",
  2055. "epoch 1821: loss = 1720314.593256, a = 923.719058, b = 152.535570\n",
  2056. "epoch 1822: loss = 1720312.044100, a = 923.768450, b = 152.535538\n",
  2057. "epoch 1823: loss = 1720309.504906, a = 923.817744, b = 152.535507\n",
  2058. "epoch 1824: loss = 1720306.975637, a = 923.866939, b = 152.535475\n",
  2059. "epoch 1825: loss = 1720304.456252, a = 923.916036, b = 152.535444\n",
  2060. "epoch 1826: loss = 1720301.946713, a = 923.965035, b = 152.535413\n",
  2061. "epoch 1827: loss = 1720299.446979, a = 924.013936, b = 152.535381\n",
  2062. "epoch 1828: loss = 1720296.957014, a = 924.062739, b = 152.535350\n",
  2063. "epoch 1829: loss = 1720294.476778, a = 924.111444, b = 152.535319\n",
  2064. "epoch 1830: loss = 1720292.006232, a = 924.160052, b = 152.535288\n",
  2065. "epoch 1831: loss = 1720289.545339, a = 924.208563, b = 152.535257\n",
  2066. "epoch 1832: loss = 1720287.094060, a = 924.256977, b = 152.535226\n",
  2067. "epoch 1833: loss = 1720284.652358, a = 924.305294, b = 152.535195\n",
  2068. "epoch 1834: loss = 1720282.220194, a = 924.353514, b = 152.535165\n",
  2069. "epoch 1835: loss = 1720279.797531, a = 924.401638, b = 152.535134\n",
  2070. "epoch 1836: loss = 1720277.384331, a = 924.449666, b = 152.535103\n",
  2071. "epoch 1837: loss = 1720274.980557, a = 924.497598, b = 152.535073\n",
  2072. "epoch 1838: loss = 1720272.586172, a = 924.545433, b = 152.535042\n",
  2073. "epoch 1839: loss = 1720270.201138, a = 924.593174, b = 152.535011\n",
  2074. "epoch 1840: loss = 1720267.825419, a = 924.640818, b = 152.534981\n",
  2075. "epoch 1841: loss = 1720265.458978, a = 924.688368, b = 152.534951\n",
  2076. "epoch 1842: loss = 1720263.101779, a = 924.735822, b = 152.534920\n",
  2077. "epoch 1843: loss = 1720260.753784, a = 924.783182, b = 152.534890\n",
  2078. "epoch 1844: loss = 1720258.414957, a = 924.830446, b = 152.534860\n",
  2079. "epoch 1845: loss = 1720256.085263, a = 924.877617, b = 152.534830\n",
  2080. "epoch 1846: loss = 1720253.764664, a = 924.924692, b = 152.534800\n",
  2081. "epoch 1847: loss = 1720251.453126, a = 924.971674, b = 152.534770\n",
  2082. "epoch 1848: loss = 1720249.150613, a = 925.018562, b = 152.534740\n",
  2083. "epoch 1849: loss = 1720246.857088, a = 925.065356, b = 152.534710\n",
  2084. "epoch 1850: loss = 1720244.572517, a = 925.112057, b = 152.534680\n",
  2085. "epoch 1851: loss = 1720242.296863, a = 925.158664, b = 152.534650\n",
  2086. "epoch 1852: loss = 1720240.030093, a = 925.205178, b = 152.534621\n",
  2087. "epoch 1853: loss = 1720237.772169, a = 925.251599, b = 152.534591\n",
  2088. "epoch 1854: loss = 1720235.523059, a = 925.297927, b = 152.534561\n",
  2089. "epoch 1855: loss = 1720233.282727, a = 925.344162, b = 152.534532\n",
  2090. "epoch 1856: loss = 1720231.051138, a = 925.390305, b = 152.534502\n",
  2091. "epoch 1857: loss = 1720228.828258, a = 925.436356, b = 152.534473\n",
  2092. "epoch 1858: loss = 1720226.614052, a = 925.482314, b = 152.534444\n",
  2093. "epoch 1859: loss = 1720224.408486, a = 925.528181, b = 152.534414\n",
  2094. "epoch 1860: loss = 1720222.211527, a = 925.573956, b = 152.534385\n",
  2095. "epoch 1861: loss = 1720220.023139, a = 925.619640, b = 152.534356\n",
  2096. "epoch 1862: loss = 1720217.843290, a = 925.665232, b = 152.534327\n",
  2097. "epoch 1863: loss = 1720215.671945, a = 925.710733, b = 152.534298\n",
  2098. "epoch 1864: loss = 1720213.509072, a = 925.756143, b = 152.534269\n",
  2099. "epoch 1865: loss = 1720211.354635, a = 925.801462, b = 152.534240\n",
  2100. "epoch 1866: loss = 1720209.208604, a = 925.846690, b = 152.534211\n",
  2101. "epoch 1867: loss = 1720207.070943, a = 925.891828, b = 152.534182\n",
  2102. "epoch 1868: loss = 1720204.941620, a = 925.936876, b = 152.534153\n",
  2103. "epoch 1869: loss = 1720202.820602, a = 925.981834, b = 152.534125\n",
  2104. "epoch 1870: loss = 1720200.707857, a = 926.026702, b = 152.534096\n",
  2105. "epoch 1871: loss = 1720198.603351, a = 926.071480, b = 152.534067\n",
  2106. "epoch 1872: loss = 1720196.507053, a = 926.116169, b = 152.534039\n",
  2107. "epoch 1873: loss = 1720194.418929, a = 926.160768, b = 152.534010\n",
  2108. "epoch 1874: loss = 1720192.338948, a = 926.205278, b = 152.533982\n",
  2109. "epoch 1875: loss = 1720190.267077, a = 926.249699, b = 152.533953\n",
  2110. "epoch 1876: loss = 1720188.203284, a = 926.294031, b = 152.533925\n",
  2111. "epoch 1877: loss = 1720186.147538, a = 926.338275, b = 152.533897\n",
  2112. "epoch 1878: loss = 1720184.099807, a = 926.382430, b = 152.533869\n",
  2113. "epoch 1879: loss = 1720182.060059, a = 926.426497, b = 152.533841\n",
  2114. "epoch 1880: loss = 1720180.028263, a = 926.470475, b = 152.533812\n",
  2115. "epoch 1881: loss = 1720178.004387, a = 926.514366, b = 152.533784\n",
  2116. "epoch 1882: loss = 1720175.988400, a = 926.558169, b = 152.533756\n",
  2117. "epoch 1883: loss = 1720173.980271, a = 926.601884, b = 152.533729\n",
  2118. "epoch 1884: loss = 1720171.979968, a = 926.645512, b = 152.533701\n",
  2119. "epoch 1885: loss = 1720169.987462, a = 926.689053, b = 152.533673\n",
  2120. "epoch 1886: loss = 1720168.002721, a = 926.732507, b = 152.533645\n",
  2121. "epoch 1887: loss = 1720166.025715, a = 926.775873, b = 152.533617\n",
  2122. "epoch 1888: loss = 1720164.056412, a = 926.819153, b = 152.533590\n",
  2123. "epoch 1889: loss = 1720162.094784, a = 926.862347, b = 152.533562\n",
  2124. "epoch 1890: loss = 1720160.140799, a = 926.905454, b = 152.533535\n",
  2125. "epoch 1891: loss = 1720158.194427, a = 926.948475, b = 152.533507\n",
  2126. "epoch 1892: loss = 1720156.255638, a = 926.991410, b = 152.533480\n",
  2127. "epoch 1893: loss = 1720154.324403, a = 927.034259, b = 152.533452\n",
  2128. "epoch 1894: loss = 1720152.400692, a = 927.077022, b = 152.533425\n",
  2129. "epoch 1895: loss = 1720150.484474, a = 927.119700, b = 152.533398\n",
  2130. "epoch 1896: loss = 1720148.575721, a = 927.162292, b = 152.533371\n",
  2131. "epoch 1897: loss = 1720146.674402, a = 927.204800, b = 152.533343\n",
  2132. "epoch 1898: loss = 1720144.780489, a = 927.247222, b = 152.533316\n",
  2133. "epoch 1899: loss = 1720142.893953, a = 927.289560, b = 152.533289\n",
  2134. "epoch 1900: loss = 1720141.014763, a = 927.331812, b = 152.533262\n",
  2135. "epoch 1901: loss = 1720139.142892, a = 927.373981, b = 152.533235\n",
  2136. "epoch 1902: loss = 1720137.278311, a = 927.416065, b = 152.533209\n",
  2137. "epoch 1903: loss = 1720135.420990, a = 927.458065, b = 152.533182\n",
  2138. "epoch 1904: loss = 1720133.570901, a = 927.499981, b = 152.533155\n",
  2139. "epoch 1905: loss = 1720131.728016, a = 927.541813, b = 152.533128\n",
  2140. "epoch 1906: loss = 1720129.892306, a = 927.583561, b = 152.533102\n",
  2141. "epoch 1907: loss = 1720128.063742, a = 927.625226, b = 152.533075\n",
  2142. "epoch 1908: loss = 1720126.242298, a = 927.666808, b = 152.533048\n",
  2143. "epoch 1909: loss = 1720124.427944, a = 927.708306, b = 152.533022\n",
  2144. "epoch 1910: loss = 1720122.620652, a = 927.749721, b = 152.532995\n",
  2145. "epoch 1911: loss = 1720120.820396, a = 927.791054, b = 152.532969\n",
  2146. "epoch 1912: loss = 1720119.027146, a = 927.832304, b = 152.532943\n",
  2147. "epoch 1913: loss = 1720117.240876, a = 927.873472, b = 152.532916\n",
  2148. "epoch 1914: loss = 1720115.461558, a = 927.914557, b = 152.532890\n",
  2149. "epoch 1915: loss = 1720113.689165, a = 927.955560, b = 152.532864\n",
  2150. "epoch 1916: loss = 1720111.923668, a = 927.996481, b = 152.532838\n",
  2151. "epoch 1917: loss = 1720110.165042, a = 928.037320, b = 152.532812\n",
  2152. "epoch 1918: loss = 1720108.413258, a = 928.078078, b = 152.532786\n",
  2153. "epoch 1919: loss = 1720106.668291, a = 928.118754, b = 152.532760\n",
  2154. "epoch 1920: loss = 1720104.930113, a = 928.159348, b = 152.532734\n",
  2155. "epoch 1921: loss = 1720103.198697, a = 928.199862, b = 152.532708\n",
  2156. "epoch 1922: loss = 1720101.474017, a = 928.240295, b = 152.532682\n",
  2157. "epoch 1923: loss = 1720099.756046, a = 928.280646, b = 152.532656\n",
  2158. "epoch 1924: loss = 1720098.044757, a = 928.320917, b = 152.532631\n",
  2159. "epoch 1925: loss = 1720096.340125, a = 928.361108, b = 152.532605\n",
  2160. "epoch 1926: loss = 1720094.642123, a = 928.401218, b = 152.532579\n",
  2161. "epoch 1927: loss = 1720092.950726, a = 928.441248, b = 152.532554\n",
  2162. "epoch 1928: loss = 1720091.265906, a = 928.481197, b = 152.532528\n",
  2163. "epoch 1929: loss = 1720089.587638, a = 928.521067, b = 152.532503\n",
  2164. "epoch 1930: loss = 1720087.915897, a = 928.560858, b = 152.532477\n",
  2165. "epoch 1931: loss = 1720086.250656, a = 928.600568, b = 152.532452\n",
  2166. "epoch 1932: loss = 1720084.591889, a = 928.640200, b = 152.532427\n",
  2167. "epoch 1933: loss = 1720082.939573, a = 928.679752, b = 152.532401\n",
  2168. "epoch 1934: loss = 1720081.293680, a = 928.719224, b = 152.532376\n",
  2169. "epoch 1935: loss = 1720079.654186, a = 928.758618, b = 152.532351\n",
  2170. "epoch 1936: loss = 1720078.021066, a = 928.797934, b = 152.532326\n",
  2171. "epoch 1937: loss = 1720076.394293, a = 928.837170, b = 152.532301\n",
  2172. "epoch 1938: loss = 1720074.773845, a = 928.876328, b = 152.532276\n",
  2173. "epoch 1939: loss = 1720073.159694, a = 928.915408, b = 152.532251\n",
  2174. "epoch 1940: loss = 1720071.551818, a = 928.954410, b = 152.532226\n",
  2175. "epoch 1941: loss = 1720069.950190, a = 928.993333, b = 152.532201\n",
  2176. "epoch 1942: loss = 1720068.354786, a = 929.032179, b = 152.532176\n",
  2177. "epoch 1943: loss = 1720066.765582, a = 929.070948, b = 152.532152\n",
  2178. "epoch 1944: loss = 1720065.182554, a = 929.109638, b = 152.532127\n",
  2179. "epoch 1945: loss = 1720063.605677, a = 929.148251, b = 152.532102\n",
  2180. "epoch 1946: loss = 1720062.034926, a = 929.186787, b = 152.532078\n",
  2181. "epoch 1947: loss = 1720060.470278, a = 929.225246, b = 152.532053\n",
  2182. "epoch 1948: loss = 1720058.911709, a = 929.263629, b = 152.532028\n",
  2183. "epoch 1949: loss = 1720057.359194, a = 929.301934, b = 152.532004\n",
  2184. "epoch 1950: loss = 1720055.812710, a = 929.340163, b = 152.531980\n",
  2185. "epoch 1951: loss = 1720054.272234, a = 929.378315, b = 152.531955\n",
  2186. "epoch 1952: loss = 1720052.737740, a = 929.416391, b = 152.531931\n",
  2187. "epoch 1953: loss = 1720051.209207, a = 929.454391, b = 152.531907\n",
  2188. "epoch 1954: loss = 1720049.686610, a = 929.492315, b = 152.531882\n",
  2189. "epoch 1955: loss = 1720048.169926, a = 929.530163, b = 152.531858\n",
  2190. "epoch 1956: loss = 1720046.659132, a = 929.567935, b = 152.531834\n",
  2191. "epoch 1957: loss = 1720045.154204, a = 929.605632, b = 152.531810\n",
  2192. "epoch 1958: loss = 1720043.655120, a = 929.643253, b = 152.531786\n",
  2193. "epoch 1959: loss = 1720042.161857, a = 929.680800, b = 152.531762\n",
  2194. "epoch 1960: loss = 1720040.674390, a = 929.718271, b = 152.531738\n",
  2195. "epoch 1961: loss = 1720039.192699, a = 929.755667, b = 152.531714\n",
  2196. "epoch 1962: loss = 1720037.716759, a = 929.792988, b = 152.531690\n",
  2197. "epoch 1963: loss = 1720036.246549, a = 929.830235, b = 152.531667\n",
  2198. "epoch 1964: loss = 1720034.782046, a = 929.867408, b = 152.531643\n",
  2199. "epoch 1965: loss = 1720033.323226, a = 929.904506, b = 152.531619\n",
  2200. "epoch 1966: loss = 1720031.870069, a = 929.941529, b = 152.531596\n"
  2201. ]
  2202. },
  2203. {
  2204. "name": "stdout",
  2205. "output_type": "stream",
  2206. "text": [
  2207. "epoch 1967: loss = 1720030.422552, a = 929.978479, b = 152.531572\n",
  2208. "epoch 1968: loss = 1720028.980651, a = 930.015355, b = 152.531548\n",
  2209. "epoch 1969: loss = 1720027.544347, a = 930.052157, b = 152.531525\n",
  2210. "epoch 1970: loss = 1720026.113615, a = 930.088886, b = 152.531501\n",
  2211. "epoch 1971: loss = 1720024.688435, a = 930.125541, b = 152.531478\n",
  2212. "epoch 1972: loss = 1720023.268784, a = 930.162123, b = 152.531455\n",
  2213. "epoch 1973: loss = 1720021.854641, a = 930.198631, b = 152.531431\n",
  2214. "epoch 1974: loss = 1720020.445984, a = 930.235067, b = 152.531408\n",
  2215. "epoch 1975: loss = 1720019.042792, a = 930.271430, b = 152.531385\n",
  2216. "epoch 1976: loss = 1720017.645042, a = 930.307720, b = 152.531362\n",
  2217. "epoch 1977: loss = 1720016.252715, a = 930.343937, b = 152.531338\n",
  2218. "epoch 1978: loss = 1720014.865787, a = 930.380082, b = 152.531315\n",
  2219. "epoch 1979: loss = 1720013.484238, a = 930.416155, b = 152.531292\n",
  2220. "epoch 1980: loss = 1720012.108047, a = 930.452156, b = 152.531269\n",
  2221. "epoch 1981: loss = 1720010.737193, a = 930.488085, b = 152.531246\n",
  2222. "epoch 1982: loss = 1720009.371655, a = 930.523941, b = 152.531224\n",
  2223. "epoch 1983: loss = 1720008.011411, a = 930.559727, b = 152.531201\n",
  2224. "epoch 1984: loss = 1720006.656442, a = 930.595440, b = 152.531178\n",
  2225. "epoch 1985: loss = 1720005.306725, a = 930.631082, b = 152.531155\n",
  2226. "epoch 1986: loss = 1720003.962241, a = 930.666653, b = 152.531132\n",
  2227. "epoch 1987: loss = 1720002.622969, a = 930.702153, b = 152.531110\n",
  2228. "epoch 1988: loss = 1720001.288889, a = 930.737582, b = 152.531087\n",
  2229. "epoch 1989: loss = 1719999.959979, a = 930.772940, b = 152.531064\n",
  2230. "epoch 1990: loss = 1719998.636221, a = 930.808227, b = 152.531042\n",
  2231. "epoch 1991: loss = 1719997.317593, a = 930.843444, b = 152.531019\n",
  2232. "epoch 1992: loss = 1719996.004075, a = 930.878590, b = 152.530997\n",
  2233. "epoch 1993: loss = 1719994.695647, a = 930.913666, b = 152.530975\n",
  2234. "epoch 1994: loss = 1719993.392289, a = 930.948672, b = 152.530952\n",
  2235. "epoch 1995: loss = 1719992.093981, a = 930.983607, b = 152.530930\n",
  2236. "epoch 1996: loss = 1719990.800704, a = 931.018473, b = 152.530908\n",
  2237. "epoch 1997: loss = 1719989.512438, a = 931.053270, b = 152.530885\n",
  2238. "epoch 1998: loss = 1719988.229162, a = 931.087996, b = 152.530863\n",
  2239. "epoch 1999: loss = 1719986.950857, a = 931.122653, b = 152.530841\n",
  2240. "epoch 2000: loss = 1719985.677504, a = 931.157241, b = 152.530819\n",
  2241. "epoch 2001: loss = 1719984.409083, a = 931.191760, b = 152.530797\n",
  2242. "epoch 2002: loss = 1719983.145576, a = 931.226210, b = 152.530775\n",
  2243. "epoch 2003: loss = 1719981.886961, a = 931.260591, b = 152.530753\n",
  2244. "epoch 2004: loss = 1719980.633221, a = 931.294903, b = 152.530731\n",
  2245. "epoch 2005: loss = 1719979.384336, a = 931.329146, b = 152.530709\n",
  2246. "epoch 2006: loss = 1719978.140286, a = 931.363321, b = 152.530687\n",
  2247. "epoch 2007: loss = 1719976.901054, a = 931.397428, b = 152.530666\n",
  2248. "epoch 2008: loss = 1719975.666620, a = 931.431466, b = 152.530644\n",
  2249. "epoch 2009: loss = 1719974.436965, a = 931.465437, b = 152.530622\n",
  2250. "epoch 2010: loss = 1719973.212070, a = 931.499339, b = 152.530601\n",
  2251. "epoch 2011: loss = 1719971.991917, a = 931.533174, b = 152.530579\n",
  2252. "epoch 2012: loss = 1719970.776487, a = 931.566941, b = 152.530557\n",
  2253. "epoch 2013: loss = 1719969.565762, a = 931.600640, b = 152.530536\n",
  2254. "epoch 2014: loss = 1719968.359722, a = 931.634272, b = 152.530514\n",
  2255. "epoch 2015: loss = 1719967.158350, a = 931.667837, b = 152.530493\n",
  2256. "epoch 2016: loss = 1719965.961627, a = 931.701335, b = 152.530472\n",
  2257. "epoch 2017: loss = 1719964.769535, a = 931.734766, b = 152.530450\n",
  2258. "epoch 2018: loss = 1719963.582056, a = 931.768130, b = 152.530429\n",
  2259. "epoch 2019: loss = 1719962.399172, a = 931.801427, b = 152.530408\n",
  2260. "epoch 2020: loss = 1719961.220864, a = 931.834657, b = 152.530386\n",
  2261. "epoch 2021: loss = 1719960.047114, a = 931.867821, b = 152.530365\n",
  2262. "epoch 2022: loss = 1719958.877905, a = 931.900919, b = 152.530344\n",
  2263. "epoch 2023: loss = 1719957.713219, a = 931.933951, b = 152.530323\n",
  2264. "epoch 2024: loss = 1719956.553038, a = 931.966917, b = 152.530302\n",
  2265. "epoch 2025: loss = 1719955.397344, a = 931.999816, b = 152.530281\n",
  2266. "epoch 2026: loss = 1719954.246120, a = 932.032650, b = 152.530260\n",
  2267. "epoch 2027: loss = 1719953.099348, a = 932.065418, b = 152.530239\n",
  2268. "epoch 2028: loss = 1719951.957011, a = 932.098121, b = 152.530218\n",
  2269. "epoch 2029: loss = 1719950.819091, a = 932.130758, b = 152.530197\n",
  2270. "epoch 2030: loss = 1719949.685570, a = 932.163330, b = 152.530176\n",
  2271. "epoch 2031: loss = 1719948.556433, a = 932.195837, b = 152.530156\n",
  2272. "epoch 2032: loss = 1719947.431660, a = 932.228279, b = 152.530135\n",
  2273. "epoch 2033: loss = 1719946.311236, a = 932.260656, b = 152.530114\n",
  2274. "epoch 2034: loss = 1719945.195143, a = 932.292968, b = 152.530094\n",
  2275. "epoch 2035: loss = 1719944.083364, a = 932.325216, b = 152.530073\n",
  2276. "epoch 2036: loss = 1719942.975882, a = 932.357399, b = 152.530052\n",
  2277. "epoch 2037: loss = 1719941.872681, a = 932.389518, b = 152.530032\n",
  2278. "epoch 2038: loss = 1719940.773742, a = 932.421573, b = 152.530012\n",
  2279. "epoch 2039: loss = 1719939.679051, a = 932.453563, b = 152.529991\n",
  2280. "epoch 2040: loss = 1719938.588590, a = 932.485490, b = 152.529971\n",
  2281. "epoch 2041: loss = 1719937.502342, a = 932.517352, b = 152.529950\n",
  2282. "epoch 2042: loss = 1719936.420291, a = 932.549151, b = 152.529930\n",
  2283. "epoch 2043: loss = 1719935.342420, a = 932.580887, b = 152.529910\n",
  2284. "epoch 2044: loss = 1719934.268714, a = 932.612559, b = 152.529890\n",
  2285. "epoch 2045: loss = 1719933.199154, a = 932.644167, b = 152.529869\n",
  2286. "epoch 2046: loss = 1719932.133727, a = 932.675713, b = 152.529849\n",
  2287. "epoch 2047: loss = 1719931.072414, a = 932.707195, b = 152.529829\n",
  2288. "epoch 2048: loss = 1719930.015201, a = 932.738614, b = 152.529809\n",
  2289. "epoch 2049: loss = 1719928.962070, a = 932.769971, b = 152.529789\n",
  2290. "epoch 2050: loss = 1719927.913006, a = 932.801265, b = 152.529769\n",
  2291. "epoch 2051: loss = 1719926.867993, a = 932.832496, b = 152.529749\n",
  2292. "epoch 2052: loss = 1719925.827015, a = 932.863665, b = 152.529729\n",
  2293. "epoch 2053: loss = 1719924.790056, a = 932.894771, b = 152.529709\n",
  2294. "epoch 2054: loss = 1719923.757100, a = 932.925815, b = 152.529689\n",
  2295. "epoch 2055: loss = 1719922.728132, a = 932.956798, b = 152.529670\n",
  2296. "epoch 2056: loss = 1719921.703136, a = 932.987718, b = 152.529650\n",
  2297. "epoch 2057: loss = 1719920.682097, a = 933.018576, b = 152.529630\n",
  2298. "epoch 2058: loss = 1719919.664998, a = 933.049373, b = 152.529611\n",
  2299. "epoch 2059: loss = 1719918.651824, a = 933.080108, b = 152.529591\n",
  2300. "epoch 2060: loss = 1719917.642561, a = 933.110782, b = 152.529571\n",
  2301. "epoch 2061: loss = 1719916.637192, a = 933.141394, b = 152.529552\n",
  2302. "epoch 2062: loss = 1719915.635703, a = 933.171945, b = 152.529532\n",
  2303. "epoch 2063: loss = 1719914.638078, a = 933.202435, b = 152.529513\n",
  2304. "epoch 2064: loss = 1719913.644301, a = 933.232864, b = 152.529493\n",
  2305. "epoch 2065: loss = 1719912.654359, a = 933.263232, b = 152.529474\n",
  2306. "epoch 2066: loss = 1719911.668235, a = 933.293540, b = 152.529455\n",
  2307. "epoch 2067: loss = 1719910.685915, a = 933.323787, b = 152.529435\n",
  2308. "epoch 2068: loss = 1719909.707384, a = 933.353973, b = 152.529416\n",
  2309. "epoch 2069: loss = 1719908.732628, a = 933.384099, b = 152.529397\n",
  2310. "epoch 2070: loss = 1719907.761630, a = 933.414165, b = 152.529378\n",
  2311. "epoch 2071: loss = 1719906.794377, a = 933.444170, b = 152.529358\n",
  2312. "epoch 2072: loss = 1719905.830853, a = 933.474116, b = 152.529339\n",
  2313. "epoch 2073: loss = 1719904.871045, a = 933.504002, b = 152.529320\n",
  2314. "epoch 2074: loss = 1719903.914938, a = 933.533828, b = 152.529301\n",
  2315. "epoch 2075: loss = 1719902.962516, a = 933.563594, b = 152.529282\n",
  2316. "epoch 2076: loss = 1719902.013766, a = 933.593301, b = 152.529263\n",
  2317. "epoch 2077: loss = 1719901.068673, a = 933.622949, b = 152.529244\n",
  2318. "epoch 2078: loss = 1719900.127223, a = 933.652537, b = 152.529225\n",
  2319. "epoch 2079: loss = 1719899.189402, a = 933.682066, b = 152.529206\n",
  2320. "epoch 2080: loss = 1719898.255195, a = 933.711536, b = 152.529188\n",
  2321. "epoch 2081: loss = 1719897.324588, a = 933.740947, b = 152.529169\n",
  2322. "epoch 2082: loss = 1719896.397567, a = 933.770299, b = 152.529150\n",
  2323. "epoch 2083: loss = 1719895.474119, a = 933.799592, b = 152.529131\n",
  2324. "epoch 2084: loss = 1719894.554228, a = 933.828827, b = 152.529113\n",
  2325. "epoch 2085: loss = 1719893.637881, a = 933.858004, b = 152.529094\n",
  2326. "epoch 2086: loss = 1719892.725064, a = 933.887122, b = 152.529075\n",
  2327. "epoch 2087: loss = 1719891.815764, a = 933.916182, b = 152.529057\n",
  2328. "epoch 2088: loss = 1719890.909966, a = 933.945183, b = 152.529038\n",
  2329. "epoch 2089: loss = 1719890.007657, a = 933.974127, b = 152.529020\n",
  2330. "epoch 2090: loss = 1719889.108823, a = 934.003013, b = 152.529001\n",
  2331. "epoch 2091: loss = 1719888.213450, a = 934.031841, b = 152.528983\n",
  2332. "epoch 2092: loss = 1719887.321526, a = 934.060612, b = 152.528965\n",
  2333. "epoch 2093: loss = 1719886.433035, a = 934.089325, b = 152.528946\n",
  2334. "epoch 2094: loss = 1719885.547966, a = 934.117980, b = 152.528928\n",
  2335. "epoch 2095: loss = 1719884.666304, a = 934.146579, b = 152.528910\n",
  2336. "epoch 2096: loss = 1719883.788036, a = 934.175120, b = 152.528892\n",
  2337. "epoch 2097: loss = 1719882.913149, a = 934.203604, b = 152.528873\n",
  2338. "epoch 2098: loss = 1719882.041630, a = 934.232031, b = 152.528855\n",
  2339. "epoch 2099: loss = 1719881.173465, a = 934.260401, b = 152.528837\n",
  2340. "epoch 2100: loss = 1719880.308641, a = 934.288714, b = 152.528819\n",
  2341. "epoch 2101: loss = 1719879.447146, a = 934.316971, b = 152.528801\n",
  2342. "epoch 2102: loss = 1719878.588965, a = 934.345171, b = 152.528783\n",
  2343. "epoch 2103: loss = 1719877.734087, a = 934.373315, b = 152.528765\n",
  2344. "epoch 2104: loss = 1719876.882498, a = 934.401403, b = 152.528747\n",
  2345. "epoch 2105: loss = 1719876.034185, a = 934.429435, b = 152.528729\n",
  2346. "epoch 2106: loss = 1719875.189135, a = 934.457410, b = 152.528711\n",
  2347. "epoch 2107: loss = 1719874.347336, a = 934.485329, b = 152.528693\n",
  2348. "epoch 2108: loss = 1719873.508776, a = 934.513193, b = 152.528676\n",
  2349. "epoch 2109: loss = 1719872.673440, a = 934.541001, b = 152.528658\n",
  2350. "epoch 2110: loss = 1719871.841317, a = 934.568753, b = 152.528640\n",
  2351. "epoch 2111: loss = 1719871.012394, a = 934.596450, b = 152.528622\n",
  2352. "epoch 2112: loss = 1719870.186658, a = 934.624092, b = 152.528605\n",
  2353. "epoch 2113: loss = 1719869.364098, a = 934.651678, b = 152.528587\n",
  2354. "epoch 2114: loss = 1719868.544700, a = 934.679209, b = 152.528570\n",
  2355. "epoch 2115: loss = 1719867.728452, a = 934.706685, b = 152.528552\n",
  2356. "epoch 2116: loss = 1719866.915342, a = 934.734106, b = 152.528535\n",
  2357. "epoch 2117: loss = 1719866.105358, a = 934.761472, b = 152.528517\n",
  2358. "epoch 2118: loss = 1719865.298486, a = 934.788784, b = 152.528500\n",
  2359. "epoch 2119: loss = 1719864.494716, a = 934.816041, b = 152.528482\n",
  2360. "epoch 2120: loss = 1719863.694035, a = 934.843243, b = 152.528465\n",
  2361. "epoch 2121: loss = 1719862.896431, a = 934.870391, b = 152.528447\n",
  2362. "epoch 2122: loss = 1719862.101892, a = 934.897485, b = 152.528430\n",
  2363. "epoch 2123: loss = 1719861.310405, a = 934.924524, b = 152.528413\n",
  2364. "epoch 2124: loss = 1719860.521959, a = 934.951509, b = 152.528396\n",
  2365. "epoch 2125: loss = 1719859.736543, a = 934.978441, b = 152.528378\n",
  2366. "epoch 2126: loss = 1719858.954143, a = 935.005319, b = 152.528361\n",
  2367. "epoch 2127: loss = 1719858.174749, a = 935.032142, b = 152.528344\n",
  2368. "epoch 2128: loss = 1719857.398348, a = 935.058913, b = 152.528327\n",
  2369. "epoch 2129: loss = 1719856.624929, a = 935.085629, b = 152.528310\n",
  2370. "epoch 2130: loss = 1719855.854480, a = 935.112293, b = 152.528293\n",
  2371. "epoch 2131: loss = 1719855.086989, a = 935.138903, b = 152.528276\n",
  2372. "epoch 2132: loss = 1719854.322446, a = 935.165459, b = 152.528259\n",
  2373. "epoch 2133: loss = 1719853.560837, a = 935.191963, b = 152.528242\n",
  2374. "epoch 2134: loss = 1719852.802153, a = 935.218414, b = 152.528225\n",
  2375. "epoch 2135: loss = 1719852.046381, a = 935.244811, b = 152.528208\n",
  2376. "epoch 2136: loss = 1719851.293510, a = 935.271156, b = 152.528191\n",
  2377. "epoch 2137: loss = 1719850.543529, a = 935.297449, b = 152.528175\n",
  2378. "epoch 2138: loss = 1719849.796427, a = 935.323688, b = 152.528158\n",
  2379. "epoch 2139: loss = 1719849.052191, a = 935.349876, b = 152.528141\n",
  2380. "epoch 2140: loss = 1719848.310811, a = 935.376010, b = 152.528125\n",
  2381. "epoch 2141: loss = 1719847.572276, a = 935.402093, b = 152.528108\n",
  2382. "epoch 2142: loss = 1719846.836575, a = 935.428123, b = 152.528091\n",
  2383. "epoch 2143: loss = 1719846.103696, a = 935.454102, b = 152.528075\n",
  2384. "epoch 2144: loss = 1719845.373629, a = 935.480028, b = 152.528058\n",
  2385. "epoch 2145: loss = 1719844.646362, a = 935.505903, b = 152.528042\n",
  2386. "epoch 2146: loss = 1719843.921885, a = 935.531726, b = 152.528025\n",
  2387. "epoch 2147: loss = 1719843.200186, a = 935.557497, b = 152.528009\n",
  2388. "epoch 2148: loss = 1719842.481255, a = 935.583217, b = 152.527992\n",
  2389. "epoch 2149: loss = 1719841.765080, a = 935.608885, b = 152.527976\n",
  2390. "epoch 2150: loss = 1719841.051652, a = 935.634502, b = 152.527959\n",
  2391. "epoch 2151: loss = 1719840.340960, a = 935.660068, b = 152.527943\n",
  2392. "epoch 2152: loss = 1719839.632992, a = 935.685582, b = 152.527927\n",
  2393. "epoch 2153: loss = 1719838.927738, a = 935.711046, b = 152.527911\n",
  2394. "epoch 2154: loss = 1719838.225187, a = 935.736458, b = 152.527894\n",
  2395. "epoch 2155: loss = 1719837.525329, a = 935.761820, b = 152.527878\n",
  2396. "epoch 2156: loss = 1719836.828154, a = 935.787131, b = 152.527862\n",
  2397. "epoch 2157: loss = 1719836.133650, a = 935.812392, b = 152.527846\n",
  2398. "epoch 2158: loss = 1719835.441808, a = 935.837602, b = 152.527830\n",
  2399. "epoch 2159: loss = 1719834.752617, a = 935.862761, b = 152.527814\n",
  2400. "epoch 2160: loss = 1719834.066066, a = 935.887871, b = 152.527798\n",
  2401. "epoch 2161: loss = 1719833.382146, a = 935.912930, b = 152.527782\n",
  2402. "epoch 2162: loss = 1719832.700845, a = 935.937939, b = 152.527766\n",
  2403. "epoch 2163: loss = 1719832.022154, a = 935.962898, b = 152.527750\n",
  2404. "epoch 2164: loss = 1719831.346063, a = 935.987807, b = 152.527734\n",
  2405. "epoch 2165: loss = 1719830.672562, a = 936.012666, b = 152.527718\n",
  2406. "epoch 2166: loss = 1719830.001639, a = 936.037475, b = 152.527702\n",
  2407. "epoch 2167: loss = 1719829.333286, a = 936.062235, b = 152.527686\n",
  2408. "epoch 2168: loss = 1719828.667491, a = 936.086946, b = 152.527670\n",
  2409. "epoch 2169: loss = 1719828.004246, a = 936.111607, b = 152.527655\n",
  2410. "epoch 2170: loss = 1719827.343541, a = 936.136218, b = 152.527639\n",
  2411. "epoch 2171: loss = 1719826.685364, a = 936.160781, b = 152.527623\n",
  2412. "epoch 2172: loss = 1719826.029707, a = 936.185294, b = 152.527608\n",
  2413. "epoch 2173: loss = 1719825.376559, a = 936.209758, b = 152.527592\n",
  2414. "epoch 2174: loss = 1719824.725911, a = 936.234174, b = 152.527576\n",
  2415. "epoch 2175: loss = 1719824.077753, a = 936.258540, b = 152.527561\n",
  2416. "epoch 2176: loss = 1719823.432075, a = 936.282858, b = 152.527545\n",
  2417. "epoch 2177: loss = 1719822.788867, a = 936.307127, b = 152.527530\n",
  2418. "epoch 2178: loss = 1719822.148121, a = 936.331348, b = 152.527514\n",
  2419. "epoch 2179: loss = 1719821.509826, a = 936.355520, b = 152.527499\n",
  2420. "epoch 2180: loss = 1719820.873972, a = 936.379644, b = 152.527484\n",
  2421. "epoch 2181: loss = 1719820.240551, a = 936.403720, b = 152.527468\n",
  2422. "epoch 2182: loss = 1719819.609552, a = 936.427747, b = 152.527453\n",
  2423. "epoch 2183: loss = 1719818.980966, a = 936.451727, b = 152.527437\n",
  2424. "epoch 2184: loss = 1719818.354784, a = 936.475658, b = 152.527422\n",
  2425. "epoch 2185: loss = 1719817.730997, a = 936.499542, b = 152.527407\n",
  2426. "epoch 2186: loss = 1719817.109594, a = 936.523378, b = 152.527392\n",
  2427. "epoch 2187: loss = 1719816.490568, a = 936.547166, b = 152.527377\n",
  2428. "epoch 2188: loss = 1719815.873907, a = 936.570907, b = 152.527361\n",
  2429. "epoch 2189: loss = 1719815.259604, a = 936.594600, b = 152.527346\n",
  2430. "epoch 2190: loss = 1719814.647649, a = 936.618246, b = 152.527331\n",
  2431. "epoch 2191: loss = 1719814.038033, a = 936.641844, b = 152.527316\n",
  2432. "epoch 2192: loss = 1719813.430746, a = 936.665396, b = 152.527301\n",
  2433. "epoch 2193: loss = 1719812.825780, a = 936.688900, b = 152.527286\n",
  2434. "epoch 2194: loss = 1719812.223125, a = 936.712357, b = 152.527271\n",
  2435. "epoch 2195: loss = 1719811.622773, a = 936.735768, b = 152.527256\n",
  2436. "epoch 2196: loss = 1719811.024714, a = 936.759131, b = 152.527241\n",
  2437. "epoch 2197: loss = 1719810.428940, a = 936.782448, b = 152.527226\n",
  2438. "epoch 2198: loss = 1719809.835442, a = 936.805718, b = 152.527211\n",
  2439. "epoch 2199: loss = 1719809.244210, a = 936.828942, b = 152.527197\n",
  2440. "epoch 2200: loss = 1719808.655236, a = 936.852119, b = 152.527182\n",
  2441. "epoch 2201: loss = 1719808.068512, a = 936.875250, b = 152.527167\n",
  2442. "epoch 2202: loss = 1719807.484027, a = 936.898335, b = 152.527152\n",
  2443. "epoch 2203: loss = 1719806.901775, a = 936.921373, b = 152.527138\n",
  2444. "epoch 2204: loss = 1719806.321745, a = 936.944365, b = 152.527123\n",
  2445. "epoch 2205: loss = 1719805.743929, a = 936.967312, b = 152.527108\n",
  2446. "epoch 2206: loss = 1719805.168319, a = 936.990212, b = 152.527094\n",
  2447. "epoch 2207: loss = 1719804.594905, a = 937.013067, b = 152.527079\n",
  2448. "epoch 2208: loss = 1719804.023681, a = 937.035876, b = 152.527064\n",
  2449. "epoch 2209: loss = 1719803.454636, a = 937.058640, b = 152.527050\n",
  2450. "epoch 2210: loss = 1719802.887762, a = 937.081357, b = 152.527035\n",
  2451. "epoch 2211: loss = 1719802.323051, a = 937.104030, b = 152.527021\n",
  2452. "epoch 2212: loss = 1719801.760495, a = 937.126657, b = 152.527006\n",
  2453. "epoch 2213: loss = 1719801.200084, a = 937.149239, b = 152.526992\n",
  2454. "epoch 2214: loss = 1719800.641811, a = 937.171776, b = 152.526978\n",
  2455. "epoch 2215: loss = 1719800.085668, a = 937.194267, b = 152.526963\n",
  2456. "epoch 2216: loss = 1719799.531645, a = 937.216714, b = 152.526949\n",
  2457. "epoch 2217: loss = 1719798.979736, a = 937.239116, b = 152.526935\n",
  2458. "epoch 2218: loss = 1719798.429930, a = 937.261473, b = 152.526920\n",
  2459. "epoch 2219: loss = 1719797.882221, a = 937.283785, b = 152.526906\n",
  2460. "epoch 2220: loss = 1719797.336601, a = 937.306053, b = 152.526892\n",
  2461. "epoch 2221: loss = 1719796.793060, a = 937.328276, b = 152.526878\n",
  2462. "epoch 2222: loss = 1719796.251591, a = 937.350455, b = 152.526863\n",
  2463. "epoch 2223: loss = 1719795.712185, a = 937.372589, b = 152.526849\n",
  2464. "epoch 2224: loss = 1719795.174836, a = 937.394679, b = 152.526835\n",
  2465. "epoch 2225: loss = 1719794.639534, a = 937.416725, b = 152.526821\n",
  2466. "epoch 2226: loss = 1719794.106272, a = 937.438727, b = 152.526807\n",
  2467. "epoch 2227: loss = 1719793.575042, a = 937.460685, b = 152.526793\n",
  2468. "epoch 2228: loss = 1719793.045835, a = 937.482599, b = 152.526779\n",
  2469. "epoch 2229: loss = 1719792.518645, a = 937.504469, b = 152.526765\n",
  2470. "epoch 2230: loss = 1719791.993463, a = 937.526295, b = 152.526751\n",
  2471. "epoch 2231: loss = 1719791.470281, a = 937.548078, b = 152.526737\n",
  2472. "epoch 2232: loss = 1719790.949091, a = 937.569817, b = 152.526723\n",
  2473. "epoch 2233: loss = 1719790.429886, a = 937.591513, b = 152.526709\n",
  2474. "epoch 2234: loss = 1719789.912658, a = 937.613165, b = 152.526696\n",
  2475. "epoch 2235: loss = 1719789.397400, a = 937.634774, b = 152.526682\n",
  2476. "epoch 2236: loss = 1719788.884103, a = 937.656340, b = 152.526668\n",
  2477. "epoch 2237: loss = 1719788.372760, a = 937.677863, b = 152.526654\n",
  2478. "epoch 2238: loss = 1719787.863363, a = 937.699343, b = 152.526641\n",
  2479. "epoch 2239: loss = 1719787.355906, a = 937.720779, b = 152.526627\n",
  2480. "epoch 2240: loss = 1719786.850379, a = 937.742173, b = 152.526613\n",
  2481. "epoch 2241: loss = 1719786.346776, a = 937.763524, b = 152.526600\n",
  2482. "epoch 2242: loss = 1719785.845089, a = 937.784833, b = 152.526586\n",
  2483. "epoch 2243: loss = 1719785.345311, a = 937.806098, b = 152.526572\n",
  2484. "epoch 2244: loss = 1719784.847435, a = 937.827322, b = 152.526559\n",
  2485. "epoch 2245: loss = 1719784.351452, a = 937.848502, b = 152.526545\n",
  2486. "epoch 2246: loss = 1719783.857356, a = 937.869641, b = 152.526532\n",
  2487. "epoch 2247: loss = 1719783.365139, a = 937.890737, b = 152.526518\n",
  2488. "epoch 2248: loss = 1719782.874794, a = 937.911791, b = 152.526505\n",
  2489. "epoch 2249: loss = 1719782.386313, a = 937.932803, b = 152.526492\n",
  2490. "epoch 2250: loss = 1719781.899690, a = 937.953773, b = 152.526478\n",
  2491. "epoch 2251: loss = 1719781.414916, a = 937.974701, b = 152.526465\n",
  2492. "epoch 2252: loss = 1719780.931986, a = 937.995587, b = 152.526451\n",
  2493. "epoch 2253: loss = 1719780.450892, a = 938.016431, b = 152.526438\n",
  2494. "epoch 2254: loss = 1719779.971625, a = 938.037234, b = 152.526425\n",
  2495. "epoch 2255: loss = 1719779.494181, a = 938.057995, b = 152.526412\n",
  2496. "epoch 2256: loss = 1719779.018550, a = 938.078714, b = 152.526398\n",
  2497. "epoch 2257: loss = 1719778.544727, a = 938.099392, b = 152.526385\n",
  2498. "epoch 2258: loss = 1719778.072705, a = 938.120029, b = 152.526372\n",
  2499. "epoch 2259: loss = 1719777.602475, a = 938.140625, b = 152.526359\n",
  2500. "epoch 2260: loss = 1719777.134032, a = 938.161179, b = 152.526346\n",
  2501. "epoch 2261: loss = 1719776.667368, a = 938.181692, b = 152.526333\n",
  2502. "epoch 2262: loss = 1719776.202476, a = 938.202164, b = 152.526319\n",
  2503. "epoch 2263: loss = 1719775.739350, a = 938.222595, b = 152.526306\n",
  2504. "epoch 2264: loss = 1719775.277983, a = 938.242986, b = 152.526293\n",
  2505. "epoch 2265: loss = 1719774.818367, a = 938.263335, b = 152.526280\n",
  2506. "epoch 2266: loss = 1719774.360496, a = 938.283644, b = 152.526267\n",
  2507. "epoch 2267: loss = 1719773.904364, a = 938.303913, b = 152.526254\n",
  2508. "epoch 2268: loss = 1719773.449962, a = 938.324140, b = 152.526242\n",
  2509. "epoch 2269: loss = 1719772.997286, a = 938.344328, b = 152.526229\n",
  2510. "epoch 2270: loss = 1719772.546327, a = 938.364475, b = 152.526216\n",
  2511. "epoch 2271: loss = 1719772.097080, a = 938.384581, b = 152.526203\n",
  2512. "epoch 2272: loss = 1719771.649537, a = 938.404648, b = 152.526190\n",
  2513. "epoch 2273: loss = 1719771.203693, a = 938.424674, b = 152.526177\n",
  2514. "epoch 2274: loss = 1719770.759540, a = 938.444660, b = 152.526165\n",
  2515. "epoch 2275: loss = 1719770.317071, a = 938.464607, b = 152.526152\n",
  2516. "epoch 2276: loss = 1719769.876281, a = 938.484513, b = 152.526139\n",
  2517. "epoch 2277: loss = 1719769.437162, a = 938.504380, b = 152.526126\n",
  2518. "epoch 2278: loss = 1719768.999709, a = 938.524207, b = 152.526114\n",
  2519. "epoch 2279: loss = 1719768.563915, a = 938.543994, b = 152.526101\n",
  2520. "epoch 2280: loss = 1719768.129773, a = 938.563742, b = 152.526089\n",
  2521. "epoch 2281: loss = 1719767.697276, a = 938.583450, b = 152.526076\n",
  2522. "epoch 2282: loss = 1719767.266420, a = 938.603119, b = 152.526063\n",
  2523. "epoch 2283: loss = 1719766.837196, a = 938.622748, b = 152.526051\n",
  2524. "epoch 2284: loss = 1719766.409599, a = 938.642338, b = 152.526038\n",
  2525. "epoch 2285: loss = 1719765.983623, a = 938.661889, b = 152.526026\n",
  2526. "epoch 2286: loss = 1719765.559260, a = 938.681401, b = 152.526013\n",
  2527. "epoch 2287: loss = 1719765.136506, a = 938.700874, b = 152.526001\n",
  2528. "epoch 2288: loss = 1719764.715353, a = 938.720308, b = 152.525989\n",
  2529. "epoch 2289: loss = 1719764.295796, a = 938.739703, b = 152.525976\n",
  2530. "epoch 2290: loss = 1719763.877827, a = 938.759060, b = 152.525964\n",
  2531. "epoch 2291: loss = 1719763.461442, a = 938.778377, b = 152.525951\n",
  2532. "epoch 2292: loss = 1719763.046634, a = 938.797656, b = 152.525939\n",
  2533. "epoch 2293: loss = 1719762.633396, a = 938.816897, b = 152.525927\n",
  2534. "epoch 2294: loss = 1719762.221723, a = 938.836099, b = 152.525915\n",
  2535. "epoch 2295: loss = 1719761.811609, a = 938.855262, b = 152.525902\n",
  2536. "epoch 2296: loss = 1719761.403047, a = 938.874387, b = 152.525890\n",
  2537. "epoch 2297: loss = 1719760.996032, a = 938.893474, b = 152.525878\n",
  2538. "epoch 2298: loss = 1719760.590557, a = 938.912523, b = 152.525866\n",
  2539. "epoch 2299: loss = 1719760.186616, a = 938.931534, b = 152.525854\n",
  2540. "epoch 2300: loss = 1719759.784204, a = 938.950507, b = 152.525842\n",
  2541. "epoch 2301: loss = 1719759.383315, a = 938.969442, b = 152.525829\n",
  2542. "epoch 2302: loss = 1719758.983942, a = 938.988339, b = 152.525817\n",
  2543. "epoch 2303: loss = 1719758.586080, a = 939.007198, b = 152.525805\n",
  2544. "epoch 2304: loss = 1719758.189723, a = 939.026019, b = 152.525793\n",
  2545. "epoch 2305: loss = 1719757.794866, a = 939.044803, b = 152.525781\n",
  2546. "epoch 2306: loss = 1719757.401501, a = 939.063549, b = 152.525769\n",
  2547. "epoch 2307: loss = 1719757.009624, a = 939.082258, b = 152.525757\n",
  2548. "epoch 2308: loss = 1719756.619228, a = 939.100929, b = 152.525745\n",
  2549. "epoch 2309: loss = 1719756.230309, a = 939.119563, b = 152.525734\n",
  2550. "epoch 2310: loss = 1719755.842860, a = 939.138160, b = 152.525722\n",
  2551. "epoch 2311: loss = 1719755.456875, a = 939.156719, b = 152.525710\n",
  2552. "epoch 2312: loss = 1719755.072349, a = 939.175242, b = 152.525698\n",
  2553. "epoch 2313: loss = 1719754.689276, a = 939.193727, b = 152.525686\n",
  2554. "epoch 2314: loss = 1719754.307651, a = 939.212176, b = 152.525674\n",
  2555. "epoch 2315: loss = 1719753.927467, a = 939.230587, b = 152.525663\n",
  2556. "epoch 2316: loss = 1719753.548720, a = 939.248962, b = 152.525651\n",
  2557. "epoch 2317: loss = 1719753.171404, a = 939.267300, b = 152.525639\n",
  2558. "epoch 2318: loss = 1719752.795512, a = 939.285601, b = 152.525627\n",
  2559. "epoch 2319: loss = 1719752.421041, a = 939.303866, b = 152.525616\n",
  2560. "epoch 2320: loss = 1719752.047983, a = 939.322094, b = 152.525604\n",
  2561. "epoch 2321: loss = 1719751.676335, a = 939.340286, b = 152.525593\n",
  2562. "epoch 2322: loss = 1719751.306089, a = 939.358441, b = 152.525581\n",
  2563. "epoch 2323: loss = 1719750.937241, a = 939.376560, b = 152.525569\n",
  2564. "epoch 2324: loss = 1719750.569786, a = 939.394643, b = 152.525558\n",
  2565. "epoch 2325: loss = 1719750.203717, a = 939.412690, b = 152.525546\n",
  2566. "epoch 2326: loss = 1719749.839030, a = 939.430701, b = 152.525535\n",
  2567. "epoch 2327: loss = 1719749.475719, a = 939.448675, b = 152.525523\n",
  2568. "epoch 2328: loss = 1719749.113779, a = 939.466614, b = 152.525512\n",
  2569. "epoch 2329: loss = 1719748.753205, a = 939.484516, b = 152.525500\n",
  2570. "epoch 2330: loss = 1719748.393990, a = 939.502383, b = 152.525489\n",
  2571. "epoch 2331: loss = 1719748.036131, a = 939.520215, b = 152.525478\n",
  2572. "epoch 2332: loss = 1719747.679621, a = 939.538010, b = 152.525466\n",
  2573. "epoch 2333: loss = 1719747.324456, a = 939.555770, b = 152.525455\n",
  2574. "epoch 2334: loss = 1719746.970631, a = 939.573495, b = 152.525444\n",
  2575. "epoch 2335: loss = 1719746.618139, a = 939.591184, b = 152.525432\n",
  2576. "epoch 2336: loss = 1719746.266976, a = 939.608837, b = 152.525421\n",
  2577. "epoch 2337: loss = 1719745.917137, a = 939.626456, b = 152.525410\n",
  2578. "epoch 2338: loss = 1719745.568616, a = 939.644039, b = 152.525399\n",
  2579. "epoch 2339: loss = 1719745.221409, a = 939.661587, b = 152.525387\n",
  2580. "epoch 2340: loss = 1719744.875511, a = 939.679100, b = 152.525376\n",
  2581. "epoch 2341: loss = 1719744.530916, a = 939.696577, b = 152.525365\n",
  2582. "epoch 2342: loss = 1719744.187619, a = 939.714020, b = 152.525354\n",
  2583. "epoch 2343: loss = 1719743.845615, a = 939.731428, b = 152.525343\n",
  2584. "epoch 2344: loss = 1719743.504900, a = 939.748802, b = 152.525332\n",
  2585. "epoch 2345: loss = 1719743.165468, a = 939.766140, b = 152.525321\n",
  2586. "epoch 2346: loss = 1719742.827314, a = 939.783444, b = 152.525310\n",
  2587. "epoch 2347: loss = 1719742.490434, a = 939.800713, b = 152.525298\n",
  2588. "epoch 2348: loss = 1719742.154822, a = 939.817948, b = 152.525287\n",
  2589. "epoch 2349: loss = 1719741.820473, a = 939.835148, b = 152.525276\n",
  2590. "epoch 2350: loss = 1719741.487384, a = 939.852314, b = 152.525266\n",
  2591. "epoch 2351: loss = 1719741.155548, a = 939.869445, b = 152.525255\n",
  2592. "epoch 2352: loss = 1719740.824960, a = 939.886542, b = 152.525244\n",
  2593. "epoch 2353: loss = 1719740.495617, a = 939.903605, b = 152.525233\n",
  2594. "epoch 2354: loss = 1719740.167513, a = 939.920634, b = 152.525222\n",
  2595. "epoch 2355: loss = 1719739.840644, a = 939.937629, b = 152.525211\n",
  2596. "epoch 2356: loss = 1719739.515004, a = 939.954590, b = 152.525200\n",
  2597. "epoch 2357: loss = 1719739.190589, a = 939.971517, b = 152.525189\n",
  2598. "epoch 2358: loss = 1719738.867394, a = 939.988410, b = 152.525179\n",
  2599. "epoch 2359: loss = 1719738.545415, a = 940.005270, b = 152.525168\n",
  2600. "epoch 2360: loss = 1719738.224646, a = 940.022095, b = 152.525157\n",
  2601. "epoch 2361: loss = 1719737.905083, a = 940.038887, b = 152.525146\n",
  2602. "epoch 2362: loss = 1719737.586722, a = 940.055646, b = 152.525136\n",
  2603. "epoch 2363: loss = 1719737.269558, a = 940.072370, b = 152.525125\n",
  2604. "epoch 2364: loss = 1719736.953585, a = 940.089062, b = 152.525114\n",
  2605. "epoch 2365: loss = 1719736.638800, a = 940.105720, b = 152.525104\n",
  2606. "epoch 2366: loss = 1719736.325198, a = 940.122345, b = 152.525093\n",
  2607. "epoch 2367: loss = 1719736.012774, a = 940.138936, b = 152.525082\n",
  2608. "epoch 2368: loss = 1719735.701524, a = 940.155495, b = 152.525072\n",
  2609. "epoch 2369: loss = 1719735.391444, a = 940.172020, b = 152.525061\n",
  2610. "epoch 2370: loss = 1719735.082527, a = 940.188512, b = 152.525051\n",
  2611. "epoch 2371: loss = 1719734.774771, a = 940.204971, b = 152.525040\n",
  2612. "epoch 2372: loss = 1719734.468171, a = 940.221397, b = 152.525030\n",
  2613. "epoch 2373: loss = 1719734.162722, a = 940.237791, b = 152.525019\n",
  2614. "epoch 2374: loss = 1719733.858420, a = 940.254151, b = 152.525009\n",
  2615. "epoch 2375: loss = 1719733.555260, a = 940.270479, b = 152.524998\n",
  2616. "epoch 2376: loss = 1719733.253238, a = 940.286775, b = 152.524988\n",
  2617. "epoch 2377: loss = 1719732.952350, a = 940.303037, b = 152.524978\n",
  2618. "epoch 2378: loss = 1719732.652590, a = 940.319268, b = 152.524967\n",
  2619. "epoch 2379: loss = 1719732.353956, a = 940.335465, b = 152.524957\n",
  2620. "epoch 2380: loss = 1719732.056441, a = 940.351631, b = 152.524947\n",
  2621. "epoch 2381: loss = 1719731.760043, a = 940.367764, b = 152.524936\n",
  2622. "epoch 2382: loss = 1719731.464757, a = 940.383864, b = 152.524926\n",
  2623. "epoch 2383: loss = 1719731.170578, a = 940.399933, b = 152.524916\n",
  2624. "epoch 2384: loss = 1719730.877503, a = 940.415969, b = 152.524906\n",
  2625. "epoch 2385: loss = 1719730.585526, a = 940.431974, b = 152.524895\n",
  2626. "epoch 2386: loss = 1719730.294644, a = 940.447946, b = 152.524885\n",
  2627. "epoch 2387: loss = 1719730.004853, a = 940.463887, b = 152.524875\n",
  2628. "epoch 2388: loss = 1719729.716147, a = 940.479795, b = 152.524865\n",
  2629. "epoch 2389: loss = 1719729.428524, a = 940.495672, b = 152.524855\n",
  2630. "epoch 2390: loss = 1719729.141979, a = 940.511517, b = 152.524844\n",
  2631. "epoch 2391: loss = 1719728.856507, a = 940.527330, b = 152.524834\n",
  2632. "epoch 2392: loss = 1719728.572105, a = 940.543112, b = 152.524824\n",
  2633. "epoch 2393: loss = 1719728.288769, a = 940.558862, b = 152.524814\n",
  2634. "epoch 2394: loss = 1719728.006493, a = 940.574580, b = 152.524804\n",
  2635. "epoch 2395: loss = 1719727.725275, a = 940.590268, b = 152.524794\n",
  2636. "epoch 2396: loss = 1719727.445110, a = 940.605923, b = 152.524784\n",
  2637. "epoch 2397: loss = 1719727.165994, a = 940.621548, b = 152.524774\n",
  2638. "epoch 2398: loss = 1719726.887924, a = 940.637141, b = 152.524764\n",
  2639. "epoch 2399: loss = 1719726.610894, a = 940.652703, b = 152.524754\n",
  2640. "epoch 2400: loss = 1719726.334901, a = 940.668234, b = 152.524744\n",
  2641. "epoch 2401: loss = 1719726.059941, a = 940.683734, b = 152.524734\n",
  2642. "epoch 2402: loss = 1719725.786010, a = 940.699203, b = 152.524725\n",
  2643. "epoch 2403: loss = 1719725.513104, a = 940.714641, b = 152.524715\n",
  2644. "epoch 2404: loss = 1719725.241219, a = 940.730048, b = 152.524705\n",
  2645. "epoch 2405: loss = 1719724.970351, a = 940.745424, b = 152.524695\n",
  2646. "epoch 2406: loss = 1719724.700496, a = 940.760770, b = 152.524685\n",
  2647. "epoch 2407: loss = 1719724.431651, a = 940.776085, b = 152.524676\n",
  2648. "epoch 2408: loss = 1719724.163811, a = 940.791369, b = 152.524666\n",
  2649. "epoch 2409: loss = 1719723.896972, a = 940.806623, b = 152.524656\n",
  2650. "epoch 2410: loss = 1719723.631131, a = 940.821846, b = 152.524646\n",
  2651. "epoch 2411: loss = 1719723.366284, a = 940.837039, b = 152.524637\n",
  2652. "epoch 2412: loss = 1719723.102427, a = 940.852201, b = 152.524627\n",
  2653. "epoch 2413: loss = 1719722.839556, a = 940.867333, b = 152.524617\n",
  2654. "epoch 2414: loss = 1719722.577667, a = 940.882435, b = 152.524608\n",
  2655. "epoch 2415: loss = 1719722.316757, a = 940.897506, b = 152.524598\n",
  2656. "epoch 2416: loss = 1719722.056821, a = 940.912548, b = 152.524588\n",
  2657. "epoch 2417: loss = 1719721.797857, a = 940.927559, b = 152.524579\n",
  2658. "epoch 2418: loss = 1719721.539859, a = 940.942541, b = 152.524569\n",
  2659. "epoch 2419: loss = 1719721.282826, a = 940.957492, b = 152.524560\n",
  2660. "epoch 2420: loss = 1719721.026752, a = 940.972414, b = 152.524550\n",
  2661. "epoch 2421: loss = 1719720.771634, a = 940.987305, b = 152.524541\n",
  2662. "epoch 2422: loss = 1719720.517469, a = 941.002167, b = 152.524531\n",
  2663. "epoch 2423: loss = 1719720.264252, a = 941.016999, b = 152.524522\n",
  2664. "epoch 2424: loss = 1719720.011980, a = 941.031802, b = 152.524512\n",
  2665. "epoch 2425: loss = 1719719.760650, a = 941.046575, b = 152.524503\n",
  2666. "epoch 2426: loss = 1719719.510258, a = 941.061318, b = 152.524493\n",
  2667. "epoch 2427: loss = 1719719.260800, a = 941.076032, b = 152.524484\n",
  2668. "epoch 2428: loss = 1719719.012273, a = 941.090716, b = 152.524475\n",
  2669. "epoch 2429: loss = 1719718.764672, a = 941.105371, b = 152.524465\n",
  2670. "epoch 2430: loss = 1719718.517995, a = 941.119997, b = 152.524456\n",
  2671. "epoch 2431: loss = 1719718.272238, a = 941.134594, b = 152.524447\n",
  2672. "epoch 2432: loss = 1719718.027398, a = 941.149161, b = 152.524437\n",
  2673. "epoch 2433: loss = 1719717.783470, a = 941.163699, b = 152.524428\n",
  2674. "epoch 2434: loss = 1719717.540451, a = 941.178208, b = 152.524419\n",
  2675. "epoch 2435: loss = 1719717.298338, a = 941.192688, b = 152.524409\n",
  2676. "epoch 2436: loss = 1719717.057128, a = 941.207140, b = 152.524400\n",
  2677. "epoch 2437: loss = 1719716.816816, a = 941.221562, b = 152.524391\n",
  2678. "epoch 2438: loss = 1719716.577400, a = 941.235955, b = 152.524382\n",
  2679. "epoch 2439: loss = 1719716.338876, a = 941.250320, b = 152.524373\n",
  2680. "epoch 2440: loss = 1719716.101240, a = 941.264656, b = 152.524363\n",
  2681. "epoch 2441: loss = 1719715.864489, a = 941.278963, b = 152.524354\n",
  2682. "epoch 2442: loss = 1719715.628620, a = 941.293242, b = 152.524345\n",
  2683. "epoch 2443: loss = 1719715.393629, a = 941.307492, b = 152.524336\n",
  2684. "epoch 2444: loss = 1719715.159513, a = 941.321714, b = 152.524327\n",
  2685. "epoch 2445: loss = 1719714.926269, a = 941.335907, b = 152.524318\n",
  2686. "epoch 2446: loss = 1719714.693893, a = 941.350072, b = 152.524309\n",
  2687. "epoch 2447: loss = 1719714.462381, a = 941.364208, b = 152.524300\n",
  2688. "epoch 2448: loss = 1719714.231731, a = 941.378316, b = 152.524291\n",
  2689. "epoch 2449: loss = 1719714.001940, a = 941.392396, b = 152.524282\n",
  2690. "epoch 2450: loss = 1719713.773003, a = 941.406448, b = 152.524273\n",
  2691. "epoch 2451: loss = 1719713.544917, a = 941.420472, b = 152.524264\n",
  2692. "epoch 2452: loss = 1719713.317680, a = 941.434467, b = 152.524255\n",
  2693. "epoch 2453: loss = 1719713.091289, a = 941.448435, b = 152.524246\n",
  2694. "epoch 2454: loss = 1719712.865738, a = 941.462375, b = 152.524237\n",
  2695. "epoch 2455: loss = 1719712.641027, a = 941.476287, b = 152.524228\n",
  2696. "epoch 2456: loss = 1719712.417151, a = 941.490171, b = 152.524219\n",
  2697. "epoch 2457: loss = 1719712.194107, a = 941.504027, b = 152.524211\n",
  2698. "epoch 2458: loss = 1719711.971892, a = 941.517856, b = 152.524202\n",
  2699. "epoch 2459: loss = 1719711.750502, a = 941.531657, b = 152.524193\n",
  2700. "epoch 2460: loss = 1719711.529935, a = 941.545430, b = 152.524184\n",
  2701. "epoch 2461: loss = 1719711.310188, a = 941.559176, b = 152.524175\n",
  2702. "epoch 2462: loss = 1719711.091257, a = 941.572894, b = 152.524167\n",
  2703. "epoch 2463: loss = 1719710.873139, a = 941.586585, b = 152.524158\n",
  2704. "epoch 2464: loss = 1719710.655831, a = 941.600249, b = 152.524149\n",
  2705. "epoch 2465: loss = 1719710.439329, a = 941.613885, b = 152.524140\n"
  2706. ]
  2707. },
  2708. {
  2709. "name": "stdout",
  2710. "output_type": "stream",
  2711. "text": [
  2712. "epoch 2466: loss = 1719710.223632, a = 941.627494, b = 152.524132\n",
  2713. "epoch 2467: loss = 1719710.008735, a = 941.641075, b = 152.524123\n",
  2714. "epoch 2468: loss = 1719709.794636, a = 941.654630, b = 152.524114\n",
  2715. "epoch 2469: loss = 1719709.581332, a = 941.668157, b = 152.524106\n",
  2716. "epoch 2470: loss = 1719709.368819, a = 941.681658, b = 152.524097\n",
  2717. "epoch 2471: loss = 1719709.157094, a = 941.695131, b = 152.524089\n",
  2718. "epoch 2472: loss = 1719708.946155, a = 941.708578, b = 152.524080\n",
  2719. "epoch 2473: loss = 1719708.735998, a = 941.721997, b = 152.524071\n",
  2720. "epoch 2474: loss = 1719708.526620, a = 941.735390, b = 152.524063\n",
  2721. "epoch 2475: loss = 1719708.318019, a = 941.748756, b = 152.524054\n",
  2722. "epoch 2476: loss = 1719708.110192, a = 941.762095, b = 152.524046\n",
  2723. "epoch 2477: loss = 1719707.903135, a = 941.775408, b = 152.524037\n",
  2724. "epoch 2478: loss = 1719707.696845, a = 941.788694, b = 152.524029\n",
  2725. "epoch 2479: loss = 1719707.491320, a = 941.801953, b = 152.524020\n",
  2726. "epoch 2480: loss = 1719707.286557, a = 941.815186, b = 152.524012\n",
  2727. "epoch 2481: loss = 1719707.082552, a = 941.828392, b = 152.524003\n",
  2728. "epoch 2482: loss = 1719706.879303, a = 941.841572, b = 152.523995\n",
  2729. "epoch 2483: loss = 1719706.676807, a = 941.854726, b = 152.523987\n",
  2730. "epoch 2484: loss = 1719706.475060, a = 941.867853, b = 152.523978\n",
  2731. "epoch 2485: loss = 1719706.274061, a = 941.880954, b = 152.523970\n",
  2732. "epoch 2486: loss = 1719706.073807, a = 941.894029, b = 152.523961\n",
  2733. "epoch 2487: loss = 1719705.874293, a = 941.907078, b = 152.523953\n",
  2734. "epoch 2488: loss = 1719705.675518, a = 941.920100, b = 152.523945\n",
  2735. "epoch 2489: loss = 1719705.477479, a = 941.933097, b = 152.523937\n",
  2736. "epoch 2490: loss = 1719705.280173, a = 941.946068, b = 152.523928\n",
  2737. "epoch 2491: loss = 1719705.083597, a = 941.959012, b = 152.523920\n",
  2738. "epoch 2492: loss = 1719704.887748, a = 941.971931, b = 152.523912\n",
  2739. "epoch 2493: loss = 1719704.692623, a = 941.984824, b = 152.523903\n",
  2740. "epoch 2494: loss = 1719704.498220, a = 941.997691, b = 152.523895\n",
  2741. "epoch 2495: loss = 1719704.304537, a = 942.010533, b = 152.523887\n",
  2742. "epoch 2496: loss = 1719704.111569, a = 942.023348, b = 152.523879\n",
  2743. "epoch 2497: loss = 1719703.919315, a = 942.036138, b = 152.523871\n",
  2744. "epoch 2498: loss = 1719703.727771, a = 942.048903, b = 152.523863\n",
  2745. "epoch 2499: loss = 1719703.536936, a = 942.061642, b = 152.523854\n",
  2746. "epoch 2500: loss = 1719703.346805, a = 942.074356, b = 152.523846\n",
  2747. "epoch 2501: loss = 1719703.157378, a = 942.087044, b = 152.523838\n",
  2748. "epoch 2502: loss = 1719702.968650, a = 942.099706, b = 152.523830\n",
  2749. "epoch 2503: loss = 1719702.780619, a = 942.112344, b = 152.523822\n",
  2750. "epoch 2504: loss = 1719702.593283, a = 942.124956, b = 152.523814\n",
  2751. "epoch 2505: loss = 1719702.406639, a = 942.137543, b = 152.523806\n",
  2752. "epoch 2506: loss = 1719702.220684, a = 942.150105, b = 152.523798\n",
  2753. "epoch 2507: loss = 1719702.035415, a = 942.162641, b = 152.523790\n",
  2754. "epoch 2508: loss = 1719701.850830, a = 942.175153, b = 152.523782\n",
  2755. "epoch 2509: loss = 1719701.666927, a = 942.187640, b = 152.523774\n",
  2756. "epoch 2510: loss = 1719701.483702, a = 942.200101, b = 152.523766\n",
  2757. "epoch 2511: loss = 1719701.301154, a = 942.212538, b = 152.523758\n",
  2758. "epoch 2512: loss = 1719701.119279, a = 942.224950, b = 152.523750\n",
  2759. "epoch 2513: loss = 1719700.938075, a = 942.237337, b = 152.523742\n",
  2760. "epoch 2514: loss = 1719700.757539, a = 942.249699, b = 152.523734\n",
  2761. "epoch 2515: loss = 1719700.577669, a = 942.262036, b = 152.523726\n",
  2762. "epoch 2516: loss = 1719700.398462, a = 942.274349, b = 152.523719\n",
  2763. "epoch 2517: loss = 1719700.219916, a = 942.286637, b = 152.523711\n",
  2764. "epoch 2518: loss = 1719700.042028, a = 942.298901, b = 152.523703\n",
  2765. "epoch 2519: loss = 1719699.864796, a = 942.311140, b = 152.523695\n",
  2766. "epoch 2520: loss = 1719699.688217, a = 942.323355, b = 152.523687\n",
  2767. "epoch 2521: loss = 1719699.512289, a = 942.335545, b = 152.523679\n",
  2768. "epoch 2522: loss = 1719699.337009, a = 942.347711, b = 152.523672\n",
  2769. "epoch 2523: loss = 1719699.162374, a = 942.359852, b = 152.523664\n",
  2770. "epoch 2524: loss = 1719698.988383, a = 942.371970, b = 152.523656\n",
  2771. "epoch 2525: loss = 1719698.815032, a = 942.384063, b = 152.523649\n",
  2772. "epoch 2526: loss = 1719698.642320, a = 942.396132, b = 152.523641\n",
  2773. "epoch 2527: loss = 1719698.470244, a = 942.408176, b = 152.523633\n",
  2774. "epoch 2528: loss = 1719698.298801, a = 942.420197, b = 152.523625\n",
  2775. "epoch 2529: loss = 1719698.127989, a = 942.432193, b = 152.523618\n",
  2776. "epoch 2530: loss = 1719697.957806, a = 942.444166, b = 152.523610\n",
  2777. "epoch 2531: loss = 1719697.788248, a = 942.456115, b = 152.523602\n",
  2778. "epoch 2532: loss = 1719697.619315, a = 942.468039, b = 152.523595\n",
  2779. "epoch 2533: loss = 1719697.451003, a = 942.479940, b = 152.523587\n",
  2780. "epoch 2534: loss = 1719697.283310, a = 942.491817, b = 152.523580\n",
  2781. "epoch 2535: loss = 1719697.116234, a = 942.503671, b = 152.523572\n",
  2782. "epoch 2536: loss = 1719696.949772, a = 942.515500, b = 152.523565\n",
  2783. "epoch 2537: loss = 1719696.783922, a = 942.527306, b = 152.523557\n",
  2784. "epoch 2538: loss = 1719696.618682, a = 942.539089, b = 152.523549\n",
  2785. "epoch 2539: loss = 1719696.454049, a = 942.550847, b = 152.523542\n",
  2786. "epoch 2540: loss = 1719696.290020, a = 942.562583, b = 152.523534\n",
  2787. "epoch 2541: loss = 1719696.126595, a = 942.574295, b = 152.523527\n",
  2788. "epoch 2542: loss = 1719695.963770, a = 942.585983, b = 152.523520\n",
  2789. "epoch 2543: loss = 1719695.801543, a = 942.597648, b = 152.523512\n",
  2790. "epoch 2544: loss = 1719695.639912, a = 942.609290, b = 152.523505\n",
  2791. "epoch 2545: loss = 1719695.478874, a = 942.620908, b = 152.523497\n",
  2792. "epoch 2546: loss = 1719695.318427, a = 942.632503, b = 152.523490\n",
  2793. "epoch 2547: loss = 1719695.158570, a = 942.644075, b = 152.523482\n",
  2794. "epoch 2548: loss = 1719694.999299, a = 942.655624, b = 152.523475\n",
  2795. "epoch 2549: loss = 1719694.840613, a = 942.667150, b = 152.523468\n",
  2796. "epoch 2550: loss = 1719694.682509, a = 942.678653, b = 152.523460\n",
  2797. "epoch 2551: loss = 1719694.524985, a = 942.690133, b = 152.523453\n",
  2798. "epoch 2552: loss = 1719694.368039, a = 942.701589, b = 152.523446\n",
  2799. "epoch 2553: loss = 1719694.211668, a = 942.713023, b = 152.523438\n",
  2800. "epoch 2554: loss = 1719694.055871, a = 942.724434, b = 152.523431\n",
  2801. "epoch 2555: loss = 1719693.900645, a = 942.735822, b = 152.523424\n",
  2802. "epoch 2556: loss = 1719693.745988, a = 942.747188, b = 152.523417\n",
  2803. "epoch 2557: loss = 1719693.591898, a = 942.758531, b = 152.523409\n",
  2804. "epoch 2558: loss = 1719693.438373, a = 942.769851, b = 152.523402\n",
  2805. "epoch 2559: loss = 1719693.285410, a = 942.781148, b = 152.523395\n",
  2806. "epoch 2560: loss = 1719693.133008, a = 942.792423, b = 152.523388\n",
  2807. "epoch 2561: loss = 1719692.981164, a = 942.803675, b = 152.523380\n",
  2808. "epoch 2562: loss = 1719692.829876, a = 942.814905, b = 152.523373\n",
  2809. "epoch 2563: loss = 1719692.679142, a = 942.826112, b = 152.523366\n",
  2810. "epoch 2564: loss = 1719692.528960, a = 942.837297, b = 152.523359\n",
  2811. "epoch 2565: loss = 1719692.379328, a = 942.848459, b = 152.523352\n",
  2812. "epoch 2566: loss = 1719692.230244, a = 942.859600, b = 152.523345\n",
  2813. "epoch 2567: loss = 1719692.081705, a = 942.870717, b = 152.523338\n",
  2814. "epoch 2568: loss = 1719691.933710, a = 942.881813, b = 152.523331\n",
  2815. "epoch 2569: loss = 1719691.786256, a = 942.892887, b = 152.523324\n",
  2816. "epoch 2570: loss = 1719691.639342, a = 942.903938, b = 152.523316\n",
  2817. "epoch 2571: loss = 1719691.492965, a = 942.914967, b = 152.523309\n",
  2818. "epoch 2572: loss = 1719691.347123, a = 942.925974, b = 152.523302\n",
  2819. "epoch 2573: loss = 1719691.201815, a = 942.936960, b = 152.523295\n",
  2820. "epoch 2574: loss = 1719691.057038, a = 942.947923, b = 152.523288\n",
  2821. "epoch 2575: loss = 1719690.912790, a = 942.958864, b = 152.523281\n",
  2822. "epoch 2576: loss = 1719690.769069, a = 942.969783, b = 152.523274\n",
  2823. "epoch 2577: loss = 1719690.625873, a = 942.980681, b = 152.523267\n",
  2824. "epoch 2578: loss = 1719690.483201, a = 942.991557, b = 152.523260\n",
  2825. "epoch 2579: loss = 1719690.341050, a = 943.002411, b = 152.523254\n",
  2826. "epoch 2580: loss = 1719690.199418, a = 943.013243, b = 152.523247\n",
  2827. "epoch 2581: loss = 1719690.058303, a = 943.024054, b = 152.523240\n",
  2828. "epoch 2582: loss = 1719689.917704, a = 943.034843, b = 152.523233\n",
  2829. "epoch 2583: loss = 1719689.777618, a = 943.045610, b = 152.523226\n",
  2830. "epoch 2584: loss = 1719689.638043, a = 943.056356, b = 152.523219\n",
  2831. "epoch 2585: loss = 1719689.498977, a = 943.067081, b = 152.523212\n",
  2832. "epoch 2586: loss = 1719689.360419, a = 943.077784, b = 152.523205\n",
  2833. "epoch 2587: loss = 1719689.222367, a = 943.088465, b = 152.523199\n",
  2834. "epoch 2588: loss = 1719689.084818, a = 943.099126, b = 152.523192\n",
  2835. "epoch 2589: loss = 1719688.947771, a = 943.109765, b = 152.523185\n",
  2836. "epoch 2590: loss = 1719688.811224, a = 943.120382, b = 152.523178\n",
  2837. "epoch 2591: loss = 1719688.675174, a = 943.130979, b = 152.523171\n",
  2838. "epoch 2592: loss = 1719688.539621, a = 943.141554, b = 152.523165\n",
  2839. "epoch 2593: loss = 1719688.404562, a = 943.152108, b = 152.523158\n",
  2840. "epoch 2594: loss = 1719688.269995, a = 943.162641, b = 152.523151\n",
  2841. "epoch 2595: loss = 1719688.135918, a = 943.173153, b = 152.523145\n",
  2842. "epoch 2596: loss = 1719688.002330, a = 943.183644, b = 152.523138\n",
  2843. "epoch 2597: loss = 1719687.869228, a = 943.194114, b = 152.523131\n",
  2844. "epoch 2598: loss = 1719687.736611, a = 943.204563, b = 152.523124\n",
  2845. "epoch 2599: loss = 1719687.604477, a = 943.214991, b = 152.523118\n",
  2846. "epoch 2600: loss = 1719687.472824, a = 943.225398, b = 152.523111\n",
  2847. "epoch 2601: loss = 1719687.341651, a = 943.235784, b = 152.523105\n",
  2848. "epoch 2602: loss = 1719687.210955, a = 943.246150, b = 152.523098\n",
  2849. "epoch 2603: loss = 1719687.080734, a = 943.256495, b = 152.523091\n",
  2850. "epoch 2604: loss = 1719686.950988, a = 943.266819, b = 152.523085\n",
  2851. "epoch 2605: loss = 1719686.821713, a = 943.277123, b = 152.523078\n",
  2852. "epoch 2606: loss = 1719686.692909, a = 943.287406, b = 152.523072\n",
  2853. "epoch 2607: loss = 1719686.564573, a = 943.297668, b = 152.523065\n",
  2854. "epoch 2608: loss = 1719686.436703, a = 943.307910, b = 152.523058\n",
  2855. "epoch 2609: loss = 1719686.309299, a = 943.318132, b = 152.523052\n",
  2856. "epoch 2610: loss = 1719686.182358, a = 943.328333, b = 152.523045\n",
  2857. "epoch 2611: loss = 1719686.055878, a = 943.338513, b = 152.523039\n",
  2858. "epoch 2612: loss = 1719685.929858, a = 943.348673, b = 152.523032\n",
  2859. "epoch 2613: loss = 1719685.804295, a = 943.358813, b = 152.523026\n",
  2860. "epoch 2614: loss = 1719685.679189, a = 943.368933, b = 152.523019\n",
  2861. "epoch 2615: loss = 1719685.554537, a = 943.379032, b = 152.523013\n",
  2862. "epoch 2616: loss = 1719685.430338, a = 943.389112, b = 152.523007\n",
  2863. "epoch 2617: loss = 1719685.306590, a = 943.399171, b = 152.523000\n",
  2864. "epoch 2618: loss = 1719685.183291, a = 943.409210, b = 152.522994\n",
  2865. "epoch 2619: loss = 1719685.060440, a = 943.419228, b = 152.522987\n",
  2866. "epoch 2620: loss = 1719684.938034, a = 943.429227, b = 152.522981\n",
  2867. "epoch 2621: loss = 1719684.816073, a = 943.439206, b = 152.522975\n",
  2868. "epoch 2622: loss = 1719684.694554, a = 943.449165, b = 152.522968\n",
  2869. "epoch 2623: loss = 1719684.573476, a = 943.459104, b = 152.522962\n",
  2870. "epoch 2624: loss = 1719684.452837, a = 943.469023, b = 152.522956\n",
  2871. "epoch 2625: loss = 1719684.332636, a = 943.478922, b = 152.522949\n",
  2872. "epoch 2626: loss = 1719684.212870, a = 943.488802, b = 152.522943\n",
  2873. "epoch 2627: loss = 1719684.093539, a = 943.498662, b = 152.522937\n",
  2874. "epoch 2628: loss = 1719683.974640, a = 943.508502, b = 152.522930\n",
  2875. "epoch 2629: loss = 1719683.856171, a = 943.518322, b = 152.522924\n",
  2876. "epoch 2630: loss = 1719683.738133, a = 943.528123, b = 152.522918\n",
  2877. "epoch 2631: loss = 1719683.620521, a = 943.537904, b = 152.522912\n",
  2878. "epoch 2632: loss = 1719683.503336, a = 943.547665, b = 152.522905\n",
  2879. "epoch 2633: loss = 1719683.386575, a = 943.557407, b = 152.522899\n",
  2880. "epoch 2634: loss = 1719683.270237, a = 943.567130, b = 152.522893\n",
  2881. "epoch 2635: loss = 1719683.154320, a = 943.576833, b = 152.522887\n",
  2882. "epoch 2636: loss = 1719683.038822, a = 943.586516, b = 152.522880\n",
  2883. "epoch 2637: loss = 1719682.923743, a = 943.596181, b = 152.522874\n",
  2884. "epoch 2638: loss = 1719682.809080, a = 943.605826, b = 152.522868\n",
  2885. "epoch 2639: loss = 1719682.694831, a = 943.615451, b = 152.522862\n",
  2886. "epoch 2640: loss = 1719682.580996, a = 943.625058, b = 152.522856\n",
  2887. "epoch 2641: loss = 1719682.467573, a = 943.634645, b = 152.522850\n",
  2888. "epoch 2642: loss = 1719682.354560, a = 943.644213, b = 152.522844\n",
  2889. "epoch 2643: loss = 1719682.241955, a = 943.653762, b = 152.522838\n",
  2890. "epoch 2644: loss = 1719682.129757, a = 943.663292, b = 152.522831\n",
  2891. "epoch 2645: loss = 1719682.017965, a = 943.672803, b = 152.522825\n",
  2892. "epoch 2646: loss = 1719681.906577, a = 943.682294, b = 152.522819\n",
  2893. "epoch 2647: loss = 1719681.795591, a = 943.691767, b = 152.522813\n",
  2894. "epoch 2648: loss = 1719681.685006, a = 943.701221, b = 152.522807\n",
  2895. "epoch 2649: loss = 1719681.574821, a = 943.710656, b = 152.522801\n",
  2896. "epoch 2650: loss = 1719681.465033, a = 943.720072, b = 152.522795\n",
  2897. "epoch 2651: loss = 1719681.355642, a = 943.729469, b = 152.522789\n",
  2898. "epoch 2652: loss = 1719681.246645, a = 943.738848, b = 152.522783\n",
  2899. "epoch 2653: loss = 1719681.138042, a = 943.748208, b = 152.522777\n",
  2900. "epoch 2654: loss = 1719681.029831, a = 943.757548, b = 152.522771\n",
  2901. "epoch 2655: loss = 1719680.922010, a = 943.766871, b = 152.522765\n",
  2902. "epoch 2656: loss = 1719680.814578, a = 943.776174, b = 152.522759\n",
  2903. "epoch 2657: loss = 1719680.707534, a = 943.785460, b = 152.522753\n",
  2904. "epoch 2658: loss = 1719680.600876, a = 943.794726, b = 152.522748\n",
  2905. "epoch 2659: loss = 1719680.494602, a = 943.803974, b = 152.522742\n",
  2906. "epoch 2660: loss = 1719680.388711, a = 943.813203, b = 152.522736\n",
  2907. "epoch 2661: loss = 1719680.283202, a = 943.822414, b = 152.522730\n",
  2908. "epoch 2662: loss = 1719680.178073, a = 943.831607, b = 152.522724\n",
  2909. "epoch 2663: loss = 1719680.073323, a = 943.840781, b = 152.522718\n",
  2910. "epoch 2664: loss = 1719679.968950, a = 943.849937, b = 152.522712\n",
  2911. "epoch 2665: loss = 1719679.864953, a = 943.859075, b = 152.522706\n",
  2912. "epoch 2666: loss = 1719679.761330, a = 943.868194, b = 152.522701\n",
  2913. "epoch 2667: loss = 1719679.658081, a = 943.877295, b = 152.522695\n",
  2914. "epoch 2668: loss = 1719679.555203, a = 943.886378, b = 152.522689\n",
  2915. "epoch 2669: loss = 1719679.452696, a = 943.895443, b = 152.522683\n",
  2916. "epoch 2670: loss = 1719679.350557, a = 943.904489, b = 152.522677\n",
  2917. "epoch 2671: loss = 1719679.248786, a = 943.913518, b = 152.522672\n",
  2918. "epoch 2672: loss = 1719679.147381, a = 943.922528, b = 152.522666\n",
  2919. "epoch 2673: loss = 1719679.046340, a = 943.931520, b = 152.522660\n",
  2920. "epoch 2674: loss = 1719678.945663, a = 943.940495, b = 152.522654\n",
  2921. "epoch 2675: loss = 1719678.845348, a = 943.949451, b = 152.522649\n",
  2922. "epoch 2676: loss = 1719678.745393, a = 943.958390, b = 152.522643\n",
  2923. "epoch 2677: loss = 1719678.645798, a = 943.967311, b = 152.522637\n",
  2924. "epoch 2678: loss = 1719678.546560, a = 943.976213, b = 152.522632\n",
  2925. "epoch 2679: loss = 1719678.447679, a = 943.985098, b = 152.522626\n",
  2926. "epoch 2680: loss = 1719678.349153, a = 943.993966, b = 152.522620\n",
  2927. "epoch 2681: loss = 1719678.250981, a = 944.002815, b = 152.522615\n",
  2928. "epoch 2682: loss = 1719678.153162, a = 944.011647, b = 152.522609\n",
  2929. "epoch 2683: loss = 1719678.055694, a = 944.020461, b = 152.522603\n",
  2930. "epoch 2684: loss = 1719677.958575, a = 944.029258, b = 152.522598\n",
  2931. "epoch 2685: loss = 1719677.861805, a = 944.038037, b = 152.522592\n",
  2932. "epoch 2686: loss = 1719677.765383, a = 944.046798, b = 152.522587\n",
  2933. "epoch 2687: loss = 1719677.669306, a = 944.055542, b = 152.522581\n",
  2934. "epoch 2688: loss = 1719677.573574, a = 944.064269, b = 152.522575\n",
  2935. "epoch 2689: loss = 1719677.478185, a = 944.072978, b = 152.522570\n",
  2936. "epoch 2690: loss = 1719677.383138, a = 944.081669, b = 152.522564\n",
  2937. "epoch 2691: loss = 1719677.288432, a = 944.090343, b = 152.522559\n",
  2938. "epoch 2692: loss = 1719677.194065, a = 944.099000, b = 152.522553\n",
  2939. "epoch 2693: loss = 1719677.100036, a = 944.107640, b = 152.522548\n",
  2940. "epoch 2694: loss = 1719677.006344, a = 944.116262, b = 152.522542\n",
  2941. "epoch 2695: loss = 1719676.912988, a = 944.124867, b = 152.522537\n",
  2942. "epoch 2696: loss = 1719676.819967, a = 944.133455, b = 152.522531\n",
  2943. "epoch 2697: loss = 1719676.727278, a = 944.142025, b = 152.522526\n",
  2944. "epoch 2698: loss = 1719676.634921, a = 944.150579, b = 152.522520\n",
  2945. "epoch 2699: loss = 1719676.542895, a = 944.159115, b = 152.522515\n",
  2946. "epoch 2700: loss = 1719676.451198, a = 944.167634, b = 152.522509\n",
  2947. "epoch 2701: loss = 1719676.359830, a = 944.176137, b = 152.522504\n",
  2948. "epoch 2702: loss = 1719676.268788, a = 944.184622, b = 152.522498\n",
  2949. "epoch 2703: loss = 1719676.178072, a = 944.193090, b = 152.522493\n",
  2950. "epoch 2704: loss = 1719676.087680, a = 944.201542, b = 152.522488\n",
  2951. "epoch 2705: loss = 1719675.997611, a = 944.209976, b = 152.522482\n",
  2952. "epoch 2706: loss = 1719675.907865, a = 944.218394, b = 152.522477\n",
  2953. "epoch 2707: loss = 1719675.818439, a = 944.226794, b = 152.522472\n",
  2954. "epoch 2708: loss = 1719675.729333, a = 944.235178, b = 152.522466\n",
  2955. "epoch 2709: loss = 1719675.640545, a = 944.243546, b = 152.522461\n",
  2956. "epoch 2710: loss = 1719675.552074, a = 944.251896, b = 152.522456\n",
  2957. "epoch 2711: loss = 1719675.463919, a = 944.260230, b = 152.522450\n",
  2958. "epoch 2712: loss = 1719675.376079, a = 944.268547, b = 152.522445\n",
  2959. "epoch 2713: loss = 1719675.288553, a = 944.276847, b = 152.522440\n",
  2960. "epoch 2714: loss = 1719675.201339, a = 944.285131, b = 152.522434\n",
  2961. "epoch 2715: loss = 1719675.114437, a = 944.293399, b = 152.522429\n",
  2962. "epoch 2716: loss = 1719675.027844, a = 944.301649, b = 152.522424\n",
  2963. "epoch 2717: loss = 1719674.941560, a = 944.309884, b = 152.522418\n",
  2964. "epoch 2718: loss = 1719674.855585, a = 944.318101, b = 152.522413\n",
  2965. "epoch 2719: loss = 1719674.769915, a = 944.326303, b = 152.522408\n",
  2966. "epoch 2720: loss = 1719674.684551, a = 944.334488, b = 152.522403\n",
  2967. "epoch 2721: loss = 1719674.599492, a = 944.342656, b = 152.522398\n",
  2968. "epoch 2722: loss = 1719674.514736, a = 944.350809, b = 152.522392\n",
  2969. "epoch 2723: loss = 1719674.430281, a = 944.358945, b = 152.522387\n",
  2970. "epoch 2724: loss = 1719674.346128, a = 944.367064, b = 152.522382\n",
  2971. "epoch 2725: loss = 1719674.262274, a = 944.375168, b = 152.522377\n",
  2972. "epoch 2726: loss = 1719674.178719, a = 944.383255, b = 152.522372\n",
  2973. "epoch 2727: loss = 1719674.095462, a = 944.391326, b = 152.522366\n",
  2974. "epoch 2728: loss = 1719674.012501, a = 944.399381, b = 152.522361\n",
  2975. "epoch 2729: loss = 1719673.929835, a = 944.407420, b = 152.522356\n",
  2976. "epoch 2730: loss = 1719673.847464, a = 944.415443, b = 152.522351\n",
  2977. "epoch 2731: loss = 1719673.765385, a = 944.423450, b = 152.522346\n",
  2978. "epoch 2732: loss = 1719673.683599, a = 944.431440, b = 152.522341\n",
  2979. "epoch 2733: loss = 1719673.602103, a = 944.439415, b = 152.522336\n",
  2980. "epoch 2734: loss = 1719673.520897, a = 944.447374, b = 152.522331\n",
  2981. "epoch 2735: loss = 1719673.439980, a = 944.455317, b = 152.522326\n",
  2982. "epoch 2736: loss = 1719673.359351, a = 944.463244, b = 152.522321\n",
  2983. "epoch 2737: loss = 1719673.279008, a = 944.471155, b = 152.522315\n",
  2984. "epoch 2738: loss = 1719673.198950, a = 944.479050, b = 152.522310\n",
  2985. "epoch 2739: loss = 1719673.119177, a = 944.486930, b = 152.522305\n",
  2986. "epoch 2740: loss = 1719673.039688, a = 944.494793, b = 152.522300\n",
  2987. "epoch 2741: loss = 1719672.960480, a = 944.502642, b = 152.522295\n",
  2988. "epoch 2742: loss = 1719672.881554, a = 944.510474, b = 152.522290\n",
  2989. "epoch 2743: loss = 1719672.802908, a = 944.518291, b = 152.522285\n",
  2990. "epoch 2744: loss = 1719672.724541, a = 944.526092, b = 152.522280\n",
  2991. "epoch 2745: loss = 1719672.646452, a = 944.533877, b = 152.522275\n",
  2992. "epoch 2746: loss = 1719672.568640, a = 944.541647, b = 152.522270\n",
  2993. "epoch 2747: loss = 1719672.491105, a = 944.549401, b = 152.522266\n",
  2994. "epoch 2748: loss = 1719672.413844, a = 944.557140, b = 152.522261\n",
  2995. "epoch 2749: loss = 1719672.336857, a = 944.564864, b = 152.522256\n",
  2996. "epoch 2750: loss = 1719672.260143, a = 944.572572, b = 152.522251\n",
  2997. "epoch 2751: loss = 1719672.183701, a = 944.580264, b = 152.522246\n",
  2998. "epoch 2752: loss = 1719672.107530, a = 944.587941, b = 152.522241\n",
  2999. "epoch 2753: loss = 1719672.031629, a = 944.595603, b = 152.522236\n",
  3000. "epoch 2754: loss = 1719671.955996, a = 944.603250, b = 152.522231\n",
  3001. "epoch 2755: loss = 1719671.880631, a = 944.610881, b = 152.522226\n",
  3002. "epoch 2756: loss = 1719671.805534, a = 944.618497, b = 152.522221\n",
  3003. "epoch 2757: loss = 1719671.730702, a = 944.626097, b = 152.522217\n",
  3004. "epoch 2758: loss = 1719671.656135, a = 944.633683, b = 152.522212\n",
  3005. "epoch 2759: loss = 1719671.581832, a = 944.641253, b = 152.522207\n",
  3006. "epoch 2760: loss = 1719671.507791, a = 944.648808, b = 152.522202\n",
  3007. "epoch 2761: loss = 1719671.434013, a = 944.656348, b = 152.522197\n",
  3008. "epoch 2762: loss = 1719671.360495, a = 944.663873, b = 152.522192\n",
  3009. "epoch 2763: loss = 1719671.287238, a = 944.671383, b = 152.522188\n",
  3010. "epoch 2764: loss = 1719671.214239, a = 944.678878, b = 152.522183\n",
  3011. "epoch 2765: loss = 1719671.141498, a = 944.686358, b = 152.522178\n",
  3012. "epoch 2766: loss = 1719671.069015, a = 944.693823, b = 152.522173\n",
  3013. "epoch 2767: loss = 1719670.996787, a = 944.701273, b = 152.522169\n",
  3014. "epoch 2768: loss = 1719670.924815, a = 944.708708, b = 152.522164\n",
  3015. "epoch 2769: loss = 1719670.853097, a = 944.716129, b = 152.522159\n",
  3016. "epoch 2770: loss = 1719670.781632, a = 944.723534, b = 152.522154\n",
  3017. "epoch 2771: loss = 1719670.710419, a = 944.730925, b = 152.522150\n",
  3018. "epoch 2772: loss = 1719670.639458, a = 944.738301, b = 152.522145\n",
  3019. "epoch 2773: loss = 1719670.568747, a = 944.745662, b = 152.522140\n",
  3020. "epoch 2774: loss = 1719670.498286, a = 944.753008, b = 152.522135\n",
  3021. "epoch 2775: loss = 1719670.428073, a = 944.760340, b = 152.522131\n",
  3022. "epoch 2776: loss = 1719670.358107, a = 944.767657, b = 152.522126\n",
  3023. "epoch 2777: loss = 1719670.288389, a = 944.774959, b = 152.522121\n",
  3024. "epoch 2778: loss = 1719670.218916, a = 944.782247, b = 152.522117\n",
  3025. "epoch 2779: loss = 1719670.149688, a = 944.789521, b = 152.522112\n",
  3026. "epoch 2780: loss = 1719670.080704, a = 944.796779, b = 152.522108\n",
  3027. "epoch 2781: loss = 1719670.011963, a = 944.804023, b = 152.522103\n",
  3028. "epoch 2782: loss = 1719669.943464, a = 944.811253, b = 152.522098\n",
  3029. "epoch 2783: loss = 1719669.875206, a = 944.818468, b = 152.522094\n",
  3030. "epoch 2784: loss = 1719669.807189, a = 944.825669, b = 152.522089\n",
  3031. "epoch 2785: loss = 1719669.739411, a = 944.832856, b = 152.522084\n",
  3032. "epoch 2786: loss = 1719669.671871, a = 944.840028, b = 152.522080\n",
  3033. "epoch 2787: loss = 1719669.604569, a = 944.847185, b = 152.522075\n",
  3034. "epoch 2788: loss = 1719669.537504, a = 944.854329, b = 152.522071\n",
  3035. "epoch 2789: loss = 1719669.470675, a = 944.861458, b = 152.522066\n",
  3036. "epoch 2790: loss = 1719669.404081, a = 944.868573, b = 152.522062\n",
  3037. "epoch 2791: loss = 1719669.337721, a = 944.875673, b = 152.522057\n",
  3038. "epoch 2792: loss = 1719669.271594, a = 944.882760, b = 152.522053\n",
  3039. "epoch 2793: loss = 1719669.205700, a = 944.889832, b = 152.522048\n",
  3040. "epoch 2794: loss = 1719669.140037, a = 944.896890, b = 152.522044\n",
  3041. "epoch 2795: loss = 1719669.074604, a = 944.903934, b = 152.522039\n",
  3042. "epoch 2796: loss = 1719669.009402, a = 944.910964, b = 152.522035\n",
  3043. "epoch 2797: loss = 1719668.944428, a = 944.917980, b = 152.522030\n",
  3044. "epoch 2798: loss = 1719668.879683, a = 944.924982, b = 152.522026\n",
  3045. "epoch 2799: loss = 1719668.815165, a = 944.931970, b = 152.522021\n",
  3046. "epoch 2800: loss = 1719668.750873, a = 944.938943, b = 152.522017\n",
  3047. "epoch 2801: loss = 1719668.686807, a = 944.945903, b = 152.522012\n",
  3048. "epoch 2802: loss = 1719668.622965, a = 944.952849, b = 152.522008\n",
  3049. "epoch 2803: loss = 1719668.559348, a = 944.959781, b = 152.522003\n",
  3050. "epoch 2804: loss = 1719668.495953, a = 944.966700, b = 152.521999\n",
  3051. "epoch 2805: loss = 1719668.432781, a = 944.973604, b = 152.521995\n",
  3052. "epoch 2806: loss = 1719668.369830, a = 944.980495, b = 152.521990\n",
  3053. "epoch 2807: loss = 1719668.307100, a = 944.987371, b = 152.521986\n",
  3054. "epoch 2808: loss = 1719668.244589, a = 944.994234, b = 152.521981\n",
  3055. "epoch 2809: loss = 1719668.182297, a = 945.001084, b = 152.521977\n",
  3056. "epoch 2810: loss = 1719668.120224, a = 945.007919, b = 152.521973\n",
  3057. "epoch 2811: loss = 1719668.058368, a = 945.014741, b = 152.521968\n",
  3058. "epoch 2812: loss = 1719667.996728, a = 945.021550, b = 152.521964\n",
  3059. "epoch 2813: loss = 1719667.935304, a = 945.028344, b = 152.521960\n",
  3060. "epoch 2814: loss = 1719667.874095, a = 945.035126, b = 152.521955\n",
  3061. "epoch 2815: loss = 1719667.813100, a = 945.041893, b = 152.521951\n",
  3062. "epoch 2816: loss = 1719667.752318, a = 945.048647, b = 152.521947\n",
  3063. "epoch 2817: loss = 1719667.691749, a = 945.055388, b = 152.521942\n",
  3064. "epoch 2818: loss = 1719667.631391, a = 945.062115, b = 152.521938\n",
  3065. "epoch 2819: loss = 1719667.571245, a = 945.068828, b = 152.521934\n",
  3066. "epoch 2820: loss = 1719667.511309, a = 945.075529, b = 152.521929\n",
  3067. "epoch 2821: loss = 1719667.451582, a = 945.082215, b = 152.521925\n",
  3068. "epoch 2822: loss = 1719667.392063, a = 945.088889, b = 152.521921\n",
  3069. "epoch 2823: loss = 1719667.332753, a = 945.095549, b = 152.521917\n",
  3070. "epoch 2824: loss = 1719667.273649, a = 945.102196, b = 152.521912\n",
  3071. "epoch 2825: loss = 1719667.214752, a = 945.108829, b = 152.521908\n",
  3072. "epoch 2826: loss = 1719667.156061, a = 945.115449, b = 152.521904\n",
  3073. "epoch 2827: loss = 1719667.097574, a = 945.122056, b = 152.521900\n",
  3074. "epoch 2828: loss = 1719667.039291, a = 945.128650, b = 152.521896\n",
  3075. "epoch 2829: loss = 1719666.981211, a = 945.135230, b = 152.521891\n",
  3076. "epoch 2830: loss = 1719666.923334, a = 945.141798, b = 152.521887\n",
  3077. "epoch 2831: loss = 1719666.865659, a = 945.148352, b = 152.521883\n",
  3078. "epoch 2832: loss = 1719666.808185, a = 945.154893, b = 152.521879\n",
  3079. "epoch 2833: loss = 1719666.750911, a = 945.161421, b = 152.521875\n",
  3080. "epoch 2834: loss = 1719666.693836, a = 945.167936, b = 152.521870\n",
  3081. "epoch 2835: loss = 1719666.636960, a = 945.174438, b = 152.521866\n",
  3082. "epoch 2836: loss = 1719666.580283, a = 945.180927, b = 152.521862\n",
  3083. "epoch 2837: loss = 1719666.523802, a = 945.187403, b = 152.521858\n",
  3084. "epoch 2838: loss = 1719666.467519, a = 945.193866, b = 152.521854\n",
  3085. "epoch 2839: loss = 1719666.411431, a = 945.200317, b = 152.521850\n",
  3086. "epoch 2840: loss = 1719666.355538, a = 945.206754, b = 152.521846\n",
  3087. "epoch 2841: loss = 1719666.299839, a = 945.213178, b = 152.521842\n",
  3088. "epoch 2842: loss = 1719666.244335, a = 945.219590, b = 152.521837\n",
  3089. "epoch 2843: loss = 1719666.189023, a = 945.225988, b = 152.521833\n",
  3090. "epoch 2844: loss = 1719666.133903, a = 945.232374, b = 152.521829\n",
  3091. "epoch 2845: loss = 1719666.078976, a = 945.238747, b = 152.521825\n",
  3092. "epoch 2846: loss = 1719666.024238, a = 945.245108, b = 152.521821\n",
  3093. "epoch 2847: loss = 1719665.969691, a = 945.251456, b = 152.521817\n",
  3094. "epoch 2848: loss = 1719665.915334, a = 945.257791, b = 152.521813\n",
  3095. "epoch 2849: loss = 1719665.861165, a = 945.264113, b = 152.521809\n",
  3096. "epoch 2850: loss = 1719665.807184, a = 945.270423, b = 152.521805\n",
  3097. "epoch 2851: loss = 1719665.753391, a = 945.276720, b = 152.521801\n",
  3098. "epoch 2852: loss = 1719665.699784, a = 945.283004, b = 152.521797\n",
  3099. "epoch 2853: loss = 1719665.646364, a = 945.289276, b = 152.521793\n",
  3100. "epoch 2854: loss = 1719665.593128, a = 945.295535, b = 152.521789\n",
  3101. "epoch 2855: loss = 1719665.540077, a = 945.301782, b = 152.521785\n",
  3102. "epoch 2856: loss = 1719665.487210, a = 945.308016, b = 152.521781\n",
  3103. "epoch 2857: loss = 1719665.434526, a = 945.314238, b = 152.521777\n",
  3104. "epoch 2858: loss = 1719665.382025, a = 945.320448, b = 152.521773\n",
  3105. "epoch 2859: loss = 1719665.329706, a = 945.326645, b = 152.521769\n",
  3106. "epoch 2860: loss = 1719665.277568, a = 945.332829, b = 152.521765\n",
  3107. "epoch 2861: loss = 1719665.225610, a = 945.339002, b = 152.521761\n",
  3108. "epoch 2862: loss = 1719665.173832, a = 945.345162, b = 152.521757\n",
  3109. "epoch 2863: loss = 1719665.122234, a = 945.351309, b = 152.521753\n",
  3110. "epoch 2864: loss = 1719665.070814, a = 945.357445, b = 152.521749\n",
  3111. "epoch 2865: loss = 1719665.019572, a = 945.363568, b = 152.521746\n",
  3112. "epoch 2866: loss = 1719664.968507, a = 945.369678, b = 152.521742\n",
  3113. "epoch 2867: loss = 1719664.917619, a = 945.375777, b = 152.521738\n",
  3114. "epoch 2868: loss = 1719664.866907, a = 945.381863, b = 152.521734\n",
  3115. "epoch 2869: loss = 1719664.816370, a = 945.387938, b = 152.521730\n",
  3116. "epoch 2870: loss = 1719664.766007, a = 945.394000, b = 152.521726\n",
  3117. "epoch 2871: loss = 1719664.715819, a = 945.400050, b = 152.521722\n",
  3118. "epoch 2872: loss = 1719664.665804, a = 945.406087, b = 152.521718\n",
  3119. "epoch 2873: loss = 1719664.615962, a = 945.412113, b = 152.521714\n",
  3120. "epoch 2874: loss = 1719664.566291, a = 945.418127, b = 152.521711\n",
  3121. "epoch 2875: loss = 1719664.516793, a = 945.424129, b = 152.521707\n",
  3122. "epoch 2876: loss = 1719664.467465, a = 945.430118, b = 152.521703\n",
  3123. "epoch 2877: loss = 1719664.418307, a = 945.436096, b = 152.521699\n",
  3124. "epoch 2878: loss = 1719664.369319, a = 945.442062, b = 152.521695\n",
  3125. "epoch 2879: loss = 1719664.320500, a = 945.448016, b = 152.521692\n",
  3126. "epoch 2880: loss = 1719664.271849, a = 945.453958, b = 152.521688\n",
  3127. "epoch 2881: loss = 1719664.223365, a = 945.459888, b = 152.521684\n",
  3128. "epoch 2882: loss = 1719664.175049, a = 945.465806, b = 152.521680\n",
  3129. "epoch 2883: loss = 1719664.126900, a = 945.471712, b = 152.521676\n",
  3130. "epoch 2884: loss = 1719664.078916, a = 945.477607, b = 152.521673\n",
  3131. "epoch 2885: loss = 1719664.031097, a = 945.483489, b = 152.521669\n",
  3132. "epoch 2886: loss = 1719663.983443, a = 945.489360, b = 152.521665\n",
  3133. "epoch 2887: loss = 1719663.935953, a = 945.495220, b = 152.521661\n",
  3134. "epoch 2888: loss = 1719663.888627, a = 945.501067, b = 152.521658\n",
  3135. "epoch 2889: loss = 1719663.841463, a = 945.506903, b = 152.521654\n",
  3136. "epoch 2890: loss = 1719663.794462, a = 945.512727, b = 152.521650\n",
  3137. "epoch 2891: loss = 1719663.747622, a = 945.518540, b = 152.521647\n",
  3138. "epoch 2892: loss = 1719663.700944, a = 945.524341, b = 152.521643\n",
  3139. "epoch 2893: loss = 1719663.654425, a = 945.530130, b = 152.521639\n",
  3140. "epoch 2894: loss = 1719663.608067, a = 945.535908, b = 152.521635\n",
  3141. "epoch 2895: loss = 1719663.561868, a = 945.541674, b = 152.521632\n",
  3142. "epoch 2896: loss = 1719663.515827, a = 945.547429, b = 152.521628\n",
  3143. "epoch 2897: loss = 1719663.469945, a = 945.553172, b = 152.521624\n",
  3144. "epoch 2898: loss = 1719663.424220, a = 945.558903, b = 152.521621\n",
  3145. "epoch 2899: loss = 1719663.378653, a = 945.564623, b = 152.521617\n",
  3146. "epoch 2900: loss = 1719663.333241, a = 945.570332, b = 152.521613\n",
  3147. "epoch 2901: loss = 1719663.287985, a = 945.576030, b = 152.521610\n",
  3148. "epoch 2902: loss = 1719663.242885, a = 945.581716, b = 152.521606\n",
  3149. "epoch 2903: loss = 1719663.197939, a = 945.587390, b = 152.521603\n",
  3150. "epoch 2904: loss = 1719663.153148, a = 945.593053, b = 152.521599\n",
  3151. "epoch 2905: loss = 1719663.108510, a = 945.598705, b = 152.521595\n",
  3152. "epoch 2906: loss = 1719663.064024, a = 945.604346, b = 152.521592\n",
  3153. "epoch 2907: loss = 1719663.019692, a = 945.609975, b = 152.521588\n",
  3154. "epoch 2908: loss = 1719662.975511, a = 945.615593, b = 152.521585\n",
  3155. "epoch 2909: loss = 1719662.931481, a = 945.621200, b = 152.521581\n",
  3156. "epoch 2910: loss = 1719662.887602, a = 945.626796, b = 152.521577\n",
  3157. "epoch 2911: loss = 1719662.843874, a = 945.632380, b = 152.521574\n",
  3158. "epoch 2912: loss = 1719662.800295, a = 945.637953, b = 152.521570\n",
  3159. "epoch 2913: loss = 1719662.756865, a = 945.643515, b = 152.521567\n",
  3160. "epoch 2914: loss = 1719662.713583, a = 945.649066, b = 152.521563\n",
  3161. "epoch 2915: loss = 1719662.670450, a = 945.654606, b = 152.521560\n",
  3162. "epoch 2916: loss = 1719662.627464, a = 945.660135, b = 152.521556\n",
  3163. "epoch 2917: loss = 1719662.584625, a = 945.665653, b = 152.521553\n",
  3164. "epoch 2918: loss = 1719662.541932, a = 945.671160, b = 152.521549\n",
  3165. "epoch 2919: loss = 1719662.499386, a = 945.676655, b = 152.521546\n",
  3166. "epoch 2920: loss = 1719662.456984, a = 945.682140, b = 152.521542\n",
  3167. "epoch 2921: loss = 1719662.414727, a = 945.687614, b = 152.521539\n",
  3168. "epoch 2922: loss = 1719662.372615, a = 945.693077, b = 152.521535\n",
  3169. "epoch 2923: loss = 1719662.330646, a = 945.698529, b = 152.521532\n",
  3170. "epoch 2924: loss = 1719662.288821, a = 945.703970, b = 152.521528\n",
  3171. "epoch 2925: loss = 1719662.247138, a = 945.709400, b = 152.521525\n",
  3172. "epoch 2926: loss = 1719662.205597, a = 945.714819, b = 152.521521\n",
  3173. "epoch 2927: loss = 1719662.164198, a = 945.720227, b = 152.521518\n",
  3174. "epoch 2928: loss = 1719662.122941, a = 945.725625, b = 152.521514\n",
  3175. "epoch 2929: loss = 1719662.081823, a = 945.731012, b = 152.521511\n",
  3176. "epoch 2930: loss = 1719662.040846, a = 945.736388, b = 152.521507\n",
  3177. "epoch 2931: loss = 1719662.000008, a = 945.741753, b = 152.521504\n",
  3178. "epoch 2932: loss = 1719661.959310, a = 945.747108, b = 152.521501\n",
  3179. "epoch 2933: loss = 1719661.918750, a = 945.752451, b = 152.521497\n",
  3180. "epoch 2934: loss = 1719661.878328, a = 945.757785, b = 152.521494\n",
  3181. "epoch 2935: loss = 1719661.838044, a = 945.763107, b = 152.521490\n",
  3182. "epoch 2936: loss = 1719661.797896, a = 945.768419, b = 152.521487\n",
  3183. "epoch 2937: loss = 1719661.757886, a = 945.773720, b = 152.521484\n",
  3184. "epoch 2938: loss = 1719661.718011, a = 945.779011, b = 152.521480\n",
  3185. "epoch 2939: loss = 1719661.678272, a = 945.784291, b = 152.521477\n",
  3186. "epoch 2940: loss = 1719661.638668, a = 945.789560, b = 152.521473\n",
  3187. "epoch 2941: loss = 1719661.599198, a = 945.794819, b = 152.521470\n",
  3188. "epoch 2942: loss = 1719661.559863, a = 945.800068, b = 152.521467\n",
  3189. "epoch 2943: loss = 1719661.520661, a = 945.805306, b = 152.521463\n",
  3190. "epoch 2944: loss = 1719661.481592, a = 945.810533, b = 152.521460\n",
  3191. "epoch 2945: loss = 1719661.442656, a = 945.815750, b = 152.521457\n",
  3192. "epoch 2946: loss = 1719661.403852, a = 945.820957, b = 152.521453\n",
  3193. "epoch 2947: loss = 1719661.365180, a = 945.826153, b = 152.521450\n",
  3194. "epoch 2948: loss = 1719661.326639, a = 945.831339, b = 152.521447\n",
  3195. "epoch 2949: loss = 1719661.288228, a = 945.836514, b = 152.521443\n",
  3196. "epoch 2950: loss = 1719661.249948, a = 945.841679, b = 152.521440\n",
  3197. "epoch 2951: loss = 1719661.211798, a = 945.846834, b = 152.521437\n",
  3198. "epoch 2952: loss = 1719661.173777, a = 945.851978, b = 152.521434\n",
  3199. "epoch 2953: loss = 1719661.135884, a = 945.857112, b = 152.521430\n",
  3200. "epoch 2954: loss = 1719661.098120, a = 945.862236, b = 152.521427\n",
  3201. "epoch 2955: loss = 1719661.060484, a = 945.867350, b = 152.521424\n",
  3202. "epoch 2956: loss = 1719661.022975, a = 945.872453, b = 152.521420\n",
  3203. "epoch 2957: loss = 1719660.985594, a = 945.877546, b = 152.521417\n",
  3204. "epoch 2958: loss = 1719660.948338, a = 945.882629, b = 152.521414\n",
  3205. "epoch 2959: loss = 1719660.911209, a = 945.887702, b = 152.521411\n",
  3206. "epoch 2960: loss = 1719660.874205, a = 945.892765, b = 152.521408\n",
  3207. "epoch 2961: loss = 1719660.837327, a = 945.897818, b = 152.521404\n",
  3208. "epoch 2962: loss = 1719660.800573, a = 945.902860, b = 152.521401\n",
  3209. "epoch 2963: loss = 1719660.763943, a = 945.907892, b = 152.521398\n",
  3210. "epoch 2964: loss = 1719660.727437, a = 945.912915, b = 152.521395\n",
  3211. "epoch 2965: loss = 1719660.691055, a = 945.917927, b = 152.521391\n"
  3212. ]
  3213. },
  3214. {
  3215. "name": "stdout",
  3216. "output_type": "stream",
  3217. "text": [
  3218. "epoch 2966: loss = 1719660.654795, a = 945.922929, b = 152.521388\n",
  3219. "epoch 2967: loss = 1719660.618658, a = 945.927922, b = 152.521385\n",
  3220. "epoch 2968: loss = 1719660.582642, a = 945.932904, b = 152.521382\n",
  3221. "epoch 2969: loss = 1719660.546748, a = 945.937876, b = 152.521379\n",
  3222. "epoch 2970: loss = 1719660.510975, a = 945.942839, b = 152.521376\n",
  3223. "epoch 2971: loss = 1719660.475323, a = 945.947791, b = 152.521372\n",
  3224. "epoch 2972: loss = 1719660.439791, a = 945.952734, b = 152.521369\n",
  3225. "epoch 2973: loss = 1719660.404379, a = 945.957666, b = 152.521366\n",
  3226. "epoch 2974: loss = 1719660.369086, a = 945.962589, b = 152.521363\n",
  3227. "epoch 2975: loss = 1719660.333912, a = 945.967502, b = 152.521360\n",
  3228. "epoch 2976: loss = 1719660.298857, a = 945.972405, b = 152.521357\n",
  3229. "epoch 2977: loss = 1719660.263920, a = 945.977298, b = 152.521354\n",
  3230. "epoch 2978: loss = 1719660.229100, a = 945.982182, b = 152.521350\n",
  3231. "epoch 2979: loss = 1719660.194397, a = 945.987056, b = 152.521347\n",
  3232. "epoch 2980: loss = 1719660.159811, a = 945.991920, b = 152.521344\n",
  3233. "epoch 2981: loss = 1719660.125342, a = 945.996774, b = 152.521341\n",
  3234. "epoch 2982: loss = 1719660.090988, a = 946.001619, b = 152.521338\n",
  3235. "epoch 2983: loss = 1719660.056750, a = 946.006454, b = 152.521335\n",
  3236. "epoch 2984: loss = 1719660.022627, a = 946.011279, b = 152.521332\n",
  3237. "epoch 2985: loss = 1719659.988619, a = 946.016094, b = 152.521329\n",
  3238. "epoch 2986: loss = 1719659.954725, a = 946.020900, b = 152.521326\n",
  3239. "epoch 2987: loss = 1719659.920945, a = 946.025697, b = 152.521323\n",
  3240. "epoch 2988: loss = 1719659.887278, a = 946.030483, b = 152.521320\n",
  3241. "epoch 2989: loss = 1719659.853724, a = 946.035261, b = 152.521316\n",
  3242. "epoch 2990: loss = 1719659.820283, a = 946.040028, b = 152.521313\n",
  3243. "epoch 2991: loss = 1719659.786954, a = 946.044786, b = 152.521310\n",
  3244. "epoch 2992: loss = 1719659.753737, a = 946.049535, b = 152.521307\n",
  3245. "epoch 2993: loss = 1719659.720631, a = 946.054274, b = 152.521304\n",
  3246. "epoch 2994: loss = 1719659.687636, a = 946.059004, b = 152.521301\n",
  3247. "epoch 2995: loss = 1719659.654752, a = 946.063724, b = 152.521298\n",
  3248. "epoch 2996: loss = 1719659.621978, a = 946.068434, b = 152.521295\n",
  3249. "epoch 2997: loss = 1719659.589314, a = 946.073136, b = 152.521292\n",
  3250. "epoch 2998: loss = 1719659.556759, a = 946.077828, b = 152.521289\n",
  3251. "epoch 2999: loss = 1719659.524314, a = 946.082510, b = 152.521286\n"
  3252. ]
  3253. },
  3254. {
  3255. "data": {
  3256. "image/png": "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c845x3G/0047jViZaiwzZsygoqLCVzs00WTagqVUkKmJxzT2aI8+AaSUSCl57bXXHPe9/fbbU9AiZ2bMmMFll11Gbm5uuptSr2msnm0myjo1zjQYjz4Z3tV9993Hsccey7HHHsuMcL6d9evX06lTJ6644gqOPfZYNmzYEFUw5O9//zudOnXi5JNPZujQodxzzz0ADB8+nLlz5wJGgZEJEybQo0cPunbtypo1awD46KOPOOmkkygoKKBPnz6sXWvvJVVWVnLJJZdw9NFHc/7551NZuffLdt1119GrVy+6dOnChAkTAHjggQf47rvv6N+/P/3791fup3GmsXq2KvlmumWdGnsahEefDO+qpKSEJ554gmXLliGl5MQTT+TUU0+lRYsWfPHFF8yaNYvevXtHHfPxxx8zb948VqxYQVVVFT169KBnz56W5z/ooIP45JNPePjhh7nnnnt47LHH6Ny5M++99x5NmjRh0aJF3HLLLXWZMa145JFHyM3NZfXq1axcuZIePXrUvXbHHXfQsmVLampqOP3001m5ciU33HAD9913H4sXL+aggw5S7tetWzdf96wx0Vg9W514rH7SIAx9olnzrHj//fc5//zz2WeffQAYMmQI7733HoMHD+awww6LM/IAS5Ys4bzzzqN58+Y0b96cc889V3n+IUOGANCzZ8+6dMbbt29n2LBhfPHFFwghqKqqsm3ju+++yw033ABAt27dogz0Cy+8wMyZM6murmbTpk18/vnnlgbc7X7JJNNUHG7a43bBUn3smx1a1umCzZvhzjuhaVO46650twZoIIY+1d6VafwTwUx3nJ2dTXV1NQC33nor/fv35+WXX2b9+vWcdtppvs799ddfc8899/Dxxx/TokULhg8fzq5du3zvl0wyLdbttj1uPNv62jcn9OpXBb/8AtOnwz33wM6dcO21ICUIke6WNYwYfTLihqeccgpFRUVUVFSwc+dOXn75ZU455RTbY/r27csrr7zCrl272LFjB6+++qqna27fvp38fOML9OSTTzruH5kK+bPPPqsrY/jzzz+zzz77cMABB/DDDz/w+uuv1x2z33778csvvzjulyoyLdbttj1uUurW175lAvVK0bRnD/zjH3D44TBhAvz61/DZZ/Dwwxlh5KGBePTJiBv26NGD4cOHc8IJJwBwzTXXUFBQwPr165XHHH/88Qwe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\n",
  3257. "text/plain": [
  3258. "<Figure size 432x288 with 1 Axes>"
  3259. ]
  3260. },
  3261. "metadata": {
  3262. "needs_background": "light"
  3263. },
  3264. "output_type": "display_data"
  3265. }
  3266. ],
  3267. "source": [
  3268. "n_epoch = 3000 # epoch size\n",
  3269. "a, b = 1, 1 # initial parameters\n",
  3270. "epsilon = 0.001 # learning rate\n",
  3271. "\n",
  3272. "for i in range(n_epoch):\n",
  3273. " for j in range(N):\n",
  3274. " a = a + epsilon*2*(Y[j] - a*X[j] - b)*X[j]\n",
  3275. " b = b + epsilon*2*(Y[j] - a*X[j] - b)\n",
  3276. "\n",
  3277. " L = 0\n",
  3278. " for j in range(N):\n",
  3279. " L = L + (Y[j]-a*X[j]-b)**2\n",
  3280. " print(\"epoch %4d: loss = %f, a = %f, b = %f\" % (i, L, a, b))\n",
  3281. " \n",
  3282. "x_min = np.min(X)\n",
  3283. "x_max = np.max(X)\n",
  3284. "y_min = a * x_min + b\n",
  3285. "y_max = a * x_max + b\n",
  3286. "\n",
  3287. "plt.scatter(X, Y, label='original data')\n",
  3288. "plt.plot([x_min, x_max], [y_min, y_max], 'r', label='model')\n",
  3289. "plt.legend()\n",
  3290. "plt.show()"
  3291. ]
  3292. },
  3293. {
  3294. "cell_type": "markdown",
  3295. "metadata": {},
  3296. "source": [
  3297. "## How to show the iterative process"
  3298. ]
  3299. },
  3300. {
  3301. "cell_type": "code",
  3302. "execution_count": 5,
  3303. "metadata": {},
  3304. "outputs": [
  3305. {
  3306. "data": {
  3307. "application/javascript": [
  3308. "/* Put everything inside the global mpl namespace */\n",
  3309. "window.mpl = {};\n",
  3310. "\n",
  3311. "\n",
  3312. "mpl.get_websocket_type = function() {\n",
  3313. " if (typeof(WebSocket) !== 'undefined') {\n",
  3314. " return WebSocket;\n",
  3315. " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
  3316. " return MozWebSocket;\n",
  3317. " } else {\n",
  3318. " alert('Your browser does not have WebSocket support.' +\n",
  3319. " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
  3320. " 'Firefox 4 and 5 are also supported but you ' +\n",
  3321. " 'have to enable WebSockets in about:config.');\n",
  3322. " };\n",
  3323. "}\n",
  3324. "\n",
  3325. "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
  3326. " this.id = figure_id;\n",
  3327. "\n",
  3328. " this.ws = websocket;\n",
  3329. "\n",
  3330. " this.supports_binary = (this.ws.binaryType != undefined);\n",
  3331. "\n",
  3332. " if (!this.supports_binary) {\n",
  3333. " var warnings = document.getElementById(\"mpl-warnings\");\n",
  3334. " if (warnings) {\n",
  3335. " warnings.style.display = 'block';\n",
  3336. " warnings.textContent = (\n",
  3337. " \"This browser does not support binary websocket messages. \" +\n",
  3338. " \"Performance may be slow.\");\n",
  3339. " }\n",
  3340. " }\n",
  3341. "\n",
  3342. " this.imageObj = new Image();\n",
  3343. "\n",
  3344. " this.context = undefined;\n",
  3345. " this.message = undefined;\n",
  3346. " this.canvas = undefined;\n",
  3347. " this.rubberband_canvas = undefined;\n",
  3348. " this.rubberband_context = undefined;\n",
  3349. " this.format_dropdown = undefined;\n",
  3350. "\n",
  3351. " this.image_mode = 'full';\n",
  3352. "\n",
  3353. " this.root = $('<div/>');\n",
  3354. " this._root_extra_style(this.root)\n",
  3355. " this.root.attr('style', 'display: inline-block');\n",
  3356. "\n",
  3357. " $(parent_element).append(this.root);\n",
  3358. "\n",
  3359. " this._init_header(this);\n",
  3360. " this._init_canvas(this);\n",
  3361. " this._init_toolbar(this);\n",
  3362. "\n",
  3363. " var fig = this;\n",
  3364. "\n",
  3365. " this.waiting = false;\n",
  3366. "\n",
  3367. " this.ws.onopen = function () {\n",
  3368. " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
  3369. " fig.send_message(\"send_image_mode\", {});\n",
  3370. " if (mpl.ratio != 1) {\n",
  3371. " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
  3372. " }\n",
  3373. " fig.send_message(\"refresh\", {});\n",
  3374. " }\n",
  3375. "\n",
  3376. " this.imageObj.onload = function() {\n",
  3377. " if (fig.image_mode == 'full') {\n",
  3378. " // Full images could contain transparency (where diff images\n",
  3379. " // almost always do), so we need to clear the canvas so that\n",
  3380. " // there is no ghosting.\n",
  3381. " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
  3382. " }\n",
  3383. " fig.context.drawImage(fig.imageObj, 0, 0);\n",
  3384. " };\n",
  3385. "\n",
  3386. " this.imageObj.onunload = function() {\n",
  3387. " fig.ws.close();\n",
  3388. " }\n",
  3389. "\n",
  3390. " this.ws.onmessage = this._make_on_message_function(this);\n",
  3391. "\n",
  3392. " this.ondownload = ondownload;\n",
  3393. "}\n",
  3394. "\n",
  3395. "mpl.figure.prototype._init_header = function() {\n",
  3396. " var titlebar = $(\n",
  3397. " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
  3398. " 'ui-helper-clearfix\"/>');\n",
  3399. " var titletext = $(\n",
  3400. " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
  3401. " 'text-align: center; padding: 3px;\"/>');\n",
  3402. " titlebar.append(titletext)\n",
  3403. " this.root.append(titlebar);\n",
  3404. " this.header = titletext[0];\n",
  3405. "}\n",
  3406. "\n",
  3407. "\n",
  3408. "\n",
  3409. "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
  3410. "\n",
  3411. "}\n",
  3412. "\n",
  3413. "\n",
  3414. "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
  3415. "\n",
  3416. "}\n",
  3417. "\n",
  3418. "mpl.figure.prototype._init_canvas = function() {\n",
  3419. " var fig = this;\n",
  3420. "\n",
  3421. " var canvas_div = $('<div/>');\n",
  3422. "\n",
  3423. " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
  3424. "\n",
  3425. " function canvas_keyboard_event(event) {\n",
  3426. " return fig.key_event(event, event['data']);\n",
  3427. " }\n",
  3428. "\n",
  3429. " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
  3430. " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
  3431. " this.canvas_div = canvas_div\n",
  3432. " this._canvas_extra_style(canvas_div)\n",
  3433. " this.root.append(canvas_div);\n",
  3434. "\n",
  3435. " var canvas = $('<canvas/>');\n",
  3436. " canvas.addClass('mpl-canvas');\n",
  3437. " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
  3438. "\n",
  3439. " this.canvas = canvas[0];\n",
  3440. " this.context = canvas[0].getContext(\"2d\");\n",
  3441. "\n",
  3442. " var backingStore = this.context.backingStorePixelRatio ||\n",
  3443. "\tthis.context.webkitBackingStorePixelRatio ||\n",
  3444. "\tthis.context.mozBackingStorePixelRatio ||\n",
  3445. "\tthis.context.msBackingStorePixelRatio ||\n",
  3446. "\tthis.context.oBackingStorePixelRatio ||\n",
  3447. "\tthis.context.backingStorePixelRatio || 1;\n",
  3448. "\n",
  3449. " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
  3450. "\n",
  3451. " var rubberband = $('<canvas/>');\n",
  3452. " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
  3453. "\n",
  3454. " var pass_mouse_events = true;\n",
  3455. "\n",
  3456. " canvas_div.resizable({\n",
  3457. " start: function(event, ui) {\n",
  3458. " pass_mouse_events = false;\n",
  3459. " },\n",
  3460. " resize: function(event, ui) {\n",
  3461. " fig.request_resize(ui.size.width, ui.size.height);\n",
  3462. " },\n",
  3463. " stop: function(event, ui) {\n",
  3464. " pass_mouse_events = true;\n",
  3465. " fig.request_resize(ui.size.width, ui.size.height);\n",
  3466. " },\n",
  3467. " });\n",
  3468. "\n",
  3469. " function mouse_event_fn(event) {\n",
  3470. " if (pass_mouse_events)\n",
  3471. " return fig.mouse_event(event, event['data']);\n",
  3472. " }\n",
  3473. "\n",
  3474. " rubberband.mousedown('button_press', mouse_event_fn);\n",
  3475. " rubberband.mouseup('button_release', mouse_event_fn);\n",
  3476. " // Throttle sequential mouse events to 1 every 20ms.\n",
  3477. " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
  3478. "\n",
  3479. " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
  3480. " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
  3481. "\n",
  3482. " canvas_div.on(\"wheel\", function (event) {\n",
  3483. " event = event.originalEvent;\n",
  3484. " event['data'] = 'scroll'\n",
  3485. " if (event.deltaY < 0) {\n",
  3486. " event.step = 1;\n",
  3487. " } else {\n",
  3488. " event.step = -1;\n",
  3489. " }\n",
  3490. " mouse_event_fn(event);\n",
  3491. " });\n",
  3492. "\n",
  3493. " canvas_div.append(canvas);\n",
  3494. " canvas_div.append(rubberband);\n",
  3495. "\n",
  3496. " this.rubberband = rubberband;\n",
  3497. " this.rubberband_canvas = rubberband[0];\n",
  3498. " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
  3499. " this.rubberband_context.strokeStyle = \"#000000\";\n",
  3500. "\n",
  3501. " this._resize_canvas = function(width, height) {\n",
  3502. " // Keep the size of the canvas, canvas container, and rubber band\n",
  3503. " // canvas in synch.\n",
  3504. " canvas_div.css('width', width)\n",
  3505. " canvas_div.css('height', height)\n",
  3506. "\n",
  3507. " canvas.attr('width', width * mpl.ratio);\n",
  3508. " canvas.attr('height', height * mpl.ratio);\n",
  3509. " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
  3510. "\n",
  3511. " rubberband.attr('width', width);\n",
  3512. " rubberband.attr('height', height);\n",
  3513. " }\n",
  3514. "\n",
  3515. " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
  3516. " // upon first draw.\n",
  3517. " this._resize_canvas(600, 600);\n",
  3518. "\n",
  3519. " // Disable right mouse context menu.\n",
  3520. " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
  3521. " return false;\n",
  3522. " });\n",
  3523. "\n",
  3524. " function set_focus () {\n",
  3525. " canvas.focus();\n",
  3526. " canvas_div.focus();\n",
  3527. " }\n",
  3528. "\n",
  3529. " window.setTimeout(set_focus, 100);\n",
  3530. "}\n",
  3531. "\n",
  3532. "mpl.figure.prototype._init_toolbar = function() {\n",
  3533. " var fig = this;\n",
  3534. "\n",
  3535. " var nav_element = $('<div/>')\n",
  3536. " nav_element.attr('style', 'width: 100%');\n",
  3537. " this.root.append(nav_element);\n",
  3538. "\n",
  3539. " // Define a callback function for later on.\n",
  3540. " function toolbar_event(event) {\n",
  3541. " return fig.toolbar_button_onclick(event['data']);\n",
  3542. " }\n",
  3543. " function toolbar_mouse_event(event) {\n",
  3544. " return fig.toolbar_button_onmouseover(event['data']);\n",
  3545. " }\n",
  3546. "\n",
  3547. " for(var toolbar_ind in mpl.toolbar_items) {\n",
  3548. " var name = mpl.toolbar_items[toolbar_ind][0];\n",
  3549. " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
  3550. " var image = mpl.toolbar_items[toolbar_ind][2];\n",
  3551. " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
  3552. "\n",
  3553. " if (!name) {\n",
  3554. " // put a spacer in here.\n",
  3555. " continue;\n",
  3556. " }\n",
  3557. " var button = $('<button/>');\n",
  3558. " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
  3559. " 'ui-button-icon-only');\n",
  3560. " button.attr('role', 'button');\n",
  3561. " button.attr('aria-disabled', 'false');\n",
  3562. " button.click(method_name, toolbar_event);\n",
  3563. " button.mouseover(tooltip, toolbar_mouse_event);\n",
  3564. "\n",
  3565. " var icon_img = $('<span/>');\n",
  3566. " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
  3567. " icon_img.addClass(image);\n",
  3568. " icon_img.addClass('ui-corner-all');\n",
  3569. "\n",
  3570. " var tooltip_span = $('<span/>');\n",
  3571. " tooltip_span.addClass('ui-button-text');\n",
  3572. " tooltip_span.html(tooltip);\n",
  3573. "\n",
  3574. " button.append(icon_img);\n",
  3575. " button.append(tooltip_span);\n",
  3576. "\n",
  3577. " nav_element.append(button);\n",
  3578. " }\n",
  3579. "\n",
  3580. " var fmt_picker_span = $('<span/>');\n",
  3581. "\n",
  3582. " var fmt_picker = $('<select/>');\n",
  3583. " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
  3584. " fmt_picker_span.append(fmt_picker);\n",
  3585. " nav_element.append(fmt_picker_span);\n",
  3586. " this.format_dropdown = fmt_picker[0];\n",
  3587. "\n",
  3588. " for (var ind in mpl.extensions) {\n",
  3589. " var fmt = mpl.extensions[ind];\n",
  3590. " var option = $(\n",
  3591. " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
  3592. " fmt_picker.append(option)\n",
  3593. " }\n",
  3594. "\n",
  3595. " // Add hover states to the ui-buttons\n",
  3596. " $( \".ui-button\" ).hover(\n",
  3597. " function() { $(this).addClass(\"ui-state-hover\");},\n",
  3598. " function() { $(this).removeClass(\"ui-state-hover\");}\n",
  3599. " );\n",
  3600. "\n",
  3601. " var status_bar = $('<span class=\"mpl-message\"/>');\n",
  3602. " nav_element.append(status_bar);\n",
  3603. " this.message = status_bar[0];\n",
  3604. "}\n",
  3605. "\n",
  3606. "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
  3607. " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
  3608. " // which will in turn request a refresh of the image.\n",
  3609. " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
  3610. "}\n",
  3611. "\n",
  3612. "mpl.figure.prototype.send_message = function(type, properties) {\n",
  3613. " properties['type'] = type;\n",
  3614. " properties['figure_id'] = this.id;\n",
  3615. " this.ws.send(JSON.stringify(properties));\n",
  3616. "}\n",
  3617. "\n",
  3618. "mpl.figure.prototype.send_draw_message = function() {\n",
  3619. " if (!this.waiting) {\n",
  3620. " this.waiting = true;\n",
  3621. " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
  3622. " }\n",
  3623. "}\n",
  3624. "\n",
  3625. "\n",
  3626. "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
  3627. " var format_dropdown = fig.format_dropdown;\n",
  3628. " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
  3629. " fig.ondownload(fig, format);\n",
  3630. "}\n",
  3631. "\n",
  3632. "\n",
  3633. "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
  3634. " var size = msg['size'];\n",
  3635. " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
  3636. " fig._resize_canvas(size[0], size[1]);\n",
  3637. " fig.send_message(\"refresh\", {});\n",
  3638. " };\n",
  3639. "}\n",
  3640. "\n",
  3641. "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
  3642. " var x0 = msg['x0'] / mpl.ratio;\n",
  3643. " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
  3644. " var x1 = msg['x1'] / mpl.ratio;\n",
  3645. " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
  3646. " x0 = Math.floor(x0) + 0.5;\n",
  3647. " y0 = Math.floor(y0) + 0.5;\n",
  3648. " x1 = Math.floor(x1) + 0.5;\n",
  3649. " y1 = Math.floor(y1) + 0.5;\n",
  3650. " var min_x = Math.min(x0, x1);\n",
  3651. " var min_y = Math.min(y0, y1);\n",
  3652. " var width = Math.abs(x1 - x0);\n",
  3653. " var height = Math.abs(y1 - y0);\n",
  3654. "\n",
  3655. " fig.rubberband_context.clearRect(\n",
  3656. " 0, 0, fig.canvas.width, fig.canvas.height);\n",
  3657. "\n",
  3658. " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
  3659. "}\n",
  3660. "\n",
  3661. "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
  3662. " // Updates the figure title.\n",
  3663. " fig.header.textContent = msg['label'];\n",
  3664. "}\n",
  3665. "\n",
  3666. "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
  3667. " var cursor = msg['cursor'];\n",
  3668. " switch(cursor)\n",
  3669. " {\n",
  3670. " case 0:\n",
  3671. " cursor = 'pointer';\n",
  3672. " break;\n",
  3673. " case 1:\n",
  3674. " cursor = 'default';\n",
  3675. " break;\n",
  3676. " case 2:\n",
  3677. " cursor = 'crosshair';\n",
  3678. " break;\n",
  3679. " case 3:\n",
  3680. " cursor = 'move';\n",
  3681. " break;\n",
  3682. " }\n",
  3683. " fig.rubberband_canvas.style.cursor = cursor;\n",
  3684. "}\n",
  3685. "\n",
  3686. "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
  3687. " fig.message.textContent = msg['message'];\n",
  3688. "}\n",
  3689. "\n",
  3690. "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
  3691. " // Request the server to send over a new figure.\n",
  3692. " fig.send_draw_message();\n",
  3693. "}\n",
  3694. "\n",
  3695. "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
  3696. " fig.image_mode = msg['mode'];\n",
  3697. "}\n",
  3698. "\n",
  3699. "mpl.figure.prototype.updated_canvas_event = function() {\n",
  3700. " // Called whenever the canvas gets updated.\n",
  3701. " this.send_message(\"ack\", {});\n",
  3702. "}\n",
  3703. "\n",
  3704. "// A function to construct a web socket function for onmessage handling.\n",
  3705. "// Called in the figure constructor.\n",
  3706. "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
  3707. " return function socket_on_message(evt) {\n",
  3708. " if (evt.data instanceof Blob) {\n",
  3709. " /* FIXME: We get \"Resource interpreted as Image but\n",
  3710. " * transferred with MIME type text/plain:\" errors on\n",
  3711. " * Chrome. But how to set the MIME type? It doesn't seem\n",
  3712. " * to be part of the websocket stream */\n",
  3713. " evt.data.type = \"image/png\";\n",
  3714. "\n",
  3715. " /* Free the memory for the previous frames */\n",
  3716. " if (fig.imageObj.src) {\n",
  3717. " (window.URL || window.webkitURL).revokeObjectURL(\n",
  3718. " fig.imageObj.src);\n",
  3719. " }\n",
  3720. "\n",
  3721. " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
  3722. " evt.data);\n",
  3723. " fig.updated_canvas_event();\n",
  3724. " fig.waiting = false;\n",
  3725. " return;\n",
  3726. " }\n",
  3727. " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
  3728. " fig.imageObj.src = evt.data;\n",
  3729. " fig.updated_canvas_event();\n",
  3730. " fig.waiting = false;\n",
  3731. " return;\n",
  3732. " }\n",
  3733. "\n",
  3734. " var msg = JSON.parse(evt.data);\n",
  3735. " var msg_type = msg['type'];\n",
  3736. "\n",
  3737. " // Call the \"handle_{type}\" callback, which takes\n",
  3738. " // the figure and JSON message as its only arguments.\n",
  3739. " try {\n",
  3740. " var callback = fig[\"handle_\" + msg_type];\n",
  3741. " } catch (e) {\n",
  3742. " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
  3743. " return;\n",
  3744. " }\n",
  3745. "\n",
  3746. " if (callback) {\n",
  3747. " try {\n",
  3748. " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
  3749. " callback(fig, msg);\n",
  3750. " } catch (e) {\n",
  3751. " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
  3752. " }\n",
  3753. " }\n",
  3754. " };\n",
  3755. "}\n",
  3756. "\n",
  3757. "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
  3758. "mpl.findpos = function(e) {\n",
  3759. " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
  3760. " var targ;\n",
  3761. " if (!e)\n",
  3762. " e = window.event;\n",
  3763. " if (e.target)\n",
  3764. " targ = e.target;\n",
  3765. " else if (e.srcElement)\n",
  3766. " targ = e.srcElement;\n",
  3767. " if (targ.nodeType == 3) // defeat Safari bug\n",
  3768. " targ = targ.parentNode;\n",
  3769. "\n",
  3770. " // jQuery normalizes the pageX and pageY\n",
  3771. " // pageX,Y are the mouse positions relative to the document\n",
  3772. " // offset() returns the position of the element relative to the document\n",
  3773. " var x = e.pageX - $(targ).offset().left;\n",
  3774. " var y = e.pageY - $(targ).offset().top;\n",
  3775. "\n",
  3776. " return {\"x\": x, \"y\": y};\n",
  3777. "};\n",
  3778. "\n",
  3779. "/*\n",
  3780. " * return a copy of an object with only non-object keys\n",
  3781. " * we need this to avoid circular references\n",
  3782. " * http://stackoverflow.com/a/24161582/3208463\n",
  3783. " */\n",
  3784. "function simpleKeys (original) {\n",
  3785. " return Object.keys(original).reduce(function (obj, key) {\n",
  3786. " if (typeof original[key] !== 'object')\n",
  3787. " obj[key] = original[key]\n",
  3788. " return obj;\n",
  3789. " }, {});\n",
  3790. "}\n",
  3791. "\n",
  3792. "mpl.figure.prototype.mouse_event = function(event, name) {\n",
  3793. " var canvas_pos = mpl.findpos(event)\n",
  3794. "\n",
  3795. " if (name === 'button_press')\n",
  3796. " {\n",
  3797. " this.canvas.focus();\n",
  3798. " this.canvas_div.focus();\n",
  3799. " }\n",
  3800. "\n",
  3801. " var x = canvas_pos.x * mpl.ratio;\n",
  3802. " var y = canvas_pos.y * mpl.ratio;\n",
  3803. "\n",
  3804. " this.send_message(name, {x: x, y: y, button: event.button,\n",
  3805. " step: event.step,\n",
  3806. " guiEvent: simpleKeys(event)});\n",
  3807. "\n",
  3808. " /* This prevents the web browser from automatically changing to\n",
  3809. " * the text insertion cursor when the button is pressed. We want\n",
  3810. " * to control all of the cursor setting manually through the\n",
  3811. " * 'cursor' event from matplotlib */\n",
  3812. " event.preventDefault();\n",
  3813. " return false;\n",
  3814. "}\n",
  3815. "\n",
  3816. "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
  3817. " // Handle any extra behaviour associated with a key event\n",
  3818. "}\n",
  3819. "\n",
  3820. "mpl.figure.prototype.key_event = function(event, name) {\n",
  3821. "\n",
  3822. " // Prevent repeat events\n",
  3823. " if (name == 'key_press')\n",
  3824. " {\n",
  3825. " if (event.which === this._key)\n",
  3826. " return;\n",
  3827. " else\n",
  3828. " this._key = event.which;\n",
  3829. " }\n",
  3830. " if (name == 'key_release')\n",
  3831. " this._key = null;\n",
  3832. "\n",
  3833. " var value = '';\n",
  3834. " if (event.ctrlKey && event.which != 17)\n",
  3835. " value += \"ctrl+\";\n",
  3836. " if (event.altKey && event.which != 18)\n",
  3837. " value += \"alt+\";\n",
  3838. " if (event.shiftKey && event.which != 16)\n",
  3839. " value += \"shift+\";\n",
  3840. "\n",
  3841. " value += 'k';\n",
  3842. " value += event.which.toString();\n",
  3843. "\n",
  3844. " this._key_event_extra(event, name);\n",
  3845. "\n",
  3846. " this.send_message(name, {key: value,\n",
  3847. " guiEvent: simpleKeys(event)});\n",
  3848. " return false;\n",
  3849. "}\n",
  3850. "\n",
  3851. "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
  3852. " if (name == 'download') {\n",
  3853. " this.handle_save(this, null);\n",
  3854. " } else {\n",
  3855. " this.send_message(\"toolbar_button\", {name: name});\n",
  3856. " }\n",
  3857. "};\n",
  3858. "\n",
  3859. "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
  3860. " this.message.textContent = tooltip;\n",
  3861. "};\n",
  3862. "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
  3863. "\n",
  3864. "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
  3865. "\n",
  3866. "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
  3867. " // Create a \"websocket\"-like object which calls the given IPython comm\n",
  3868. " // object with the appropriate methods. Currently this is a non binary\n",
  3869. " // socket, so there is still some room for performance tuning.\n",
  3870. " var ws = {};\n",
  3871. "\n",
  3872. " ws.close = function() {\n",
  3873. " comm.close()\n",
  3874. " };\n",
  3875. " ws.send = function(m) {\n",
  3876. " //console.log('sending', m);\n",
  3877. " comm.send(m);\n",
  3878. " };\n",
  3879. " // Register the callback with on_msg.\n",
  3880. " comm.on_msg(function(msg) {\n",
  3881. " //console.log('receiving', msg['content']['data'], msg);\n",
  3882. " // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
  3883. " ws.onmessage(msg['content']['data'])\n",
  3884. " });\n",
  3885. " return ws;\n",
  3886. "}\n",
  3887. "\n",
  3888. "mpl.mpl_figure_comm = function(comm, msg) {\n",
  3889. " // This is the function which gets called when the mpl process\n",
  3890. " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
  3891. "\n",
  3892. " var id = msg.content.data.id;\n",
  3893. " // Get hold of the div created by the display call when the Comm\n",
  3894. " // socket was opened in Python.\n",
  3895. " var element = $(\"#\" + id);\n",
  3896. " var ws_proxy = comm_websocket_adapter(comm)\n",
  3897. "\n",
  3898. " function ondownload(figure, format) {\n",
  3899. " window.open(figure.imageObj.src);\n",
  3900. " }\n",
  3901. "\n",
  3902. " var fig = new mpl.figure(id, ws_proxy,\n",
  3903. " ondownload,\n",
  3904. " element.get(0));\n",
  3905. "\n",
  3906. " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
  3907. " // web socket which is closed, not our websocket->open comm proxy.\n",
  3908. " ws_proxy.onopen();\n",
  3909. "\n",
  3910. " fig.parent_element = element.get(0);\n",
  3911. " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
  3912. " if (!fig.cell_info) {\n",
  3913. " console.error(\"Failed to find cell for figure\", id, fig);\n",
  3914. " return;\n",
  3915. " }\n",
  3916. "\n",
  3917. " var output_index = fig.cell_info[2]\n",
  3918. " var cell = fig.cell_info[0];\n",
  3919. "\n",
  3920. "};\n",
  3921. "\n",
  3922. "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
  3923. " var width = fig.canvas.width/mpl.ratio\n",
  3924. " fig.root.unbind('remove')\n",
  3925. "\n",
  3926. " // Update the output cell to use the data from the current canvas.\n",
  3927. " fig.push_to_output();\n",
  3928. " var dataURL = fig.canvas.toDataURL();\n",
  3929. " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
  3930. " // the notebook keyboard shortcuts fail.\n",
  3931. " IPython.keyboard_manager.enable()\n",
  3932. " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
  3933. " fig.close_ws(fig, msg);\n",
  3934. "}\n",
  3935. "\n",
  3936. "mpl.figure.prototype.close_ws = function(fig, msg){\n",
  3937. " fig.send_message('closing', msg);\n",
  3938. " // fig.ws.close()\n",
  3939. "}\n",
  3940. "\n",
  3941. "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
  3942. " // Turn the data on the canvas into data in the output cell.\n",
  3943. " var width = this.canvas.width/mpl.ratio\n",
  3944. " var dataURL = this.canvas.toDataURL();\n",
  3945. " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
  3946. "}\n",
  3947. "\n",
  3948. "mpl.figure.prototype.updated_canvas_event = function() {\n",
  3949. " // Tell IPython that the notebook contents must change.\n",
  3950. " IPython.notebook.set_dirty(true);\n",
  3951. " this.send_message(\"ack\", {});\n",
  3952. " var fig = this;\n",
  3953. " // Wait a second, then push the new image to the DOM so\n",
  3954. " // that it is saved nicely (might be nice to debounce this).\n",
  3955. " setTimeout(function () { fig.push_to_output() }, 1000);\n",
  3956. "}\n",
  3957. "\n",
  3958. "mpl.figure.prototype._init_toolbar = function() {\n",
  3959. " var fig = this;\n",
  3960. "\n",
  3961. " var nav_element = $('<div/>')\n",
  3962. " nav_element.attr('style', 'width: 100%');\n",
  3963. " this.root.append(nav_element);\n",
  3964. "\n",
  3965. " // Define a callback function for later on.\n",
  3966. " function toolbar_event(event) {\n",
  3967. " return fig.toolbar_button_onclick(event['data']);\n",
  3968. " }\n",
  3969. " function toolbar_mouse_event(event) {\n",
  3970. " return fig.toolbar_button_onmouseover(event['data']);\n",
  3971. " }\n",
  3972. "\n",
  3973. " for(var toolbar_ind in mpl.toolbar_items){\n",
  3974. " var name = mpl.toolbar_items[toolbar_ind][0];\n",
  3975. " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
  3976. " var image = mpl.toolbar_items[toolbar_ind][2];\n",
  3977. " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
  3978. "\n",
  3979. " if (!name) { continue; };\n",
  3980. "\n",
  3981. " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
  3982. " button.click(method_name, toolbar_event);\n",
  3983. " button.mouseover(tooltip, toolbar_mouse_event);\n",
  3984. " nav_element.append(button);\n",
  3985. " }\n",
  3986. "\n",
  3987. " // Add the status bar.\n",
  3988. " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
  3989. " nav_element.append(status_bar);\n",
  3990. " this.message = status_bar[0];\n",
  3991. "\n",
  3992. " // Add the close button to the window.\n",
  3993. " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
  3994. " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
  3995. " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
  3996. " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
  3997. " buttongrp.append(button);\n",
  3998. " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
  3999. " titlebar.prepend(buttongrp);\n",
  4000. "}\n",
  4001. "\n",
  4002. "mpl.figure.prototype._root_extra_style = function(el){\n",
  4003. " var fig = this\n",
  4004. " el.on(\"remove\", function(){\n",
  4005. "\tfig.close_ws(fig, {});\n",
  4006. " });\n",
  4007. "}\n",
  4008. "\n",
  4009. "mpl.figure.prototype._canvas_extra_style = function(el){\n",
  4010. " // this is important to make the div 'focusable\n",
  4011. " el.attr('tabindex', 0)\n",
  4012. " // reach out to IPython and tell the keyboard manager to turn it's self\n",
  4013. " // off when our div gets focus\n",
  4014. "\n",
  4015. " // location in version 3\n",
  4016. " if (IPython.notebook.keyboard_manager) {\n",
  4017. " IPython.notebook.keyboard_manager.register_events(el);\n",
  4018. " }\n",
  4019. " else {\n",
  4020. " // location in version 2\n",
  4021. " IPython.keyboard_manager.register_events(el);\n",
  4022. " }\n",
  4023. "\n",
  4024. "}\n",
  4025. "\n",
  4026. "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
  4027. " var manager = IPython.notebook.keyboard_manager;\n",
  4028. " if (!manager)\n",
  4029. " manager = IPython.keyboard_manager;\n",
  4030. "\n",
  4031. " // Check for shift+enter\n",
  4032. " if (event.shiftKey && event.which == 13) {\n",
  4033. " this.canvas_div.blur();\n",
  4034. " event.shiftKey = false;\n",
  4035. " // Send a \"J\" for go to next cell\n",
  4036. " event.which = 74;\n",
  4037. " event.keyCode = 74;\n",
  4038. " manager.command_mode();\n",
  4039. " manager.handle_keydown(event);\n",
  4040. " }\n",
  4041. "}\n",
  4042. "\n",
  4043. "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
  4044. " fig.ondownload(fig, null);\n",
  4045. "}\n",
  4046. "\n",
  4047. "\n",
  4048. "mpl.find_output_cell = function(html_output) {\n",
  4049. " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
  4050. " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
  4051. " // IPython event is triggered only after the cells have been serialised, which for\n",
  4052. " // our purposes (turning an active figure into a static one), is too late.\n",
  4053. " var cells = IPython.notebook.get_cells();\n",
  4054. " var ncells = cells.length;\n",
  4055. " for (var i=0; i<ncells; i++) {\n",
  4056. " var cell = cells[i];\n",
  4057. " if (cell.cell_type === 'code'){\n",
  4058. " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
  4059. " var data = cell.output_area.outputs[j];\n",
  4060. " if (data.data) {\n",
  4061. " // IPython >= 3 moved mimebundle to data attribute of output\n",
  4062. " data = data.data;\n",
  4063. " }\n",
  4064. " if (data['text/html'] == html_output) {\n",
  4065. " return [cell, data, j];\n",
  4066. " }\n",
  4067. " }\n",
  4068. " }\n",
  4069. " }\n",
  4070. "}\n",
  4071. "\n",
  4072. "// Register the function which deals with the matplotlib target/channel.\n",
  4073. "// The kernel may be null if the page has been refreshed.\n",
  4074. "if (IPython.notebook.kernel != null) {\n",
  4075. " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
  4076. "}\n"
  4077. ],
  4078. "text/plain": [
  4079. "<IPython.core.display.Javascript object>"
  4080. ]
  4081. },
  4082. "metadata": {},
  4083. "output_type": "display_data"
  4084. },
  4085. {
  4086. "data": {
  4087. "text/html": [
  4088. "<img src=\"data:image/png;base64,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voAnj6EjgAACCCCAAAIIIECg5xpAAAEEEEAAAQQQQKCABQj0BTx5DB0BBBBAAAEEEEAAAQI91wACCCCAAAIIIIAAAgUsQKAv4Mlj6AgggAACCCCAAAIIEOi5BhBAAAEEEEAAAQQQKGABAn0BTx5DRwABBBBAAAEEEECAQM81gAACCCCAAAIIIIBAAQsQ6At48hg6AggggAACCCCAAAIEeq4BBBBAAAEEEEAAAQQKWIBAX8CTx9ARQAABBBBAAAEEECDQcw0ggAACCCCAAAIIIFDAAgT6Ap48ho4AAggggAACCCCAAIGeawABBBBAAAEEEEAAgQIWINAX8OQxdAQQQAABBBBAAAEECPRcAwgggAACCCCAAAIIFLAAgb6AJ4+hI4AAAggggAACCCBAoOcaQAABBBBAAAEEEECggAUI9AU8eQwdAQQQQAABBBBAAAECPdcAAggggAACCCCAAAIFLECgL+DJY+gIIIAAAggggAACCBDouQYQQAABBBBAAAEEEChgAQJ9AU8eQ0cAAQQQQAABBBBAgEDPNYAAAggggAACCCCAQAELEOgLePIYOgIIIIAAAggggAACBHquAQQQQAABBBBAAAEECliAQF/Ak8fQEUAAAQQQQAABBBAg0HMNIIAAAggggAACCCBQwAIE+gKePIaOAAIIIIAAAggggACBnmsAAQQQQAABBBBAAIECFiDQF/DkMXQEEEAAAQQQQAABBAj0XAMIIIAAAggggAACCBSwAIG+gCePoSOAAAIIIIAAAggg8P8BWAM0YVQOkbYAAAAASUVORK5CYII=\" width=\"432\">"
  4089. ],
  4090. "text/plain": [
  4091. "<IPython.core.display.HTML object>"
  4092. ]
  4093. },
  4094. "metadata": {},
  4095. "output_type": "display_data"
  4096. }
  4097. ],
  4098. "source": [
  4099. "%matplotlib nbagg\n",
  4100. "\n",
  4101. "import matplotlib.pyplot as plt\n",
  4102. "import matplotlib.animation as animation\n",
  4103. "\n",
  4104. "n_epoch = 3000 # epoch size\n",
  4105. "a, b = 1, 1 # initial parameters\n",
  4106. "epsilon = 0.001 # learning rate\n",
  4107. "\n",
  4108. "fig = plt.figure()\n",
  4109. "imgs = []\n",
  4110. "\n",
  4111. "for i in range(n_epoch):\n",
  4112. " for j in range(N):\n",
  4113. " a = a + epsilon*2*(Y[j] - a*X[j] - b)*X[j]\n",
  4114. " b = b + epsilon*2*(Y[j] - a*X[j] - b)\n",
  4115. "\n",
  4116. " L = 0\n",
  4117. " for j in range(N):\n",
  4118. " L = L + (Y[j]-a*X[j]-b)**2\n",
  4119. " #print(\"epoch %4d: loss = %f, a = %f, b = %f\" % (i, L, a, b))\n",
  4120. " \n",
  4121. " if i % 50 == 0:\n",
  4122. " x_min = np.min(X)\n",
  4123. " x_max = np.max(X)\n",
  4124. " y_min = a * x_min + b\n",
  4125. " y_max = a * x_max + b\n",
  4126. "\n",
  4127. " img = plt.scatter(X, Y, label='original data')\n",
  4128. " img = plt.plot([x_min, x_max], [y_min, y_max], 'r', label='model')\n",
  4129. " imgs.append(img)\n",
  4130. " \n",
  4131. "ani = animation.ArtistAnimation(fig, imgs)\n",
  4132. "plt.show()"
  4133. ]
  4134. },
  4135. {
  4136. "cell_type": "markdown",
  4137. "metadata": {},
  4138. "source": [
  4139. "## How to use batch update method?\n",
  4140. "\n",
  4141. "If some data is outliear, then only use one data can make the learning inaccuracy and slow.\n",
  4142. "\n",
  4143. "\n",
  4144. "* [梯度下降方法的几种形式](https://blog.csdn.net/u010402786/article/details/51188876)"
  4145. ]
  4146. },
  4147. {
  4148. "cell_type": "markdown",
  4149. "metadata": {},
  4150. "source": [
  4151. "## How to fit polynomial function?\n",
  4152. "\n",
  4153. "If we observe a missle at some time, then how to estimate the trajectory? Acoording the physical theory, the trajectory can be formulated as:\n",
  4154. "$$\n",
  4155. "y = at^2 + bt + c\n",
  4156. "$$\n",
  4157. "The we need at least three data to compute the parameters $a, b, c$.\n",
  4158. "\n",
  4159. "$$\n",
  4160. "L = \\sum_{i=1}^N (y_i - at^2 - bt - c)^2\n",
  4161. "$$\n"
  4162. ]
  4163. },
  4164. {
  4165. "cell_type": "code",
  4166. "execution_count": 3,
  4167. "metadata": {},
  4168. "outputs": [
  4169. {
  4170. "data": {
  4171. "image/png": "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\n",
  4172. "text/plain": [
  4173. "<Figure size 432x288 with 1 Axes>"
  4174. ]
  4175. },
  4176. "metadata": {
  4177. "needs_background": "light"
  4178. },
  4179. "output_type": "display_data"
  4180. }
  4181. ],
  4182. "source": [
  4183. "t = np.array([2, 4, 6, 8])\n",
  4184. "#t = np.linspace(0, 10)\n",
  4185. "\n",
  4186. "pa = -20\n",
  4187. "pb = 90\n",
  4188. "pc = 800\n",
  4189. "\n",
  4190. "y = pa*t**2 + pb*t + pc\n",
  4191. "\n",
  4192. "\n",
  4193. "plt.scatter(t, y)\n",
  4194. "plt.show()"
  4195. ]
  4196. },
  4197. {
  4198. "cell_type": "markdown",
  4199. "metadata": {},
  4200. "source": [
  4201. "### How to get the update items?\n",
  4202. "\n",
  4203. "$$\n",
  4204. "L = \\sum_{i=1}^N (y_i - at^2 - bt - c)^2\n",
  4205. "$$\n",
  4206. "\n",
  4207. "\\begin{eqnarray}\n",
  4208. "\\frac{\\partial L}{\\partial a} & = & - 2\\sum_{i=1}^N (y_i - at^2 - bt -c) t^2 \\\\\n",
  4209. "\\frac{\\partial L}{\\partial b} & = & - 2\\sum_{i=1}^N (y_i - at^2 - bt -c) t \\\\\n",
  4210. "\\frac{\\partial L}{\\partial c} & = & - 2\\sum_{i=1}^N (y_i - at^2 - bt -c)\n",
  4211. "\\end{eqnarray}"
  4212. ]
  4213. },
  4214. {
  4215. "cell_type": "markdown",
  4216. "metadata": {},
  4217. "source": [
  4218. "## How to use sklearn to solve linear problem?\n",
  4219. "\n"
  4220. ]
  4221. },
  4222. {
  4223. "cell_type": "code",
  4224. "execution_count": 4,
  4225. "metadata": {},
  4226. "outputs": [
  4227. {
  4228. "name": "stdout",
  4229. "output_type": "stream",
  4230. "text": [
  4231. "a = 949.435260, b = 152.133484\n"
  4232. ]
  4233. },
  4234. {
  4235. "data": {
  4236. "image/png": "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\n",
  4237. "text/plain": [
  4238. "<Figure size 432x288 with 1 Axes>"
  4239. ]
  4240. },
  4241. "metadata": {
  4242. "needs_background": "light"
  4243. },
  4244. "output_type": "display_data"
  4245. }
  4246. ],
  4247. "source": [
  4248. "from sklearn import linear_model\n",
  4249. "\n",
  4250. "# load data\n",
  4251. "d = datasets.load_diabetes()\n",
  4252. "\n",
  4253. "X = d.data[:, np.newaxis, 2]\n",
  4254. "Y = d.target\n",
  4255. "\n",
  4256. "# create regression model\n",
  4257. "regr = linear_model.LinearRegression()\n",
  4258. "regr.fit(X, Y)\n",
  4259. "\n",
  4260. "a, b = regr.coef_, regr.intercept_\n",
  4261. "print(\"a = %f, b = %f\" % (a, b))\n",
  4262. "\n",
  4263. "x_min = np.min(X)\n",
  4264. "x_max = np.max(X)\n",
  4265. "y_min = a * x_min + b\n",
  4266. "y_max = a * x_max + b\n",
  4267. "\n",
  4268. "plt.scatter(X, Y)\n",
  4269. "plt.plot([x_min, x_max], [y_min, y_max], 'r')\n",
  4270. "plt.show()"
  4271. ]
  4272. },
  4273. {
  4274. "cell_type": "markdown",
  4275. "metadata": {},
  4276. "source": [
  4277. "## How to use sklearn to fit polynomial function?"
  4278. ]
  4279. },
  4280. {
  4281. "cell_type": "code",
  4282. "execution_count": 6,
  4283. "metadata": {},
  4284. "outputs": [
  4285. {
  4286. "data": {
  4287. "text/plain": [
  4288. "array([800., 90., -20.])"
  4289. ]
  4290. },
  4291. "execution_count": 6,
  4292. "metadata": {},
  4293. "output_type": "execute_result"
  4294. }
  4295. ],
  4296. "source": [
  4297. "# Fitting polynomial functions\n",
  4298. "\n",
  4299. "from sklearn.preprocessing import PolynomialFeatures\n",
  4300. "from sklearn.linear_model import LinearRegression\n",
  4301. "from sklearn.pipeline import Pipeline\n",
  4302. "\n",
  4303. "t = np.array([2, 4, 6, 8])\n",
  4304. "\n",
  4305. "pa = -20\n",
  4306. "pb = 90\n",
  4307. "pc = 800\n",
  4308. "\n",
  4309. "y = pa*t**2 + pb*t + pc\n",
  4310. "\n",
  4311. "model = Pipeline([('poly', PolynomialFeatures(degree=2)),\n",
  4312. " ('linear', LinearRegression(fit_intercept=False))])\n",
  4313. "model = model.fit(t[:, np.newaxis], y)\n",
  4314. "model.named_steps['linear'].coef_\n"
  4315. ]
  4316. },
  4317. {
  4318. "cell_type": "markdown",
  4319. "metadata": {},
  4320. "source": [
  4321. "## How to estimate some missing value by the model?\n"
  4322. ]
  4323. },
  4324. {
  4325. "cell_type": "code",
  4326. "execution_count": 9,
  4327. "metadata": {
  4328. "lines_to_next_cell": 0
  4329. },
  4330. "outputs": [
  4331. {
  4332. "name": "stdout",
  4333. "output_type": "stream",
  4334. "text": [
  4335. "Y_est = [148.6844971 167.17376752 174.36403934 195.93485483 109.65159289\n",
  4336. " 120.95059148 245.23957594 204.15230835 269.89193649 75.75459712\n",
  4337. " 241.13084918 104.51568444 141.49422527 126.08649992 208.26103511\n",
  4338. " 233.94057735 151.76604217 158.956314 161.01067738 228.8046689\n",
  4339. " 220.58721538 129.16804499 100.40695768 117.86904641 168.2009492\n",
  4340. " 226.75030552 114.78750134 163.06504076 113.76031965 119.92340979\n",
  4341. " 157.92913231 237.02212242 120.95059148 98.3525943 123.00495485\n",
  4342. " 205.17949004 95.27104923 153.82040555 130.19522668 81.91768726\n",
  4343. " 171.28249427 137.38549851 137.38549851 189.77176469 82.94486895]\n",
  4344. "Y_test = [198. 242. 232. 175. 93. 168. 275. 293. 281. 72. 140. 189. 181. 209.\n",
  4345. " 136. 261. 113. 131. 174. 257. 55. 84. 42. 146. 212. 233. 91. 111.\n",
  4346. " 152. 120. 67. 310. 94. 183. 66. 173. 72. 49. 64. 48. 178. 104.\n",
  4347. " 132. 220. 57.]\n",
  4348. "err = 8.437628 (56.601327), score = 0.422889\n",
  4349. "a = 953.024850, b = 152.544562\n"
  4350. ]
  4351. },
  4352. {
  4353. "data": {
  4354. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzsnXt4FOX1xz/vhg0kYgkCCgQQ6g1FMFGgIFAFKqgopqJQL1V/VbHWqlgLBEohIkqUKkq9It5FDQpEFLyDWqgUuQQUAREFIYBcA0JCskne3x+zs9nLzOzs7mx2k7yf5+EhmZ2ZfWc2e+a85z3ne4SUEoVCoVDUX1yJHoBCoVAo4osy9AqFQlHPUYZeoVAo6jnK0CsUCkU9Rxl6hUKhqOcoQ69QKBT1HGXoFQqFop6jDL1CoVDUc5ShVygUinpOo0QPAKBly5ayY8eOiR6GQqFQ1ClWrVq1T0rZKtx+SWHoO3bsyMqVKxM9DIVCoahTCCG22dlPhW4UCoWinqMMvUKhUNRzwhp6IUQTIcQKIcRaIcR6IcR93u0vCSF+FEIUef9lebcLIcQMIcT3Qoh1Qohz430RCoVCoTDHToy+HBggpTwihHADS4UQ73tfGy2lfDto/0uA07z/fgM87f0/IjweDzt27ODYsWORHqowoEmTJrRr1w63253ooSgUilomrKGXmmD9Ee+vbu8/KxH7K4BXvMctF0JkCCHaSCl3RTKwHTt2cPzxx9OxY0eEEJEcqghCSsn+/fvZsWMHnTp1SvRwFApFLWMrRi+ESBFCFAF7gI+llP/zvvSANzwzXQjR2LstE9jud/gO77aIOHbsGC1atFBG3gGEELRo0ULNjhSKKClcU0yf/MV0yl1In/zFFK4pTvSQIsKWoZdSVkkps4B2QE8hxNnAOKAz0AM4ARgbyRsLIUYKIVYKIVbu3bvXbJ9ITqmwQN1LhSI6CtcUM27e1xSXlCGB4pIyxs37uk4Z+4iybqSUJcAS4GIp5S6pUQ68CPT07lYMtPc7rJ13W/C5Zkopu0spu7dqFTbfX6FQKBLCtA83UeapCthW5qli2oebEjSiyLGTddNKCJHh/TkNuAjYKIRo490mgBzgG+8hC4AbvNk3vYBDkcbn6yMdO3Zk3759Me+jUNRnkjFEsrOkLKLtyYidrJs2wMtCiBS0B8McKeV7QojFQohWgACKgD97918EXAp8D5QC/+f8sBUKRX1DD5Ho3rMeIgHIyY54mc8x2makUWxg1NtmpCVgNNER1qOXUq6TUmZLKbtJKc+WUk72bh8gpezq3Xa9lPKId7uUUt4hpTzF+3qd1TbYunUrnTt35qabbuL000/nuuuu45NPPqFPnz6cdtpprFixggMHDpCTk0O3bt3o1asX69atA2D//v0MGjSILl26cMstt6AlIWm89tpr9OzZk6ysLG677TaqqqrMhqBQNBiSNUQyevAZpLlTAraluVMYPfiMBI0ocpJC6yYso0ZBUZGz58zKgsceC7vb999/z1tvvcULL7xAjx49eP3111m6dCkLFizgwQcfpH379mRnZ1NYWMjixYu54YYbKCoq4r777qNv375MnDiRhQsX8vzzzwOwYcMGCgoKWLZsGW63m7/85S/Mnj2bG264wdnrUygSQOGaYqZ9uImdJWW0zUhj9OAzbHvjyRoi0ccf7XUlA3XD0CeQTp060bVrVwC6dOnCwIEDEULQtWtXtm7dyrZt25g7dy4AAwYMYP/+/Rw+fJgvvviCefPmATBkyBCaN28OwKeffsqqVavo0aMHAGVlZZx44okJuDKFwlliDb0kc4gkJzuzThn2YOqGobfheceLxo0b+352uVy+310uF5WVlRFXmkopufHGG5k6daqj41QoEo1V6MWOkRw9+IyABwXUvRBJsqJEzWKkX79+zJ49G4DPPvuMli1b8qtf/Yrf/va3vP766wC8//77HDx4EICBAwfy9ttvs2fPHgAOHDjAtm22lEYVigCSLUMl1tBLTnYmU6/sSmZGGgLIzEhj6pVd67QnnSzUDY8+icnLy+NPf/oT3bp1Iz09nZdffhmASZMmcc0119ClSxfOP/98OnToAMBZZ53FlClTGDRoENXV1bjdbp588klOPvnkRF6Goo6RjBkqToRe6nqIJFkR/tkgiaJ79+4yuPHIhg0bOPPMMxM0ovqJuqf1hz75iw2NamZGGstyByRgRKEPH9BCL8orjx9CiFVSyu7h9lMevUJRB0nGDJX6kJ1SX1GGXqGogyRrhooKvSQnajFWoaiD1IciHkXtoTx6haIOosIkikhQhl6hqKMkKkwSS/WrIjEoQ69QKGyTjGmdivCoGL0JJSUlPPXUU1Ede+mll1JSUhL1ezdt2tTy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\n",
  4355. "text/plain": [
  4356. "<Figure size 432x288 with 1 Axes>"
  4357. ]
  4358. },
  4359. "metadata": {
  4360. "needs_background": "light"
  4361. },
  4362. "output_type": "display_data"
  4363. }
  4364. ],
  4365. "source": [
  4366. "# load data\n",
  4367. "d = datasets.load_diabetes()\n",
  4368. "\n",
  4369. "N = d.target.shape[0]\n",
  4370. "N_train = int(N*0.9)\n",
  4371. "N_test = N - N_train\n",
  4372. "\n",
  4373. "X = d.data[:N_train, np.newaxis, 2]\n",
  4374. "Y = d.target[:N_train]\n",
  4375. "\n",
  4376. "X_test = d.data[N_train:, np.newaxis, 2]\n",
  4377. "Y_test = d.target[N_train:]\n",
  4378. "\n",
  4379. "# create regression model\n",
  4380. "regr = linear_model.LinearRegression()\n",
  4381. "regr.fit(X, Y)\n",
  4382. "\n",
  4383. "Y_est = regr.predict(X_test)\n",
  4384. "print(\"Y_est = \", Y_est)\n",
  4385. "print(\"Y_test = \", Y_test)\n",
  4386. "err = (Y_est - Y_test)**2\n",
  4387. "err2 = sklearn.metrics.mean_squared_error(Y_test, Y_est)\n",
  4388. "score = regr.score(X_test, Y_test)\n",
  4389. "print(\"err = %f (%f), score = %f\" % (np.sqrt(np.sum(err))/N_test, np.sqrt(err2), score))\n",
  4390. "\n",
  4391. "\n",
  4392. "# plot data\n",
  4393. "a, b = regr.coef_, regr.intercept_\n",
  4394. "print(\"a = %f, b = %f\" % (a, b))\n",
  4395. "\n",
  4396. "x_min = np.min(X)\n",
  4397. "x_max = np.max(X)\n",
  4398. "y_min = a * x_min + b\n",
  4399. "y_max = a * x_max + b\n",
  4400. "\n",
  4401. "\n",
  4402. "plt.scatter(X, Y, label='train data')\n",
  4403. "plt.scatter(X_test, Y_test, label='test data')\n",
  4404. "plt.plot([x_min, x_max], [y_min, y_max], 'r', label='model')\n",
  4405. "plt.legend()\n",
  4406. "plt.show()"
  4407. ]
  4408. },
  4409. {
  4410. "cell_type": "code",
  4411. "execution_count": null,
  4412. "metadata": {
  4413. "lines_to_next_cell": 2
  4414. },
  4415. "outputs": [],
  4416. "source": []
  4417. }
  4418. ],
  4419. "metadata": {
  4420. "kernelspec": {
  4421. "display_name": "Python 3",
  4422. "language": "python",
  4423. "name": "python3"
  4424. },
  4425. "language_info": {
  4426. "codemirror_mode": {
  4427. "name": "ipython",
  4428. "version": 3
  4429. },
  4430. "file_extension": ".py",
  4431. "mimetype": "text/x-python",
  4432. "name": "python",
  4433. "nbconvert_exporter": "python",
  4434. "pygments_lexer": "ipython3",
  4435. "version": "3.5.2"
  4436. }
  4437. },
  4438. "nbformat": 4,
  4439. "nbformat_minor": 2
  4440. }

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。