1. Test Modules
  2. Training Characteristics
    1. Input Learning
      1. Gradient Descent
      2. Conjugate Gradient Descent
      3. Limited-Memory BFGS
    2. Model Learning
      1. Gradient Descent
      2. Conjugate Gradient Descent
      3. Limited-Memory BFGS
    3. Composite Learning
      1. Gradient Descent
      2. Conjugate Gradient Descent
      3. Limited-Memory BFGS
    4. Results
  3. Results

Subreport: Logs for com.simiacryptus.ref.lang.ReferenceCountingBase

Test Modules

Using Seed 2688660619415987200

Training Characteristics

Input Learning

In this apply, we use a network to learn this target input, given it's pre-evaluated output:

TrainingTester.java:332 executed in 0.03 seconds (0.000 gc):

    return RefArrays.stream(RefUtil.addRef(input_target)).flatMap(RefArrays::stream).map(x -> {
      try {
        return x.prettyPrint();
      } finally {
        x.freeRef();
      }
    }).reduce((a, b) -> a + "\n" + b).orElse("");

Returns

    [
    	[ [ -0.2487436747030054 ], [ -0.7954669194666464 ], [ 0.03927487301954513 ], [ 0.07316958027913123 ], [ -0.001994248656040032 ], [ -0.6168532960842004 ], [ 0.619420610677301 ], [ 0.1985074154521369 ], ... ],
    	[ [ -0.943813806499749 ], [ -0.282691251281203 ], [ 0.819577843068068 ], [ 0.7737548526951008 ], [ -0.8626625002699031 ], [ -0.7527143943372332 ], [ 0.06228272354736686 ], [ -0.8957578309075327 ], ... ],
    	[ [ 0.9566763853745643 ], [ 0.5259252826302663 ], [ -0.4121433697800845 ], [ -0.09417657145668956 ], [ 0.43236425664266775 ], [ -0.10160567345429938 ], [ 0.8147670976906956 ], [ 0.961951379851901 ], ... ],
    	[ [ -0.018824756987360747 ], [ -0.9793178888462042 ], [ 0.11599366387152354 ], [ 0.39720359025298624 ], [ -0.47056422499473616 ], [ -0.7180887431360956 ], [ -0.9351175875836875 ], [ -0.7061304895161928 ], ... ],
    	[ [ 0.8394097451514462 ], [ 0.8339479882119214 ], [ -0.25441772164144605 ], [ -0.8857140178236591 ], [ 0.659623053336216 ], [ 0.21946516389756465 ], [ 0.05399141770543214 ], [ 0.9120035269698226 ], ... ],
    	[ [ -0.2833982905222794 ], [ 0.9606594457526341 ], [ -0.8523122781713126 ], [ 0.4663710531020744 ], [ -0.2430864381684068 ], [ 0.5679762670460804 ], [ 0.6903008783186206 ], [ 0.2618073695801377 ], ... ],
    	[ [ 0.6438556946739293 ], [ 0.4806701188337177 ], [ -0.1361526460276199 ], [ 0.827493288983717 ], [ 0.21716234752888575 ], [ -0.1972984232224111 ], [ -0.2394422857416818 ], [ -0.8655051292212086 ], ... ],
    	[ [ -0.8008999939571555 ], [ -0.36226771829552096 ], [ -0.6333640955085735 ], [ 0.14638666006748435 ], [ -0.02147632279846068 ], [ -0.7900575822932072 ], [ 0.25609458429510856 ], [ 0.7887591926618962 ], ... ],
    	...
    ]
    [
    	[ [ 0.6317672092058371 ], [ 0.04166666751888104 ], [ -0.19652234155580128 ], [ -0.10657915154849307 ], [ -0.08789588515827274 ], [ 0.348746048098205 ], [ -0.25690848473619465 ], [ -0.6020882675125334 ], ... ],
    	[ [ 0.11159494412248128 ], [ 0.25967533110190666 ], [ 0.3167758174500668 ], [ 0.23061881270495288 ], [ 0.10876127988396611 ], [ 0.7495821935812563 ], [ -0.47827771234945526 ], [ 0.5519968542038727 ], ... ],
    	[ [ 0.8385970613056588 ], [ -0.8002653953825014 ], [ -0.37066463567654284 ], [ -0.1859193752429782 ], [ 0.03601117075202853 ], [ 0.6300121903324938 ], [ -0.9351498395399149 ], [ -0.8936803829798319 ], ... ],
    	[ [ -0.7672885700394088 ], [ -0.11964210700410383 ], [ -0.4590087214128735 ], [ 0.8114675368299407 ], [ -0.22276515252577744 ], [ -0.41572317466393827 ], [ 0.7779952536132089 ], [ 0.4637800392586906 ], ... ],
    	[ [ 0.30330491490707545 ], [ 0.34641359251318926 ], [ 0.6011510623557645 ], [ 0.2007676936122118 ], [ -0.7991090169316297 ], [ 0.1835337847909697 ], [ -0.246027510777997 ], [ -0.1646585530080753 ], ... ],
    	[ [ -0.42549103989181036 ], [ 0.6328930583376025 ], [ 0.7138693232334745 ], [ 0.6361622344956122 ], [ 0.896427250563872 ], [ -0.2737433553810995 ], [ -0.35239956924306504 ], [ 0.9417024532539335 ], ... ],
    	[ [ -0.5019546462618105 ], [ -0.5909298078899561 ], [ 0.5478182022473699 ], [ -0.5731366878927526 ], [ 0.2563289605806771 ], [ -0.7602766301017194 ], [ -0.8542684032318044 ], [ 0.39772502139869825 ], ... ],
    	[ [ -0.2649611970020749 ], [ -0.33303928595698196 ], [ -0.11225479028819585 ], [ 0.5722442385681901 ], [ -0.9045421933913329 ], [ -0.19198356421218943 ], [ -0.7626451659038305 ], [ -0.9943458426126139 ], ... ],
    	...
    ]
    [
    	[ [ 0.8651846266992562 ], [ 0.5082705028084287 ], [ -0.5666171388879935 ], [ -0.23352058271131937 ], [ -0.8723932407348658 ], [ 0.05528787658881229 ], [ 0.5671265956856271 ], [ 0.7673350478513099 ], ... ],
    	[ [ -0.6694425910253772 ], [ 0.8419132860210163 ], [ -0.06597740369303273 ], [ 0.6509265554993184 ], [ -0.54867141556237 ], [ 0.5763206572308299 ], [ -0.5642728437937423 ], [ -0.9565987810296104 ], ... ],
    	[ [ -0.08529411309777424 ], [ 0.02255196706453355 ], [ -0.7513953973302117 ], [ -0.1090077302378385 ], [ -0.5408757028071802 ], [ 0.03950839501173009 ], [ -0.7224478425348226 ], [ 0.816718356560109 ], ... ],
    	[ [ -0.07602018395051235 ], [ -0.5474762573905785 ], [ 0.7489997891056535 ], [ -0.2860131118918492 ], [ 0.6668113018154673 ], [ -0.37553228484240897 ], [ 0.17780171830966873 ], [ -0.7849848712238028 ], ... ],
    	[ [ 0.8548470260482242 ], [ -0.9915511761078442 ], [ -0.10615779085996402 ], [ -0.2619333462837026 ], [ 0.05371731168186655 ], [ 0.3389079246302744 ], [ 0.47894212649538015 ], [ 0.2623507264111049 ], ... ],
    	[ [ 0.6225939454572686 ], [ 0.5406854033587514 ], [ -0.44736021701748574 ], [ -0.02797022645643321 ], [ -0.8389611428498498 ], [ 0.3072628487020794 ], [ 0.2519043807165555 ], [ -0.8952263949292789 ], ... ],
    	[ [ 0.5521241245538397 ], [ -0.26646763172522525 ], [ 0.7565905367433203 ], [ -0.6741192995009844 ], [ -0.7940156709381214 ], [ 0.7715976794230492 ], [ -0.4786520400658323 ], [ 0.4298838754336092 ], ... ],
    	[ [ -0.5589590853209667 ], [ -0.4675720516770907 ], [ 0.8883158970959086 ], [ -0.3178615526042441 ], [ 0.7164194727404187 ], [ 0.8546959556951168 ], [ -0.2827326401842596 ], [ -0.622839569132658 ], ... ],
    	...
    ]
    [
    	[ [ -0.8916436005102333 ], [ -0.9523484472498227 ], [ 0.1699907368605602 ], [ -0.091589159385002 ], [ 0.3080606891252442 ], [ 0.6351665608079815 ], [ -0.35800992415743105 ], [ 0.6562968460428096 ], ... ],
    	[ [ -0.26399971632215724 ], [ 0.15041964512378003 ], [ 0.9605509525269154 ], [ 0.6230699664493347 ], [ -0.9589717432163971 ], [ -0.16820525862940494 ], [ -0.1849690095790668 ], [ -0.17865313197737498 ], ... ],
    	[ [ -0.7546639901066152 ], [ -0.04670688475432838 ], [ 0.7119189162093158 ], [ -0.5880010850604951 ], [ 0.17267419909329074 ], [ -0.21936900646057556 ], [ -0.48104432608919767 ], [ 0.609837673095392 ], ... ],
    	[ [ 0.7413854337744932 ], [ 0.8961543667577603 ], [ -0.2930140978290112 ], [ -0.697820875139509 ], [ 0.233184442686166 ], [ -0.7103954548585709 ], [ 0.7730284997357253 ], [ 0.6750731939263226 ], ... ],
    	[ [ 0.09939615464044915 ], [ 0.5733573503325655 ], [ -0.5740922096880305 ], [ 0.4296821525119747 ], [ -0.11965270221959168 ], [ -0.05181565336287619 ], [ -0.178533398067237 ], [ 0.5621042208517129 ], ... ],
    	[ [ 0.41878710047042933 ], [ -0.7382967000136815 ], [ -0.5608289078132564 ], [ 0.8227835854102847 ], [ -0.2921501129680384 ], [ 0.15471826267916255 ], [ 0.4657210325046246 ], [ 0.8534667070042665 ], ... ],
    	[ [ -0.5984975524761014 ], [ -0.6030024680123718 ], [ 0.5342406408397775 ], [ 0.06410907205815719 ], [ -0.5473152711848204 ], [ -0.6180618663465733 ], [ -0.8168913971372125 ], [ -0.7898359211551615 ], ... ],
    	[ [ -0.2657126578908342 ], [ -0.4299445605530501 ], [ 0.9800386992400025 ], [ 0.3115007582792042 ], [ -0.3378492223961671 ], [ -0.9211413335764298 ], [ -0.11041872958236776 ], [ -0.6497979750186855 ], ... ],
    	...
    ]
    [
    	[ [ -0.8507694305754683 ], [ 0.004861990251669113 ], [ -0.8736008837919755 ], [ -0.7819374677440456 ], [ 0.5914357528262371 ], [ 0.10842262182017737 ], [ -0.4187772170359403 ], [ 0.05565544142062251 ], ... ],
    	[ [ -0.2671761324189976 ], [ 0.022867462276725092 ], [ 0.8254104651045593 ], [ -0.6513382782945454 ], [ 0.09096189978638325 ], [ -0.802583382498586 ], [ -0.230770434611701 ], [ 0.2966943901140857 ], ... ],
    	[ [ -0.1491530927679574 ], [ -0.8982887674038316 ], [ -0.10279896853969128 ], [ 0.8856843856622307 ], [ 0.05351953965422829 ], [ -0.4723444900687641 ], [ -0.6771703839355594 ], [ -0.35964285651621686 ], ... ],
    	[ [ 0.8413273816171354 ], [ -0.6480476366406605 ], [ 0.4774292448993529 ], [ -0.8995649201378169 ], [ -0.7968917220945799 ], [ 0.17223001528653437 ], [ 0.4560620873188248 ], [ -0.7864738733292602 ], ... ],
    	[ [ -0.8234960922513053 ], [ -0.9002321707248526 ], [ 0.5413903189545637 ], [ 0.36332629748188583 ], [ -0.1837562679733411 ], [ 0.2233888379599671 ], [ 0.8275848211697163 ], [ 0.22964792727376948 ], ... ],
    	[ [ 0.141655250232688 ], [ 0.06482185643414917 ], [ 0.020278692157245315 ], [ -0.5351992810588997 ], [ -0.18143435200332103 ], [ -0.6592750585032621 ], [ 0.7560758333937456 ], [ 0.008871312990554658 ], ... ],
    	[ [ -0.3622349207975393 ], [ -0.5873071359026321 ], [ 0.8548874919247436 ], [ -0.852819198673572 ], [ 0.4519755484099319 ], [ -0.31621219768148734 ], [ -0.035270706290282394 ], [ -0.0968735711654416 ], ... ],
    	[ [ 0.8365630826405037 ], [ -0.571315395001758 ], [ 0.3385162184889352 ], [ -0.131032897261933 ], [ 0.6098167825562386 ], [ 0.63857420373966 ], [ -0.24481715499495227 ], [ 0.3775857868771002 ], ... ],
    	...
    ]

Gradient Descent

First, we train using basic gradient descent method apply weak line search conditions.

TrainingTester.java:480 executed in 2.33 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new ArmijoWolfeSearch());
      iterativeTrainer.setOrientation(new GradientDescent());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4889096840472
BACKPROP_AGG_SIZE = 3
THREADS = 64
SINGLE_THREADED = false
Initialized CoreSettings = {
"backpropAggregationSize" : 3,
"jvmThreads" : 64,
"singleThreaded" : false
}
Reset training subject: 4889177699891
Constructing line search parameters: GD
th(0)=3284.2265118573114;dx=-251.10023329819165
New Minimum: 3284.2265118573114 > 2719.920347673061
WOLFE (weak): th(2.154434690031884)=2719.920347673061; dx=-269.2621944383614 evalInputDelta=564.3061641842505
New Minimum: 2719.920347673061 > 2166.9736492298534
WOLFE (weak): th(4.308869380063768)=2166.9736492298534; dx=-271.8956975225005 evalInputDelta=1117.252862627458
New Minimum: 2166.9736492298534 > 1064.2158343434846
WOLFE (weak): th(12.926608140191302)=1064.2158343434846; dx=-298.68216870403194 evalInputDelta=2220.0106775138265
New Minimum: 1064.2158343434846 > 328.39236349862347
WOLFE (weak): th(51.70643256076521)=328.39236349862347; dx=-365.426020129866 evalInputDelta=2955.834148358688
New Minimum: 328.39236349862347 > 70.73989260205191
WOLFE (weak): th(258.53216280382605)=70.73989260205191; dx=-388.90225124133354 evalInputDelta=3213.4866192552595
New Minimum: 70.73989260205191 > 12.107445964072856
WOLFE (weak): th(1551.1929768229563)=12.107445964072856; dx=-391.11738814104086 evalInputDelta=3272.1190658932387
New Minimum: 12.107445964072856 > 1.9094317316230776
WOLFE (weak): th(10858.350837760694)=1.9094317316230776; dx=-391.21531708511543 evalInputDelta=3282.3170801256883
New Minimum: 1.9094317316230776 > 0.22029893207675774
WOLFE (weak): th(86866.80670208555)=0.22029893207675774; dx=-391.21805867578723 evalInputDelta=3284.0062129252346
New Minimum: 0.22029893207675774 > 0.0
WOLFE (weak): th(781801.26031877)=0.0; dx=-391.21811310910766 evalInputDelta=3284.2265118573114
WOLFE (weak): th(7818012.6031877)=0.0; dx=-391.21811389671046 evalInputDelta=3284.2265118573114
Armijo: th(8.599813863506469E7)=0.0; dx=-391.2181139046573 evalInputDelta=3284.2265118573114
Armijo: th(4.690807561912619E7)=0.0; dx=-391.2181139045009 evalInputDelta=3284.2265118573114
Armijo: th(2.7363044111156948E7)=0.0; dx=-391.21811390406936 evalInputDelta=3284.2265118573114
Armijo: th(1.7590528357172325E7)=0.0; dx=-391.21811390314065 evalInputDelta=3284.2265118573114
WOLFE (weak): th(1.2704270480180012E7)=0.0; dx=-391.21811390168887 evalInputDelta=3284.2265118573114
Armijo: th(1.5147399418676168E7)=0.0; dx=-391.2181139025888 evalInputDelta=3284.2265118573114
Armijo: th(1.3925834949428089E7)=0.0; dx=-391.2181139021979 evalInputDelta=3284.2265118573114
Armijo: th(1.331505271480405E7)=0.0; dx=-391.21811390196086 evalInputDelta=3284.2265118573114
WOLFE (weak): th(1.3009661597492032E7)=0.0; dx=-391.2181139018296 evalInputDelta=3284.2265118573114
Armijo: th(1.316235715614804E7)=0.0; dx=-391.2181139018964 evalInputDelta=3284.2265118573114
Armijo: th(1.3086009376820035E7)=0.0; dx=-391.2181139018633 evalInputDelta=3284.2265118573114
mu ~= nu (1.3009661597492032E7): th(781801.26031877)=0.0
Fitness changed from 3284.2265118573114 to 0.0
Iteration 1 complete. Error: 0.0 Total: 0.6453; Orientation: 0.0205; Line Search: 0.5023
th(0)=0.0;dx=-768.4872044959645
Armijo: th(2.8110709403358024E7)=0.0; dx=-768.4891366497466 evalInputDelta=0.0
Armijo: th(1.4055354701679012E7)=0.0; dx=-768.4891366495457 evalInputDelta=0.0
Armijo: th(4685118.233893004)=0.0; dx=-768.4891366476126 evalInputDelta=0.0
Armijo: th(1171279.558473251)=0.0; dx=-768.4891366252073 evalInputDelta=0.0
Armijo: th(234255.91169465022)=0.0; dx=-768.4891364259007 evalInputDelta=0.0
Armijo: th(39042.65194910837)=0.0; dx=-768.4891351598501 evalInputDelta=0.0
Armijo: th(5577.521707015481)=0.0; dx=-768.4891264022277 evalInputDelta=0.0
Armijo: th(697.1902133769352)=0.0; dx=-768.489058460473 evalInputDelta=0.0
Armijo: th(77.46557926410391)=0.0; dx=-768.4885640904986 evalInputDelta=0.0
Armijo: th(7.746557926410391)=0.0; dx=-768.4875390877406 evalInputDelta=0.0
Armijo: th(0.704232538764581)=0.0; dx=-768.487239784203 evalInputDelta=0.0
Armijo: th(0.05868604489704842)=0.0; dx=-768.4872074798989 evalInputDelta=0.0
Armijo: th(0.004514311145926802)=0.0; dx=-768.4872047257813 evalInputDelta=0.0
Armijo: th(3.224507961376287E-4)=0.0; dx=-768.4872045123816 evalInputDelta=0.0
Armijo: th(2.149671974250858E-5)=0.0; dx=-768.4872044970591 evalInputDelta=0.0
Armijo: th(1.3435449839067862E-6)=0.0; dx=-768.4872044960331 evalInputDelta=0.0
Armijo: th(7.903205787686977E-8)=0.0; dx=-768.4872044959686 evalInputDelta=0.0
Armijo: th(4.3906698820483204E-9)=0.0; dx=-768.4872044959649 evalInputDelta=0.0
Armijo: th(2.3108788852885898E-10)=0.0; dx=-768.4872044959646 evalInputDelta=0.0
Armijo: th(1.155439442644295E-11)=0.0; dx=-768.4872044959645 evalInputDelta=0.0
Armijo: th(5.502092584020452E-13)=0.0; dx=-768.4872044959645 evalInputDelta=0.0
Armijo: th(2.5009511745547508E-14)=0.0; dx=-768.4872044959645 evalInputDelta=0.0
Armijo: th(1.08737007589337E-15)=0.0; dx=-768.4872044959645 evalInputDelta=0.0
MIN ALPHA (4.530708649555708E-17): th(0.0)=0.0
Fitness changed from 0.0 to 0.0
Static Iteration Total: 1.6789; Orientation: 0.0037; Line Search: 1.6639
Iteration 2 failed. Error: 0.0
Previous Error: 0.0 -> 0.0
Optimization terminated 2
Final threshold in iteration 2: 0.0 (> 0.0) after 2.325s (< 30.000s)

Returns

    0.0

Training Converged

Conjugate Gradient Descent

First, we use a conjugate gradient descent method, which converges the fastest for purely linear functions.

TrainingTester.java:452 executed in 1.11 seconds (0.019 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new QuadraticSearch());
      iterativeTrainer.setOrientation(new GradientDescent());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4891426600833
Reset training subject: 4891437607067
Constructing line search parameters: GD
F(0.0) = LineSearchPoint{point=PointSample{avg=3284.2265118573114}, derivative=-251.10023329819165}
New Minimum: 3284.2265118573114 > 3284.2265118322016
F(1.0E-10) = LineSearchPoint{point=PointSample{avg=3284.2265118322016}, derivative=-251.1002332996287}, evalInputDelta = -2.510978447389789E-8
New Minimum: 3284.2265118322016 > 3284.2265116815424
F(7.000000000000001E-10) = LineSearchPoint{point=PointSample{avg=3284.2265116815424}, derivative=-251.10023330825095}, evalInputDelta = -1.757689460646361E-7
New Minimum: 3284.2265116815424 > 3284.226510626913
F(4.900000000000001E-9) = LineSearchPoint{point=PointSample{avg=3284.226510626913}, derivative=-251.1002333686068}, evalInputDelta = -1.2303985386097338E-6
New Minimum: 3284.226510626913 > 3284.226503244572
F(3.430000000000001E-8) = LineSearchPoint{point=PointSample{avg=3284.226503244572}, derivative=-251.1002337910977}, evalInputDelta = -8.612739293312188E-6
New Minimum: 3284.226503244572 > 3284.2264515681513
F(2.4010000000000004E-7) = LineSearchPoint{point=PointSample{avg=3284.2264515681513}, derivative=-251.10023674853397}, evalInputDelta = -6.028916004652274E-5
New Minimum: 3284.2264515681513 > 3284.226089833131
F(1.6807000000000003E-6) = LineSearchPoint{point=PointSample{avg=3284.226089833131}, derivative=-251.10025745058002}, evalInputDelta = -4.220241803523095E-4
New Minimum: 3284.226089833131 > 3284.2235576871876
F(1.1764900000000001E-5) = LineSearchPoint{point=PointSample{avg=3284.2235576871876}, derivative=-251.10040236452264}, evalInputDelta = -0.002954170123757649
New Minimum: 3284.2235576871876 > 3284.2058326246506
F(8.235430000000001E-5) = LineSearchPoint{point=PointSample{avg=3284.2058326246506}, derivative=-251.10141674352246}, evalInputDelta = -0.02067923266076832
New Minimum: 3284.2058326246506 > 3284.0817551820605
F(5.764801000000001E-4) = LineSearchPoint{point=PointSample{avg=3284.0817551820605}, derivative=-251.10851648522447}, evalInputDelta = -0.14475667525084646
New Minimum: 3284.0817551820605 > 3283.213114910538
F(0.004035360700000001) = LineSearchPoint{point=PointSample{avg=3283.213114910538}, derivative=-251.1581700366042}, evalInputDelta = -1.013396946773355
New Minimum: 3283.213114910538 > 3277.127843015238
F(0.028247524900000005) = LineSearchPoint{point=PointSample{avg=3277.127843015238}, derivative=-251.50356197177027}, evalInputDelta = -7.098668842073494
New Minimum: 3277.127843015238 > 3234.303187902292
F(0.19773267430000002) = LineSearchPoint{point=PointSample{avg=3234.303187902292}, derivative=-253.81587630638768}, evalInputDelta = -49.92332395501944
New Minimum: 3234.303187902292 > 2925.5751816999314
F(1.3841287201) = LineSearchPoint{point=PointSample{avg=2925.5751816999314}, derivative=-265.36130969349057}, evalInputDelta = -358.65133015738
New Minimum: 2925.5751816999314 > 1320.778048409811
F(9.688901040700001) = LineSearchPoint{point=PointSample{avg=1320.778048409811}, derivative=-285.8434116307445}, evalInputDelta = -1963.4484634475004
New Minimum: 1320.778048409811 > 256.4594680776122
F(67.8223072849) = LineSearchPoint{point=PointSample{avg=256.4594680776122}, derivative=-373.1469862421365}, evalInputDelta = -3027.767043779699
New Minimum: 256.4594680776122 > 39.763652672842376
F(474.7561509943) = LineSearchPoint{point=PointSample{avg=39.763652672842376}, derivative=-390.3952775705211}, evalInputDelta = -3244.462859184469
New Minimum: 39.763652672842376 > 5.519268336201094
F(3323.2930569601003) = LineSearchPoint{point=PointSample{avg=5.519268336201094}, derivative=-391.1929097652403}, evalInputDelta = -3278.7072435211103
New Minimum: 5.519268336201094 > 0.870184920359913
F(23263.0513987207) = LineSearchPoint{point=PointSample{avg=0.870184920359913}, derivative=-391.2174398762031}, evalInputDelta = -3283.3563269369515
New Minimum: 0.870184920359913 > 0.015536575305339875
F(162841.3597910449) = LineSearchPoint{point=PointSample{avg=0.015536575305339875}, derivative=-391.2180968383509}, evalInputDelta = -3284.210975282006
New Minimum: 0.015536575305339875 > 0.0
F(1139889.5185373144) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.21811352908503}, evalInputDelta = -3284.2265118573114
F(7979226.6297612) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.21811389703095}, evalInputDelta = -3284.2265118573114
F(5.58545864083284E7) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.2181139045665}, evalInputDelta = -3284.2265118573114
F(3.909821048582988E8) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.2181139047203}, evalInputDelta = -3284.2265118573114
F(2.7368747340080914E9) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.21811390472345}, evalInputDelta = -3284.2265118573114
F(1.915812313805664E10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.2181139047235}, evalInputDelta = -3284.2265118573114
0.0 <= 3284.2265118573114
F(1.0E10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-391.2181139047235}, evalInputDelta = -3284.2265118573114
Right bracket at 1.0E10
Converged to right
Fitness changed from 3284.2265118573114 to 0.0
Iteration 1 complete. Error: 0.0 Total: 1.0624; Orientation: 0.0032; Line Search: 1.0284
F(0.0) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-768.4892299405899}
F(1.0E10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-768.490166505945}, evalInputDelta = 0.0
0.0 <= 0.0
Converged to right
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.0433; Orientation: 0.0033; Line Search: 0.0256
Iteration 2 failed. Error: 0.0
Previous Error: 0.0 -> 0.0
Optimization terminated 2
Final threshold in iteration 2: 0.0 (> 0.0) after 1.106s (< 30.000s)

Returns

    0.0

Training Converged

Limited-Memory BFGS

Next, we apply the same optimization using L-BFGS, which is nearly ideal for purely second-order or quadratic functions.

TrainingTester.java:509 executed in 5.59 seconds (0.016 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new ArmijoWolfeSearch());
      iterativeTrainer.setOrientation(new LBFGS());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setIterationsPerSample(100);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4892536881796
Reset training subject: 4892545052349
Adding measurement 32f7e1a5 to history. Total: 0
LBFGS Accumulation History: 1 points
Constructing line search parameters: GD
Non-optimal measurement 3284.2265118573114 < 3284.2265118573114. Total: 1
th(0)=3284.2265118573114;dx=-251.10023329819165
Adding measurement 72b02574 to history. Total: 1
New Minimum: 3284.2265118573114 > 2719.920347673061
WOLFE (weak): th(2.154434690031884)=2719.920347673061; dx=-269.2621944383614 evalInputDelta=564.3061641842505
Adding measurement 62f6bfb2 to history. Total: 2
New Minimum: 2719.920347673061 > 2166.9736492298534
WOLFE (weak): th(4.308869380063768)=2166.9736492298534; dx=-271.8956975225005 evalInputDelta=1117.252862627458
Adding measurement 312b6891 to history. Total: 3
New Minimum: 2166.9736492298534 > 1064.2158343434846
WOLFE (weak): th(12.926608140191302)=1064.2158343434846; dx=-298.68216870403194 evalInputDelta=2220.0106775138265
Adding measurement ab0a868 to history. Total: 4
New Minimum: 1064.2158343434846 > 328.39236349862347
WOLFE (weak): th(51.70643256076521)=328.39236349862347; dx=-365.426020129866 evalInputDelta=2955.834148358688
Adding measurement 22fd65d to history. Total: 5
New Minimum: 328.39236349862347 > 70.73989260205191
WOLFE (weak): th(258.53216280382605)=70.73989260205191; dx=-388.90225124133354 evalInputDelta=3213.4866192552595
Adding measurement 3d81ae06 to history. Total: 6
New Minimum: 70.73989260205191 > 12.107445964072856
WOLFE (weak): th(1551.1929768229563)=12.107445964072856; dx=-391.11738814104086 evalInputDelta=3272.1190658932387
Adding measurement 4c536a38 to history. Total: 7
New Minimum: 12.107445964072856 > 1.9094317316230776
WOLFE (weak): th(10858.350837760694)=1.9094317316230776; dx=-391.21531708511543 evalInputDelta=3282.3170801256883
Adding measurement b8c32e2 to history. Total: 8
New Minimum: 1.9094317316230776 > 0.22029893207675774
WOLFE (weak): th(86866.80670208555)=0.22029893207675774; dx=-391.21805867578723 evalInputDelta=3284.0062129252346
Adding measurement 4a8fa45b to history. Total: 9
New Minimum: 0.22029893207675774 > 0.0
WOLFE (weak): th(781801.26031877)=0.0; dx=-391.21811310910766 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
WOLFE (weak): th(7818012.6031877)=0.0; dx=-391.21811389671046 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(8.599813863506469E7)=0.0; dx=-391.2181139046573 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(4.690807561912619E7)=0.0; dx=-391.2181139045009 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(2.7363044111156948E7)=0.0; dx=-391.21811390406936 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.7590528357172325E7)=0.0; dx=-391.21811390314065 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
WOLFE (weak): th(1.2704270480180012E7)=0.0; dx=-391.21811390168887 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.5147399418676168E7)=0.0; dx=-391.2181139025888 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.3925834949428089E7)=0.0; dx=-391.2181139021979 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.331505271480405E7)=0.0; dx=-391.21811390196086 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
WOLFE (weak): th(1.3009661597492032E7)=0.0; dx=-391.2181139018296 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.316235715614804E7)=0.0; dx=-391.2181139018964 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.3086009376820035E7)=0.0; dx=-391.2181139018633 evalInputDelta=3284.2265118573114
Non-optimal measurement 0.0 < 0.0. Total: 10
mu ~= nu (1.3009661597492032E7): th(781801.26031877)=0.0
Fitness changed from 3284.2265118573114 to 0.0
Iteration 1 complete. Error: 0.0 Total: 2.3121; Orientation: 0.0109; Line Search: 2.2747
Non-optimal measurement 0.0 < 0.0. Total: 10
Accepted: LBFGS Orientation magnitude: 1.238e+03, gradient 2.772e+01, dot 0.840; [9b3fa854-55c0-4b45-a3be-59a7751a8a6a = 1.000/1.000e+00, 12524247-f994-4b0b-96f4-d928aff7139e = 1.000/1.000e+00, 91ac31ee-5b32-4d4b-9e2f-d2bb65898e48 = 1.000/1.000e+00, aeeee813-1ce6-47e7-b89f-72422c52f2a3 = 1.000/1.000e+00, 48b0ec9b-16bb-4acc-a7dd-14be746f88d3 = 1.000/1.000e+00]
Constructing line search parameters: LBFGS
Non-optimal measurement 0.0 < 0.0. Total: 10
th(0)=0.0;dx=-28828.007435043306
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(2.154434690031884)=0.0; dx=-28828.011643792463 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.077217345015942)=0.0; dx=-28828.00986719958 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(0.3590724483386473)=0.0; dx=-28828.00833785543 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(0.08976811208466183)=0.0; dx=-28828.007670669118 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(0.017953622416932366)=0.0; dx=-28828.007482725076 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(0.002992270402822061)=0.0; dx=-28828.007443009847 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(4.2746720040315154E-4)=0.0; dx=-28828.00743618186 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(5.343340005039394E-5)=0.0; dx=-28828.00743518563 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(5.9370444500437714E-6)=0.0; dx=-28828.00743505912 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(5.937044450043771E-7)=0.0; dx=-28828.007435044885 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(5.397313136403428E-8)=0.0; dx=-28828.007435043448 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(4.4977609470028565E-9)=0.0; dx=-28828.007435043317 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(3.4598161130791205E-10)=0.0; dx=-28828.007435043306 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(2.4712972236279432E-11)=0.0; dx=-28828.007435043306 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.6475314824186289E-12)=0.0; dx=-28828.007435043306 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(1.029707176511643E-13)=0.0; dx=-28828.007435043306 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
Armijo: th(6.057101038303783E-15)=0.0; dx=-28828.007435043306 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 10
MIN ALPHA (3.3650561323909904E-16): th(0.0)=0.0
Fitness changed from 0.0 to 0.0
Static Iteration Total: 3.2795; Orientation: 2.2779; Line Search: 0.9913
Iteration 2 failed. Error: 0.0
Previous Error: 0.0 -> 0.0
Optimization terminated 2
Final threshold in iteration 2: 0.0 (> 0.0) after 5.592s (< 30.000s)

Returns

    0.0

Training Converged

TrainingTester.java:432 executed in 0.09 seconds (0.000 gc):

    return TestUtil.compare(title + " vs Iteration", runs);
Logging
Plotting range=[0.0, 0.0], [2.0, 1.0]; valueStats=DoubleSummaryStatistics{count=0, sum=0.000000, min=Infinity, average=0.000000, max=-Infinity}
Only 0 points for GD
Only 0 points for CjGD
Only 0 points for LBFGS

Returns

Result

TrainingTester.java:435 executed in 0.00 seconds (0.000 gc):

    return TestUtil.compareTime(title + " vs Time", runs);
Logging
No Data

Model Learning

In this apply, attempt to train a network to emulate a randomized network given an example input/output. The target state is:

TrainingTester.java:370 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> temp_18_0042 = network_target.state();
    assert temp_18_0042 != null;
    String temp_18_0041 = temp_18_0042.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b).orElse("");
    temp_18_0042.freeRef();
    return temp_18_0041;

Returns

    [0.6139113685089448, -0.1717948777868452]

Gradient Descent

First, we train using basic gradient descent method apply weak line search conditions.

TrainingTester.java:480 executed in 0.01 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new ArmijoWolfeSearch());
      iterativeTrainer.setOrientation(new GradientDescent());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4898352691685
Optimization terminated 0

NaN
com.simiacryptus.mindseye.lang.IterativeStopException: NaN
at com.simiacryptus.mindseye.opt.IterativeTrainer.measure(IterativeTrainer.java:156)
at com.simiacryptus.mindseye.opt.IterativeTrainer.run(IterativeTrainer.java:185)
at com.simiacryptus.mindseye.test.unit.TrainingTester.lambda$trainGD$892d3ca8$1(TrainingTester.java:489)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainGD(TrainingTester.java:480)
at com.simiacryptus.mindseye.test.unit.TrainingTester.runOpt(TrainingTester.java:658)
at com.simiacryptus.mindseye.test.unit.TrainingTester.train(TrainingTester.java:606)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainAll(TrainingTester.java:414)
at com.simiacryptus.mindseye.test.unit.TrainingTester.testModelLearning(TrainingTester.java:394)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:238)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:58)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:369)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:418)
at com.simiacryptus.mindseye.test.LayerTestBase.trainingTest(LayerTestBase.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)


This training apply resulted in the following configuration:

TrainingTester.java:610 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> state = network.state();
    assert state != null;
    String description = state.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b)
        .orElse("");
    state.freeRef();
    return description;

Returns

    [0.35887294634055045, -0.9001409783311924]

To produce the following output:

TrainingTester.java:633 executed in 0.01 seconds (0.000 gc):

    Result[] array = ConstantResult.batchResultArray(pop(RefUtil.addRef(data)));
    @Nullable
    Result eval = layer.eval(array);
    assert eval != null;
    TensorList tensorList = Result.getData(eval);
    String temp_18_0016 = tensorList.stream().limit(1).map(x -> {
      String temp_18_0017 = x.prettyPrint();
      x.freeRef();
      return temp_18_0017;
    }).reduce((a, b) -> a + "\n" + b).orElse("");
    tensorList.freeRef();
    return temp_18_0016;

Returns

    [
    	[ [ Infinity ], [ 1.815405010604856 ], [ Infinity ], [ 1.8889276519737634 ], [ 1.789847533611249 ], [ 1.7897999538724456 ], [ 1.8992488463848194 ], [ 1.9598287904257898 ], ... ],
    	[ [ 1.7877679800491009 ], [ Infinity ], [ Infinity ], [ 1.7988005050349105 ], [ Infinity ], [ 1.8092022721357905 ], [ 1.835212266571534 ], [ 1.8154666949760596 ], ... ],
    	[ [ Infinity ], [ 1.9439217888238056 ], [ Infinity ], [ 1.8084880023302732 ], [ Infinity ], [ Infinity ], [ 1.9512555679163583 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 1.821987391722629 ], [ Infinity ], [ Infinity ], [ 1.7866492857122083 ], [ Infinity ], [ 1.791425526407817 ], [ Infinity ], ... ],
    	[ [ 1.7937687775013156 ], [ 1.7970278131863138 ], [ Infinity ], [ 1.8621549839616238 ], [ Infinity ], [ Infinity ], [ 1.827072907053798 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 1.91725889441021 ], [ 1.8425355848115592 ], [ 1.82256520637976 ], [ 1.8525058731891182 ], [ 1.9509621306300968 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 1.806776125994955 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 1.8057463079713802 ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 1.8644689478923482 ], [ Infinity ], [ 1.8436260751895672 ], [ 1.851456016053571 ], [ Infinity ], [ 1.8210171978335765 ], [ Infinity ], [ Infinity ], ... ],
    	...
    ]

Conjugate Gradient Descent

First, we use a conjugate gradient descent method, which converges the fastest for purely linear functions.

TrainingTester.java:452 executed in 0.01 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new QuadraticSearch());
      iterativeTrainer.setOrientation(new GradientDescent());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4898379994591
Optimization terminated 0

NaN
com.simiacryptus.mindseye.lang.IterativeStopException: NaN
at com.simiacryptus.mindseye.opt.IterativeTrainer.measure(IterativeTrainer.java:156)
at com.simiacryptus.mindseye.opt.IterativeTrainer.run(IterativeTrainer.java:185)
at com.simiacryptus.mindseye.test.unit.TrainingTester.lambda$trainCjGD$892d3ca8$1(TrainingTester.java:461)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainCjGD(TrainingTester.java:452)
at com.simiacryptus.mindseye.test.unit.TrainingTester.runOpt(TrainingTester.java:658)
at com.simiacryptus.mindseye.test.unit.TrainingTester.train(TrainingTester.java:606)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainAll(TrainingTester.java:416)
at com.simiacryptus.mindseye.test.unit.TrainingTester.testModelLearning(TrainingTester.java:394)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:238)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:58)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:369)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:418)
at com.simiacryptus.mindseye.test.LayerTestBase.trainingTest(LayerTestBase.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)


This training apply resulted in the following configuration:

TrainingTester.java:610 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> state = network.state();
    assert state != null;
    String description = state.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b)
        .orElse("");
    state.freeRef();
    return description;

Returns

    [0.35887294634055045, -0.9001409783311924]

To produce the following output:

TrainingTester.java:633 executed in 0.01 seconds (0.000 gc):

    Result[] array = ConstantResult.batchResultArray(pop(RefUtil.addRef(data)));
    @Nullable
    Result eval = layer.eval(array);
    assert eval != null;
    TensorList tensorList = Result.getData(eval);
    String temp_18_0016 = tensorList.stream().limit(1).map(x -> {
      String temp_18_0017 = x.prettyPrint();
      x.freeRef();
      return temp_18_0017;
    }).reduce((a, b) -> a + "\n" + b).orElse("");
    tensorList.freeRef();
    return temp_18_0016;

Returns

    [
    	[ [ Infinity ], [ 1.815405010604856 ], [ Infinity ], [ 1.8889276519737634 ], [ 1.789847533611249 ], [ 1.7897999538724456 ], [ 1.8992488463848194 ], [ 1.9598287904257898 ], ... ],
    	[ [ 1.7877679800491009 ], [ Infinity ], [ Infinity ], [ 1.7988005050349105 ], [ Infinity ], [ 1.8092022721357905 ], [ 1.835212266571534 ], [ 1.8154666949760596 ], ... ],
    	[ [ Infinity ], [ 1.9439217888238056 ], [ Infinity ], [ 1.8084880023302732 ], [ Infinity ], [ Infinity ], [ 1.9512555679163583 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 1.821987391722629 ], [ Infinity ], [ Infinity ], [ 1.7866492857122083 ], [ Infinity ], [ 1.791425526407817 ], [ Infinity ], ... ],
    	[ [ 1.7937687775013156 ], [ 1.7970278131863138 ], [ Infinity ], [ 1.8621549839616238 ], [ Infinity ], [ Infinity ], [ 1.827072907053798 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 1.91725889441021 ], [ 1.8425355848115592 ], [ 1.82256520637976 ], [ 1.8525058731891182 ], [ 1.9509621306300968 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 1.806776125994955 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 1.8057463079713802 ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 1.8644689478923482 ], [ Infinity ], [ 1.8436260751895672 ], [ 1.851456016053571 ], [ Infinity ], [ 1.8210171978335765 ], [ Infinity ], [ Infinity ], ... ],
    	...
    ]

Limited-Memory BFGS

Next, we apply the same optimization using L-BFGS, which is nearly ideal for purely second-order or quadratic functions.

TrainingTester.java:509 executed in 0.01 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new ArmijoWolfeSearch());
      iterativeTrainer.setOrientation(new LBFGS());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setIterationsPerSample(100);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4898398588526
Optimization terminated 0

NaN
com.simiacryptus.mindseye.lang.IterativeStopException: NaN
at com.simiacryptus.mindseye.opt.IterativeTrainer.measure(IterativeTrainer.java:156)
at com.simiacryptus.mindseye.opt.IterativeTrainer.run(IterativeTrainer.java:185)
at com.simiacryptus.mindseye.test.unit.TrainingTester.lambda$trainLBFGS$892d3ca8$1(TrainingTester.java:519)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainLBFGS(TrainingTester.java:509)
at com.simiacryptus.mindseye.test.unit.TrainingTester.runOpt(TrainingTester.java:658)
at com.simiacryptus.mindseye.test.unit.TrainingTester.train(TrainingTester.java:606)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainAll(TrainingTester.java:418)
at com.simiacryptus.mindseye.test.unit.TrainingTester.testModelLearning(TrainingTester.java:394)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:238)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:58)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:369)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:418)
at com.simiacryptus.mindseye.test.LayerTestBase.trainingTest(LayerTestBase.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)


This training apply resulted in the following configuration:

TrainingTester.java:610 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> state = network.state();
    assert state != null;
    String description = state.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b)
        .orElse("");
    state.freeRef();
    return description;

Returns

    [0.35887294634055045, -0.9001409783311924]

To produce the following output:

TrainingTester.java:633 executed in 0.01 seconds (0.000 gc):

    Result[] array = ConstantResult.batchResultArray(pop(RefUtil.addRef(data)));
    @Nullable
    Result eval = layer.eval(array);
    assert eval != null;
    TensorList tensorList = Result.getData(eval);
    String temp_18_0016 = tensorList.stream().limit(1).map(x -> {
      String temp_18_0017 = x.prettyPrint();
      x.freeRef();
      return temp_18_0017;
    }).reduce((a, b) -> a + "\n" + b).orElse("");
    tensorList.freeRef();
    return temp_18_0016;

Returns

    [
    	[ [ Infinity ], [ 1.815405010604856 ], [ Infinity ], [ 1.8889276519737634 ], [ 1.789847533611249 ], [ 1.7897999538724456 ], [ 1.8992488463848194 ], [ 1.9598287904257898 ], ... ],
    	[ [ 1.7877679800491009 ], [ Infinity ], [ Infinity ], [ 1.7988005050349105 ], [ Infinity ], [ 1.8092022721357905 ], [ 1.835212266571534 ], [ 1.8154666949760596 ], ... ],
    	[ [ Infinity ], [ 1.9439217888238056 ], [ Infinity ], [ 1.8084880023302732 ], [ Infinity ], [ Infinity ], [ 1.9512555679163583 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 1.821987391722629 ], [ Infinity ], [ Infinity ], [ 1.7866492857122083 ], [ Infinity ], [ 1.791425526407817 ], [ Infinity ], ... ],
    	[ [ 1.7937687775013156 ], [ 1.7970278131863138 ], [ Infinity ], [ 1.8621549839616238 ], [ Infinity ], [ Infinity ], [ 1.827072907053798 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 1.91725889441021 ], [ 1.8425355848115592 ], [ 1.82256520637976 ], [ 1.8525058731891182 ], [ 1.9509621306300968 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 1.806776125994955 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 1.8057463079713802 ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 1.8644689478923482 ], [ Infinity ], [ 1.8436260751895672 ], [ 1.851456016053571 ], [ Infinity ], [ 1.8210171978335765 ], [ Infinity ], [ Infinity ], ... ],
    	...
    ]

TrainingTester.java:432 executed in 0.00 seconds (0.000 gc):

    return TestUtil.compare(title + " vs Iteration", runs);
Logging
No Data

TrainingTester.java:435 executed in 0.00 seconds (0.000 gc):

    return TestUtil.compareTime(title + " vs Time", runs);
Logging
No Data

Composite Learning

In this apply, attempt to train a network to emulate a randomized network given an example input/output. The target state is:

TrainingTester.java:279 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> temp_18_0037 = temp_18_0035.state();
    assert temp_18_0037 != null;
    String temp_18_0036 = temp_18_0037.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b).orElse("");
    temp_18_0037.freeRef();
    return temp_18_0036;

Returns

    [0.9243009473480779, -0.8172823726848262]

We simultaneously regress this target input:

TrainingTester.java:287 executed in 0.02 seconds (0.000 gc):

    return RefArrays.stream(RefUtil.addRef(input_target)).flatMap(x -> {
      RefStream<Tensor> temp_18_0006 = RefArrays.stream(RefUtil.addRef(x));
      if (null != x)
        RefUtil.freeRef(x);
      return temp_18_0006;
    }).map(x -> {
      String temp_18_0007 = x.prettyPrint();
      x.freeRef();
      return temp_18_0007;
    }).reduce((a, b) -> a + "\n" + b).orElse("");

Returns

    [
    	[ [ -0.21319717464349686 ], [ 0.9580854808147243 ], [ 0.798120986086005 ], [ -0.8172137019400445 ], [ -0.427602100801163 ], [ 0.22977283115852076 ], [ 0.4364147734128252 ], [ -0.19203937257077586 ], ... ],
    	[ [ 0.879512767309454 ], [ -0.3874478295979864 ], [ -0.4072144138255682 ], [ 0.3539440955928319 ], [ 0.19158265835925303 ], [ -0.32927533247562657 ], [ -0.8631649961882115 ], [ -0.2444270352792015 ], ... ],
    	[ [ -0.613764491675483 ], [ -0.2476598752803698 ], [ 0.4688226959591524 ], [ 0.14055027898126693 ], [ -0.1681099148042393 ], [ -0.6851302242698634 ], [ 0.18731896890992106 ], [ -0.8103328717323683 ], ... ],
    	[ [ 0.15134459433311953 ], [ 0.88889144643184 ], [ 0.9307461550172393 ], [ 0.3717161696227982 ], [ 0.7930353062209294 ], [ -0.01638253446175808 ], [ -0.8372844851953769 ], [ -0.37896046014790197 ], ... ],
    	[ [ -0.5684349193178189 ], [ -0.34985336153777014 ], [ 0.38292302642750586 ], [ -0.20995070785763326 ], [ -0.25504607595262274 ], [ 0.34979543591706586 ], [ 0.6971521841978816 ], [ -0.17521652996080128 ], ... ],
    	[ [ -0.905225276275597 ], [ 0.7768980704739126 ], [ -0.8936757261855046 ], [ 0.16721020217311144 ], [ 0.5226944318819382 ], [ 0.2820987063093363 ], [ 0.3790387735864489 ], [ 0.3847234782244515 ], ... ],
    	[ [ -0.7182499598563357 ], [ -0.11694302137044765 ], [ -0.72720130418068 ], [ 0.6082887395741472 ], [ -0.8928545828561709 ], [ 0.5147529246497533 ], [ -0.3560861361816716 ], [ -0.8076798930849167 ], ... ],
    	[ [ 0.6640096626955154 ], [ -0.5133835029171614 ], [ -0.005846417315574559 ], [ -0.31164892001943345 ], [ 0.0760610174363816 ], [ -0.17172779366311564 ], [ 0.3287750621409904 ], [ -0.39039138447848964 ], ... ],
    	...
    ]
    [
    	[ [ -0.2811917936404935 ], [ 0.8157942076649898 ], [ -0.839335072950105 ], [ -0.17631603049768851 ], [ -0.7864552146300663 ], [ 0.6727588204161608 ], [ -0.30358723005527444 ], [ 0.5082424501567679 ], ... ],
    	[ [ 0.8631131530915326 ], [ -0.9534948982552889 ], [ 0.3494086708664008 ], [ 0.6427426869859953 ], [ 0.4436971446481299 ], [ -2.5956870210785965E-4 ], [ 0.6515897194408695 ], [ -0.5540913375026162 ], ... ],
    	[ [ -0.07298836908360529 ], [ 0.32704629074026137 ], [ -0.4328955591734196 ], [ -0.9708118514118682 ], [ 0.106950846824728 ], [ -0.5397875340311242 ], [ -0.2938930240621014 ], [ 0.6333485396360077 ], ... ],
    	[ [ -0.7414872017490621 ], [ 0.7620389290468568 ], [ 0.359328276996129 ], [ -0.7427854772958471 ], [ 0.13127887607060496 ], [ -0.21606029005154626 ], [ 0.42723901083594407 ], [ -0.9223086871190482 ], ... ],
    	[ [ 0.11566740261893416 ], [ -0.019005688947615118 ], [ -0.1418879750107631 ], [ 0.3790912911839073 ], [ 0.27480491605056256 ], [ 0.5589714128175771 ], [ -0.47101194622076914 ], [ 0.4132042553625661 ], ... ],
    	[ [ 0.5608416902153575 ], [ 0.12718609679437298 ], [ -0.9080631184129404 ], [ -0.008773137965832234 ], [ 0.7744302498053102 ], [ 0.655002170350842 ], [ 0.7056746109167624 ], [ -0.7823994880988472 ], ... ],
    	[ [ -0.08215824665769023 ], [ -0.45925780274294015 ], [ -0.5470956642110336 ], [ 0.9995799268386614 ], [ 0.8883009304565874 ], [ 0.05161212822618211 ], [ 0.21895749606058024 ], [ 0.4111610557498553 ], ... ],
    	[ [ 0.44588466828133844 ], [ 0.3504261030996969 ], [ -0.5502834039610032 ], [ -0.35228022856139596 ], [ 0.11819841128645425 ], [ -0.13825287066868697 ], [ -0.8414211371799829 ], [ 0.7345090622259187 ], ... ],
    	...
    ]
    [
    	[ [ -0.09206488337681562 ], [ -0.6460698970691365 ], [ 0.7937572441784464 ], [ 0.832437819591455 ], [ -0.1101437989764773 ], [ 0.11976361042116279 ], [ 0.35864571330278094 ], [ 0.47121365873524534 ], ... ],
    	[ [ 0.2676218991710597 ], [ 0.12612887131638062 ], [ 0.22740350317389701 ], [ -0.13138107268538346 ], [ 0.18726744511914584 ], [ -0.3181178177022208 ], [ 0.31860630218024233 ], [ -0.36031301252878234 ], ... ],
    	[ [ -0.9245587421884589 ], [ -0.3989611451051873 ], [ -0.6052377928872792 ], [ 0.9779855291191655 ], [ 0.5220974656280131 ], [ 0.9462856703830789 ], [ 0.29985403331024596 ], [ -0.7266285245245547 ], ... ],
    	[ [ 0.35577491656321314 ], [ -0.7141465982374247 ], [ 0.7740319293234919 ], [ 0.5007131840572696 ], [ -0.6472300635178112 ], [ 0.39444766813984145 ], [ -0.8824953173300298 ], [ 0.028268422710896246 ], ... ],
    	[ [ -0.06957635932626771 ], [ -0.9369233436393167 ], [ 0.4517823305560489 ], [ -0.2881730447599966 ], [ -0.9118778215645922 ], [ -0.714626161442933 ], [ 0.4668479281243332 ], [ -0.8658045509990284 ], ... ],
    	[ [ -0.11372632296120999 ], [ 0.4874870894498171 ], [ -0.21007662026393126 ], [ -0.6035768200708158 ], [ 0.46634304422198847 ], [ 0.49163451596050045 ], [ 0.38197694724085296 ], [ 0.5738682828464223 ], ... ],
    	[ [ 0.48245893669020123 ], [ 0.3908599166361688 ], [ 0.5920467328778527 ], [ 0.8794260763456174 ], [ -0.26465093140308915 ], [ 0.9572792045670662 ], [ -0.0886730090803054 ], [ 0.6344045031217989 ], ... ],
    	[ [ 0.9099600250976363 ], [ -0.14490114675191013 ], [ 0.8805013785246196 ], [ -0.23009542347564182 ], [ 0.63696268181925 ], [ 0.03752407413861936 ], [ 0.015015876984608933 ], [ 0.7166921485772504 ], ... ],
    	...
    ]
    [
    	[ [ 0.7423676986084762 ], [ -0.2187850412157919 ], [ -0.17256977057762857 ], [ 0.8612857496941269 ], [ -0.30680132007226657 ], [ 0.277640143960477 ], [ -0.7553480075873276 ], [ 0.6485433970178103 ], ... ],
    	[ [ 0.25219334550133277 ], [ -0.5064880428343552 ], [ -0.08854154455152385 ], [ -0.8561560214239856 ], [ -0.1048957158024979 ], [ -0.12091322924920478 ], [ 0.6858204813261097 ], [ 0.4336576017626863 ], ... ],
    	[ [ 0.06390874691653226 ], [ -0.423875207110042 ], [ 0.23206271916661825 ], [ 0.5255309441600333 ], [ 0.20383400334617852 ], [ 0.17074034462959853 ], [ 0.8031333033682815 ], [ 0.28345673034848473 ], ... ],
    	[ [ 0.7708019762025633 ], [ -0.9506309501949002 ], [ -0.3910930618953763 ], [ 0.7140755714927267 ], [ 0.6142854354812806 ], [ 0.32838946864019625 ], [ 0.89440385868029 ], [ 0.7122479459141056 ], ... ],
    	[ [ 0.5802116005456479 ], [ 0.8835628773180677 ], [ 0.867797022831432 ], [ 0.11549455801320674 ], [ 0.4563844902685519 ], [ -0.45382137049592863 ], [ -0.2529415048671759 ], [ 0.9050911806642832 ], ... ],
    	[ [ 0.6364350334437545 ], [ -0.18813488303890802 ], [ -0.10614909045288723 ], [ 0.12089635171194435 ], [ -0.5120331578600918 ], [ -0.2855902641157111 ], [ -0.8831247898932384 ], [ -0.2025444380407635 ], ... ],
    	[ [ -0.4921911946995827 ], [ -0.3998133317412329 ], [ -0.6174332706180381 ], [ -0.6372911469532885 ], [ -0.9074235293156521 ], [ -0.9488961464073522 ], [ 0.3537933909400759 ], [ -0.48179246410675636 ], ... ],
    	[ [ 0.16200598607846572 ], [ -0.01644425036527397 ], [ 0.6483227646667935 ], [ -0.7620906509384322 ], [ -0.5704502087309056 ], [ 0.4458585067082228 ], [ 0.5062889804521811 ], [ 0.23837261241773322 ], ... ],
    	...
    ]
    [
    	[ [ 0.8261299062305598 ], [ -0.780630722717095 ], [ -0.27498170696744273 ], [ -0.5701595319300707 ], [ 0.12128111382421469 ], [ -0.8074291093418058 ], [ 0.7344304763829335 ], [ -0.5542374147962317 ], ... ],
    	[ [ 0.18921640355919833 ], [ 0.9322152617118089 ], [ 0.3361477556921906 ], [ 0.13478950445664917 ], [ -0.3902408889281148 ], [ -0.9342771048410099 ], [ 0.5989665932051262 ], [ -0.5339635825828937 ], ... ],
    	[ [ -0.6054600510181432 ], [ -0.7221038285980255 ], [ -0.694441710761645 ], [ -0.1117187141963305 ], [ 0.6378226315719826 ], [ 0.16200723883880608 ], [ 0.683876420417489 ], [ -0.15515558260540163 ], ... ],
    	[ [ 0.6924563690304983 ], [ 0.028949674939717562 ], [ -0.8505405871834977 ], [ -0.9716386516602908 ], [ 0.22877647319765737 ], [ 0.1270288533548216 ], [ 0.31917319040680514 ], [ -0.5921046707581894 ], ... ],
    	[ [ -0.15584902221066543 ], [ -0.33705153605255656 ], [ -0.05930018155935013 ], [ 0.5747613749420812 ], [ -0.14473186164686425 ], [ 0.020171904440206667 ], [ 0.026238775503396816 ], [ -0.9859052665593018 ], ... ],
    	[ [ 0.5636948624381393 ], [ 0.869333766764933 ], [ -0.639018155220703 ], [ 0.951610276979652 ], [ -0.08507516271259519 ], [ -0.5632710295377228 ], [ -0.30151524787468964 ], [ -0.40139824359771525 ], ... ],
    	[ [ 0.893267660942602 ], [ -0.8240502567771928 ], [ -0.7353801590132032 ], [ -0.20580451343088169 ], [ -0.6684418081599142 ], [ -0.8669157690019687 ], [ 0.2097182114838847 ], [ 0.936466951364864 ], ... ],
    	[ [ 0.8129202689435495 ], [ -0.47999708193366786 ], [ -0.9589478841827026 ], [ 0.8798039085347711 ], [ 0.5170943946951372 ], [ -0.3946945856551074 ], [ -0.23562535139435759 ], [ -0.7422485463775108 ], ... ],
    	...
    ]

Which produces the following output:

TrainingTester.java:308 executed in 0.02 seconds (0.000 gc):

    return RefStream.of(RefUtil.addRef(output_target)).map(x -> {
      String temp_18_0008 = x.prettyPrint();
      x.freeRef();
      return temp_18_0008;
    }).reduce((a, b) -> a + "\n" + b).orElse("");

Returns

    [
    	[ [ Infinity ], [ 0.4451410315916924 ], [ 0.34443368042935324 ], [ Infinity ], [ Infinity ], [ 0.10602909843300287 ], [ 0.1666030460678931 ], [ Infinity ], ... ],
    	[ [ 0.3942910458373651 ], [ Infinity ], [ Infinity ], [ 0.13832387106962965 ], [ 0.09873050727915876 ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 0.1791096356523965 ], [ 0.0909900061703734 ], [ Infinity ], [ Infinity ], [ 0.09799508594319087 ], [ Infinity ], ... ],
    	[ [ 0.09243306379648537 ], [ 0.4002259875397285 ], [ 0.4271626458541066 ], [ 0.14397452917491316 ], [ 0.3414208174748306 ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 0.14766495843095234 ], [ Infinity ], [ Infinity ], [ 0.1370407466886705 ], [ 0.2870609855689808 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 0.3319442272662949 ], [ Infinity ], [ 0.09474383503753624 ], [ 0.20154662071943813 ], [ 0.11807177441491667 ], [ 0.1463748097912124 ], [ 0.14826694080211122 ], ... ],
    	[ [ Infinity ], [ Infinity ], [ Infinity ], [ 0.24117686222980494 ], [ Infinity ], [ 0.19811326095548826 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 0.26941468590643447 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.08456908079447698 ], [ Infinity ], [ 0.13075101332155847 ], [ Infinity ], ... ],
    	...
    ]
    [
    	[ [ Infinity ], [ 0.35500000070172244 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.27401304667168264 ], [ Infinity ], [ 0.19533058221701755 ], ... ],
    	[ [ 0.38400474265138507 ], [ Infinity ], [ 0.13692182313409035 ], [ 0.2584208256048119 ], [ 0.1693468128877858 ], [ Infinity ], [ 0.2629623807235709 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 0.1302495693115229 ], [ Infinity ], [ Infinity ], [ 0.0871721557685542 ], [ Infinity ], [ Infinity ], [ 0.25364874877334853 ], ... ],
    	[ [ Infinity ], [ 0.3233322115118333 ], [ 0.14000948386008008 ], [ Infinity ], [ 0.08983437087673113 ], [ Infinity ], [ 0.16320160979169693 ], [ Infinity ], ... ],
    	[ [ 0.08806422635363302 ], [ Infinity ], [ Infinity ], [ 0.14639217534550591 ], [ 0.11625380381321698 ], [ 0.21776592701109745 ], [ Infinity ], [ 0.15812027410440055 ], ... ],
    	[ [ 0.2186255430301542 ], [ 0.08934894127625907 ], [ Infinity ], [ Infinity ], [ 0.33050630380146423 ], [ 0.26472631656269113 ], [ 0.2916971274778167 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ Infinity ], [ 0.47297822209994084 ], [ 0.3998511905527523 ], [ 0.08312908945423249 ], [ 0.10383295734591945 ], [ 0.1573928574201825 ], ... ],
    	[ [ 0.17017859750137207 ], [ 0.13723492136653917 ], [ Infinity ], [ Infinity ], [ 0.0883361967115497 ], [ Infinity ], [ Infinity ], [ 0.30767288537077114 ], ... ],
    	...
    ]
    [
    	[ [ Infinity ], [ Infinity ], [ 0.3418477467014211 ], [ 0.36508517541144486 ], [ Infinity ], [ 0.08850729672475378 ], [ 0.1397945254792109 ], [ 0.18006233937897334 ], ... ],
    	[ [ 0.11450719762496109 ], [ 0.08922601181823753 ], [ 0.1055393099739511 ], [ Infinity ], [ 0.09798629711093003 ], [ Infinity ], [ 0.12783633051559706 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ Infinity ], [ 0.4584102673145211 ], [ 0.20128704989986193 ], [ 0.4373452551889795 ], [ 0.12268306032216478 ], [ Infinity ], ... ],
    	[ [ 0.13889446565407476 ], [ Infinity ], [ 0.33027449808457426 ], [ 0.1921486926263385 ], [ Infinity ], [ 0.15156145104934698 ], [ Infinity ], [ 0.08226795035447713 ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 0.1724385215628897 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.1783258465449622 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 0.18665431993574824 ], [ Infinity ], [ Infinity ], [ 0.17812590478953091 ], [ 0.18836413187441625 ], [ 0.14734964194240316 ], [ 0.2246753115413981 ], ... ],
    	[ [ 0.184597584935137 ], [ 0.15033746660480105 ], [ 0.23329807692757665 ], [ 0.3942363631746831 ], [ Infinity ], [ 0.4446066205505476 ], [ Infinity ], [ 0.2541825569761111 ], ... ],
    	[ [ 0.41369447191308273 ], [ Infinity ], [ 0.39491486845100154 ], [ Infinity ], [ 0.2554785026723039 ], [ 0.08254924543037748 ], [ 0.08200290628238904 ], [ 0.29774899286194584 ], ... ],
    	...
    ]
    [
    	[ [ 0.31210312574094745 ], [ Infinity ], [ Infinity ], [ 0.3828658486158712 ], [ Infinity ], [ 0.11695517465129883 ], [ Infinity ], [ 0.26139341620975665 ], ... ],
    	[ [ 0.11090336940576154 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.28095844790074914 ], [ 0.1655744198499226 ], ... ],
    	[ [ 0.08378463754306865 ], [ Infinity ], [ 0.10650708008079358 ], [ 0.2027832663916036 ], [ 0.10093283789795683 ], [ 0.09528858203039488 ], [ 0.3474152721492982 ], [ 0.11841518704896555 ], ... ],
    	[ [ 0.3283977187422808 ], [ Infinity ], [ Infinity ], [ 0.296305802827629 ], [ 0.24412676560161883 ], [ 0.1306389590650543 ], [ 0.40373183872993046 ], [ 0.2952999456113561 ], ... ],
    	[ [ 0.22766050439429777 ], [ 0.3968493729878329 ], [ 0.3869305986519354 ], [ 0.08804586556476789 ], [ 0.17421957725103746 ], [ Infinity ], [ Infinity ], [ 0.41056543909107074 ], ... ],
    	[ [ 0.25521088444789714 ], [ Infinity ], [ Infinity ], [ 0.08863250938926918 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.13827702081470342 ], [ Infinity ], ... ],
    	[ [ 0.09396103777382099 ], [ Infinity ], [ 0.2612799926372865 ], [ Infinity ], [ Infinity ], [ 0.1701686291496648 ], [ 0.19450129525640464 ], [ 0.10784760458863395 ], ... ],
    	...
    ]
    [
    	[ [ 0.3612477491663421 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.0886753056868523 ], [ Infinity ], [ 0.30762874596805245 ], [ Infinity ], ... ],
    	[ [ 0.09832038131767222 ], [ 0.42812118071623595 ], [ 0.13291664578591825 ], [ 0.09026282297141018 ], [ Infinity ], [ Infinity ], [ 0.23663486624697516 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.25591501383944293 ], [ 0.09396122329728542 ], [ 0.2799186579798567 ], [ Infinity ], ... ],
    	[ [ 0.28452350529401416 ], [ 0.08228595866389879 ], [ Infinity ], [ Infinity ], [ 0.10582253880569714 ], [ 0.08933059363379686 ], [ 0.1279966037698775 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ Infinity ], [ 0.2250940579266683 ], [ Infinity ], [ 0.0820867425353035 ], [ 0.08221683870739913 ], [ Infinity ], ... ],
    	[ [ 0.21994127341486058 ], [ 0.38789265099272924 ], [ Infinity ], [ 0.4408563189628621 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 0.40300817058482835 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ 0.10203744984910497 ], [ 0.43090012357275365 ], ... ],
    	[ [ 0.35327165650551173 ], [ Infinity ], [ Infinity ], [ 0.394474714763584 ], [ 0.19912110550479822 ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	...
    ]

Gradient Descent

First, we train using basic gradient descent method apply weak line search conditions.

TrainingTester.java:480 executed in 0.02 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new ArmijoWolfeSearch());
      iterativeTrainer.setOrientation(new GradientDescent());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4898471995462
Optimization terminated 0

NaN
com.simiacryptus.mindseye.lang.IterativeStopException: NaN
at com.simiacryptus.mindseye.opt.IterativeTrainer.measure(IterativeTrainer.java:156)
at com.simiacryptus.mindseye.opt.IterativeTrainer.run(IterativeTrainer.java:185)
at com.simiacryptus.mindseye.test.unit.TrainingTester.lambda$trainGD$892d3ca8$1(TrainingTester.java:489)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainGD(TrainingTester.java:480)
at com.simiacryptus.mindseye.test.unit.TrainingTester.runOpt(TrainingTester.java:658)
at com.simiacryptus.mindseye.test.unit.TrainingTester.train(TrainingTester.java:606)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainAll(TrainingTester.java:414)
at com.simiacryptus.mindseye.test.unit.TrainingTester.testCompleteLearning(TrainingTester.java:318)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:247)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:58)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:369)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:418)
at com.simiacryptus.mindseye.test.LayerTestBase.trainingTest(LayerTestBase.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)


This training apply resulted in the following configuration:

TrainingTester.java:610 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> state = network.state();
    assert state != null;
    String description = state.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b)
        .orElse("");
    state.freeRef();
    return description;

Returns

    [0.2417979932416685, -0.21023660139743305]

And regressed input:

TrainingTester.java:622 executed in 0.00 seconds (0.000 gc):

    return RefArrays.stream(RefUtil.addRef(data)).flatMap(x -> {
      return RefArrays.stream(x);
    }).limit(1).map(x -> {
      String temp_18_0015 = x.prettyPrint();
      x.freeRef();
      return temp_18_0015;
    }).reduce((a, b) -> a + "\n" + b).orElse("");

Returns

    [
    	[ [ 0.8228966379031057 ], [ 0.45512639421734646 ], [ -0.9941248202770427 ], [ 0.6810099594694214 ], [ -0.07072184025691985 ], [ -0.7401060343040435 ], [ 0.9969707574471713 ], [ -0.7640033102156047 ], ... ],
    	[ [ -0.5792771278727362 ], [ 0.4850087221732986 ], [ -0.272503170577457 ], [ 0.5898207797147266 ], [ -0.4797545568126713 ], [ -0.7833596879695917 ], [ -0.4365450252760552 ], [ -0.9852889556807238 ], ... ],
    	[ [ -0.3316351728002731 ], [ -0.4756540119521948 ], [ 0.5586558750293982 ], [ 0.7955838187650401 ], [ 0.6308585498332662 ], [ -0.26927509431442953 ], [ 0.44675482441119985 ], [ -0.135871673190614 ], ... ],
    	[ [ 0.8891144886344042 ], [ -0.05081040801048564 ], [ -0.9013695398301891 ], [ -0.5726168618780119 ], [ 0.3290036180582703 ], [ 0.9158585634913539 ], [ -0.1353138275263659 ], [ -0.5388661306220366 ], ... ],
    	[ [ 0.9062424520920278 ], [ -0.34410234437143994 ], [ 0.9697602874419258 ], [ -0.3385274696667637 ], [ -0.4474015763877637 ], [ -0.6435953310583229 ], [ -0.5268419431747753 ], [ -0.9421604093063394 ], ... ],
    	[ [ 0.4282885066527109 ], [ 0.4885461315465234 ], [ -0.35670814901074155 ], [ -0.4957581996468565 ], [ -0.09989652472047417 ], [ 0.5279829330759753 ], [ -0.20456257235999997 ], [ -0.34598452176174255 ], ... ],
    	[ [ -0.4978788898766193 ], [ -0.9354789474249037 ], [ 0.08932324993910257 ], [ -0.961361135380149 ], [ -0.26928886755143777 ], [ 0.7153733529502115 ], [ -0.2809869435119057 ], [ -0.5962684551430089 ], ... ],
    	[ [ -0.7072461681222133 ], [ 0.06903580456960245 ], [ 0.5592991673108045 ], [ -0.714516040228288 ], [ -0.345992192956156 ], [ 0.9271357122381274 ], [ -0.5729822525583663 ], [ 0.07108854807911635 ], ... ],
    	...
    ]

To produce the following output:

TrainingTester.java:633 executed in 0.01 seconds (0.000 gc):

    Result[] array = ConstantResult.batchResultArray(pop(RefUtil.addRef(data)));
    @Nullable
    Result eval = layer.eval(array);
    assert eval != null;
    TensorList tensorList = Result.getData(eval);
    String temp_18_0016 = tensorList.stream().limit(1).map(x -> {
      String temp_18_0017 = x.prettyPrint();
      x.freeRef();
      return temp_18_0017;
    }).reduce((a, b) -> a + "\n" + b).orElse("");
    tensorList.freeRef();
    return temp_18_0016;

Returns

    [
    	[ [ 3.2167567965750563 ], [ 3.160651275882537 ], [ Infinity ], [ 3.1913784808444867 ], [ Infinity ], [ Infinity ], [ 3.2541544043434163 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 3.1640259923989276 ], [ Infinity ], [ 3.1775312754033314 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 3.1732451870809797 ], [ 3.2115119158647123 ], [ 3.183522620315017 ], [ Infinity ], [ 3.159743847633455 ], [ Infinity ], ... ],
    	[ [ 3.230177724243902 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 3.1487494965935374 ], [ 3.2358795914320018 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 3.23381085864301 ], [ Infinity ], [ 3.24785993411849 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 3.157801107523123 ], [ 3.1644394973920282 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 3.169249930432236 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 3.136648117470155 ], [ Infinity ], [ Infinity ], [ 3.197098764492077 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 3.1362597775166723 ], [ 3.1733313507729353 ], [ Infinity ], [ Infinity ], [ 3.238332175950464 ], [ Infinity ], [ 3.1362945478359845 ], ... ],
    	...
    ]

Conjugate Gradient Descent

First, we use a conjugate gradient descent method, which converges the fastest for purely linear functions.

TrainingTester.java:452 executed in 0.17 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new QuadraticSearch());
      iterativeTrainer.setOrientation(new GradientDescent());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4898505847445
Optimization terminated 0

NaN
com.simiacryptus.mindseye.lang.IterativeStopException: NaN
at com.simiacryptus.mindseye.opt.IterativeTrainer.measure(IterativeTrainer.java:156)
at com.simiacryptus.mindseye.opt.IterativeTrainer.run(IterativeTrainer.java:185)
at com.simiacryptus.mindseye.test.unit.TrainingTester.lambda$trainCjGD$892d3ca8$1(TrainingTester.java:461)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainCjGD(TrainingTester.java:452)
at com.simiacryptus.mindseye.test.unit.TrainingTester.runOpt(TrainingTester.java:658)
at com.simiacryptus.mindseye.test.unit.TrainingTester.train(TrainingTester.java:606)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainAll(TrainingTester.java:416)
at com.simiacryptus.mindseye.test.unit.TrainingTester.testCompleteLearning(TrainingTester.java:318)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:247)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:58)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:369)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:418)
at com.simiacryptus.mindseye.test.LayerTestBase.trainingTest(LayerTestBase.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)


This training apply resulted in the following configuration:

TrainingTester.java:610 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> state = network.state();
    assert state != null;
    String description = state.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b)
        .orElse("");
    state.freeRef();
    return description;

Returns

    [0.2417979932416685, -0.21023660139743305]

And regressed input:

TrainingTester.java:622 executed in 0.00 seconds (0.000 gc):

    return RefArrays.stream(RefUtil.addRef(data)).flatMap(x -> {
      return RefArrays.stream(x);
    }).limit(1).map(x -> {
      String temp_18_0015 = x.prettyPrint();
      x.freeRef();
      return temp_18_0015;
    }).reduce((a, b) -> a + "\n" + b).orElse("");

Returns

    [
    	[ [ 0.8228966379031057 ], [ 0.45512639421734646 ], [ -0.9941248202770427 ], [ 0.6810099594694214 ], [ -0.07072184025691985 ], [ -0.7401060343040435 ], [ 0.9969707574471713 ], [ -0.7640033102156047 ], ... ],
    	[ [ -0.5792771278727362 ], [ 0.4850087221732986 ], [ -0.272503170577457 ], [ 0.5898207797147266 ], [ -0.4797545568126713 ], [ -0.7833596879695917 ], [ -0.4365450252760552 ], [ -0.9852889556807238 ], ... ],
    	[ [ -0.3316351728002731 ], [ -0.4756540119521948 ], [ 0.5586558750293982 ], [ 0.7955838187650401 ], [ 0.6308585498332662 ], [ -0.26927509431442953 ], [ 0.44675482441119985 ], [ -0.135871673190614 ], ... ],
    	[ [ 0.8891144886344042 ], [ -0.05081040801048564 ], [ -0.9013695398301891 ], [ -0.5726168618780119 ], [ 0.3290036180582703 ], [ 0.9158585634913539 ], [ -0.1353138275263659 ], [ -0.5388661306220366 ], ... ],
    	[ [ 0.9062424520920278 ], [ -0.34410234437143994 ], [ 0.9697602874419258 ], [ -0.3385274696667637 ], [ -0.4474015763877637 ], [ -0.6435953310583229 ], [ -0.5268419431747753 ], [ -0.9421604093063394 ], ... ],
    	[ [ 0.4282885066527109 ], [ 0.4885461315465234 ], [ -0.35670814901074155 ], [ -0.4957581996468565 ], [ -0.09989652472047417 ], [ 0.5279829330759753 ], [ -0.20456257235999997 ], [ -0.34598452176174255 ], ... ],
    	[ [ -0.4978788898766193 ], [ -0.9354789474249037 ], [ 0.08932324993910257 ], [ -0.961361135380149 ], [ -0.26928886755143777 ], [ 0.7153733529502115 ], [ -0.2809869435119057 ], [ -0.5962684551430089 ], ... ],
    	[ [ -0.7072461681222133 ], [ 0.06903580456960245 ], [ 0.5592991673108045 ], [ -0.714516040228288 ], [ -0.345992192956156 ], [ 0.9271357122381274 ], [ -0.5729822525583663 ], [ 0.07108854807911635 ], ... ],
    	...
    ]

To produce the following output:

TrainingTester.java:633 executed in 0.01 seconds (0.000 gc):

    Result[] array = ConstantResult.batchResultArray(pop(RefUtil.addRef(data)));
    @Nullable
    Result eval = layer.eval(array);
    assert eval != null;
    TensorList tensorList = Result.getData(eval);
    String temp_18_0016 = tensorList.stream().limit(1).map(x -> {
      String temp_18_0017 = x.prettyPrint();
      x.freeRef();
      return temp_18_0017;
    }).reduce((a, b) -> a + "\n" + b).orElse("");
    tensorList.freeRef();
    return temp_18_0016;

Returns

    [
    	[ [ 3.2167567965750563 ], [ 3.160651275882537 ], [ Infinity ], [ 3.1913784808444867 ], [ Infinity ], [ Infinity ], [ 3.2541544043434163 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 3.1640259923989276 ], [ Infinity ], [ 3.1775312754033314 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 3.1732451870809797 ], [ 3.2115119158647123 ], [ 3.183522620315017 ], [ Infinity ], [ 3.159743847633455 ], [ Infinity ], ... ],
    	[ [ 3.230177724243902 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 3.1487494965935374 ], [ 3.2358795914320018 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 3.23381085864301 ], [ Infinity ], [ 3.24785993411849 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 3.157801107523123 ], [ 3.1644394973920282 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 3.169249930432236 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 3.136648117470155 ], [ Infinity ], [ Infinity ], [ 3.197098764492077 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 3.1362597775166723 ], [ 3.1733313507729353 ], [ Infinity ], [ Infinity ], [ 3.238332175950464 ], [ Infinity ], [ 3.1362945478359845 ], ... ],
    	...
    ]

Limited-Memory BFGS

Next, we apply the same optimization using L-BFGS, which is nearly ideal for purely second-order or quadratic functions.

TrainingTester.java:509 executed in 0.02 seconds (0.000 gc):

    IterativeTrainer iterativeTrainer = new IterativeTrainer(trainable.addRef());
    try {
      iterativeTrainer.setLineSearchFactory(label -> new ArmijoWolfeSearch());
      iterativeTrainer.setOrientation(new LBFGS());
      iterativeTrainer.setMonitor(TrainingTester.getMonitor(history));
      iterativeTrainer.setTimeout(30, TimeUnit.SECONDS);
      iterativeTrainer.setIterationsPerSample(100);
      iterativeTrainer.setMaxIterations(250);
      iterativeTrainer.setTerminateThreshold(0);
      return iterativeTrainer.run();
    } finally {
      iterativeTrainer.freeRef();
    }
Logging
Reset training subject: 4898691288078
Optimization terminated 0

NaN
com.simiacryptus.mindseye.lang.IterativeStopException: NaN
at com.simiacryptus.mindseye.opt.IterativeTrainer.measure(IterativeTrainer.java:156)
at com.simiacryptus.mindseye.opt.IterativeTrainer.run(IterativeTrainer.java:185)
at com.simiacryptus.mindseye.test.unit.TrainingTester.lambda$trainLBFGS$892d3ca8$1(TrainingTester.java:519)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainLBFGS(TrainingTester.java:509)
at com.simiacryptus.mindseye.test.unit.TrainingTester.runOpt(TrainingTester.java:658)
at com.simiacryptus.mindseye.test.unit.TrainingTester.train(TrainingTester.java:606)
at com.simiacryptus.mindseye.test.unit.TrainingTester.trainAll(TrainingTester.java:418)
at com.simiacryptus.mindseye.test.unit.TrainingTester.testCompleteLearning(TrainingTester.java:318)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:247)
at com.simiacryptus.mindseye.test.unit.TrainingTester.test(TrainingTester.java:58)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:369)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:418)
at com.simiacryptus.mindseye.test.LayerTestBase.trainingTest(LayerTestBase.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)


This training apply resulted in the following configuration:

TrainingTester.java:610 executed in 0.00 seconds (0.000 gc):

    RefList<double[]> state = network.state();
    assert state != null;
    String description = state.stream().map(RefArrays::toString).reduce((a, b) -> a + "\n" + b)
        .orElse("");
    state.freeRef();
    return description;

Returns

    [0.2417979932416685, -0.21023660139743305]

And regressed input:

TrainingTester.java:622 executed in 0.00 seconds (0.000 gc):

    return RefArrays.stream(RefUtil.addRef(data)).flatMap(x -> {
      return RefArrays.stream(x);
    }).limit(1).map(x -> {
      String temp_18_0015 = x.prettyPrint();
      x.freeRef();
      return temp_18_0015;
    }).reduce((a, b) -> a + "\n" + b).orElse("");

Returns

    [
    	[ [ 0.8228966379031057 ], [ 0.45512639421734646 ], [ -0.9941248202770427 ], [ 0.6810099594694214 ], [ -0.07072184025691985 ], [ -0.7401060343040435 ], [ 0.9969707574471713 ], [ -0.7640033102156047 ], ... ],
    	[ [ -0.5792771278727362 ], [ 0.4850087221732986 ], [ -0.272503170577457 ], [ 0.5898207797147266 ], [ -0.4797545568126713 ], [ -0.7833596879695917 ], [ -0.4365450252760552 ], [ -0.9852889556807238 ], ... ],
    	[ [ -0.3316351728002731 ], [ -0.4756540119521948 ], [ 0.5586558750293982 ], [ 0.7955838187650401 ], [ 0.6308585498332662 ], [ -0.26927509431442953 ], [ 0.44675482441119985 ], [ -0.135871673190614 ], ... ],
    	[ [ 0.8891144886344042 ], [ -0.05081040801048564 ], [ -0.9013695398301891 ], [ -0.5726168618780119 ], [ 0.3290036180582703 ], [ 0.9158585634913539 ], [ -0.1353138275263659 ], [ -0.5388661306220366 ], ... ],
    	[ [ 0.9062424520920278 ], [ -0.34410234437143994 ], [ 0.9697602874419258 ], [ -0.3385274696667637 ], [ -0.4474015763877637 ], [ -0.6435953310583229 ], [ -0.5268419431747753 ], [ -0.9421604093063394 ], ... ],
    	[ [ 0.4282885066527109 ], [ 0.4885461315465234 ], [ -0.35670814901074155 ], [ -0.4957581996468565 ], [ -0.09989652472047417 ], [ 0.5279829330759753 ], [ -0.20456257235999997 ], [ -0.34598452176174255 ], ... ],
    	[ [ -0.4978788898766193 ], [ -0.9354789474249037 ], [ 0.08932324993910257 ], [ -0.961361135380149 ], [ -0.26928886755143777 ], [ 0.7153733529502115 ], [ -0.2809869435119057 ], [ -0.5962684551430089 ], ... ],
    	[ [ -0.7072461681222133 ], [ 0.06903580456960245 ], [ 0.5592991673108045 ], [ -0.714516040228288 ], [ -0.345992192956156 ], [ 0.9271357122381274 ], [ -0.5729822525583663 ], [ 0.07108854807911635 ], ... ],
    	...
    ]

To produce the following output:

TrainingTester.java:633 executed in 0.01 seconds (0.000 gc):

    Result[] array = ConstantResult.batchResultArray(pop(RefUtil.addRef(data)));
    @Nullable
    Result eval = layer.eval(array);
    assert eval != null;
    TensorList tensorList = Result.getData(eval);
    String temp_18_0016 = tensorList.stream().limit(1).map(x -> {
      String temp_18_0017 = x.prettyPrint();
      x.freeRef();
      return temp_18_0017;
    }).reduce((a, b) -> a + "\n" + b).orElse("");
    tensorList.freeRef();
    return temp_18_0016;

Returns

    [
    	[ [ 3.2167567965750563 ], [ 3.160651275882537 ], [ Infinity ], [ 3.1913784808444867 ], [ Infinity ], [ Infinity ], [ 3.2541544043434163 ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 3.1640259923989276 ], [ Infinity ], [ 3.1775312754033314 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 3.1732451870809797 ], [ 3.2115119158647123 ], [ 3.183522620315017 ], [ Infinity ], [ 3.159743847633455 ], [ Infinity ], ... ],
    	[ [ 3.230177724243902 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 3.1487494965935374 ], [ 3.2358795914320018 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 3.23381085864301 ], [ Infinity ], [ 3.24785993411849 ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], [ Infinity ], ... ],
    	[ [ 3.157801107523123 ], [ 3.1644394973920282 ], [ Infinity ], [ Infinity ], [ Infinity ], [ 3.169249930432236 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ Infinity ], [ 3.136648117470155 ], [ Infinity ], [ Infinity ], [ 3.197098764492077 ], [ Infinity ], [ Infinity ], ... ],
    	[ [ Infinity ], [ 3.1362597775166723 ], [ 3.1733313507729353 ], [ Infinity ], [ Infinity ], [ 3.238332175950464 ], [ Infinity ], [ 3.1362945478359845 ], ... ],
    	...
    ]

TrainingTester.java:432 executed in 0.00 seconds (0.000 gc):

    return TestUtil.compare(title + " vs Iteration", runs);
Logging
No Data

TrainingTester.java:435 executed in 0.00 seconds (0.000 gc):

    return TestUtil.compareTime(title + " vs Time", runs);
Logging
No Data

Results

TrainingTester.java:255 executed in 0.00 seconds (0.000 gc):

    return grid(inputLearning, modelLearning, completeLearning);

Returns

Result

TrainingTester.java:258 executed in 0.00 seconds (0.000 gc):

    return new ComponentResult(null == inputLearning ? null : inputLearning.value,
        null == modelLearning ? null : modelLearning.value, null == completeLearning ? null : completeLearning.value);

Returns

    {"input":{ "LBFGS": { "type": "Converged", "value": 0.0 }, "CjGD": { "type": "Converged", "value": 0.0 }, "GD": { "type": "Converged", "value": 0.0 } }, "model":{ "LBFGS": { "type": "NonConverged", "value": NaN }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": NaN } }, "complete":{ "LBFGS": { "type": "NonConverged", "value": NaN }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": NaN } }}

LayerTests.java:425 executed in 0.00 seconds (0.000 gc):

    throwException(exceptions.addRef());

Results

detailsresult
{"input":{ "LBFGS": { "type": "Converged", "value": 0.0 }, "CjGD": { "type": "Converged", "value": 0.0 }, "GD": { "type": "Converged", "value": 0.0 } }, "model":{ "LBFGS": { "type": "NonConverged", "value": NaN }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": NaN } }, "complete":{ "LBFGS": { "type": "NonConverged", "value": NaN }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": NaN } }}OK
  {
    "result": "OK",
    "performance": {
      "execution_time": "10.066",
      "gc_time": "0.249"
    },
    "created_on": 1586739476856,
    "file_name": "trainingTest",
    "report": {
      "simpleName": "Basic",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.HyperbolicActivationLayerTest.Basic",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/test/java/com/simiacryptus/mindseye/layers/java/HyperbolicActivationLayerTest.java",
      "javaDoc": ""
    },
    "training_analysis": {
      "input": {
        "LBFGS": {
          "type": "Converged",
          "value": 0.0
        },
        "CjGD": {
          "type": "Converged",
          "value": 0.0
        },
        "GD": {
          "type": "Converged",
          "value": 0.0
        }
      },
      "model": {
        "LBFGS": {
          "type": "NonConverged",
          "value": "NaN"
        },
        "CjGD": {
          "type": "NonConverged",
          "value": "NaN"
        },
        "GD": {
          "type": "NonConverged",
          "value": "NaN"
        }
      },
      "complete": {
        "LBFGS": {
          "type": "NonConverged",
          "value": "NaN"
        },
        "CjGD": {
          "type": "NonConverged",
          "value": "NaN"
        },
        "GD": {
          "type": "NonConverged",
          "value": "NaN"
        }
      }
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/java/HyperbolicActivationLayer/Basic/trainingTest/202004135756",
    "id": "c1a684bf-c926-4a99-bf0a-ab00145b085e",
    "report_type": "Components",
    "display_name": "Comparative Training",
    "target": {
      "simpleName": "HyperbolicActivationLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.HyperbolicActivationLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/main/java/com/simiacryptus/mindseye/layers/java/HyperbolicActivationLayer.java",
      "javaDoc": ""
    }
  }