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 4470934823244421120

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.00 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

    [ 1.764, -0.608 ]
    [ -0.608, 1.764 ]
    [ 1.764, -0.608 ]
    [ 1.764, -0.608 ]
    [ 1.764, -0.608 ]

Gradient Descent

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

TrainingTester.java:480 executed in 0.34 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: 1533219150998
BACKPROP_AGG_SIZE = 3
THREADS = 64
SINGLE_THREADED = false
Initialized CoreSettings = {
"backpropAggregationSize" : 3,
"jvmThreads" : 64,
"singleThreaded" : false
}
Reset training subject: 1533250148438
Constructing line search parameters: GD
th(0)=1.8133828191685493;dx=-4.368738597952396E19
Armijo: th(2.154434690031884)=2.48316671046316; dx=1.9644752571283148E20 evalInputDelta=-0.6697838912946108
Armijo: th(1.077217345015942)=2.669934681082691; dx=1.9644752571283148E20 evalInputDelta=-0.8565518619141419
Armijo: th(0.3590724483386473)=2.91722409839269; dx=1.9644752571283148E20 evalInputDelta=-1.1038412792241408
Armijo: th(0.08976811208466183)=3.036149961819927; dx=1.9644752571283148E20 evalInputDelta=-1.2227671426513775
Armijo: th(0.017953622416932366)=3.0713457554011594; dx=1.9644752571283148E20 evalInputDelta=-1.2579629362326101
Armijo: th(0.002992270402822061)=3.0788918025890033; dx=1.9644752571283148E20 evalInputDelta=-1.265508983420454
Armijo: th(4.2746720040315154E-4)=3.0801931037013395; dx=1.9644752571283148E20 evalInputDelta=-1.2668102845327902
Armijo: th(5.343340005039394E-5)=3.0803830664290963; dx=1.9644752571283148E20 evalInputDelta=-1.267000247260547
Armijo: th(5.9370444500437714E-6)=3.0804071921391607; dx=1.9644752571283148E20 evalInputDelta=-1.2670243729706114
Armijo: th(5.937044450043771E-7)=3.0804099063303303; dx=1.9644752571283148E20 evalInputDelta=-1.267027087161781
Armijo: th(5.397313136403428E-8)=3.0804101804916035; dx=1.9644752571283148E20 evalInputDelta=-1.2670273613230543
Armijo: th(4.4977609470028565E-9)=3.0804102056230587; dx=1.9644752571283148E20 evalInputDelta=-1.2670273864545094
New Minimum: 1.8133828191685493 > 0.8688724520367657
Armijo: th(3.4598161130791205E-10)=0.8688724520367657; dx=4.9275756198336685E8 evalInputDelta=0.9445103671317836
Armijo: th(2.4712972236279432E-11)=1.8187415980401966; dx=-4.368738597951103E19 evalInputDelta=-0.005358778871647374
Armijo: th(1.6475314824186289E-12)=1.8137302993162205; dx=-4.3687385979523146E19 evalInputDelta=-3.474801476712752E-4
Armijo: th(1.029707176511643E-13)=1.8134044973605719; dx=-4.368738597952391E19 evalInputDelta=-2.167819202258947E-5
Armijo: th(6.057101038303783E-15)=1.8133840942115718; dx=-4.368738597952396E19 evalInputDelta=-1.2750430224972575E-6
MIN ALPHA (3.3650561323909904E-16): th(3.4598161130791205E-10)=0.8688724520367657
Fitness changed from 1.8133828191685493 to 0.8688724520367657
Iteration 1 complete. Error: 0.8688724520367657 Total: 0.1416; Orientation: 0.0036; Line Search: 0.0984
th(0)=0.8688724520367657;dx=-0.6751736666710786
New Minimum: 0.8688724520367657 > 0.8688724520367643
WOLFE (weak): th(2.154434690031884E-15)=0.8688724520367643; dx=-0.6751736666710771 evalInputDelta=1.3322676295501878E-15
New Minimum: 0.8688724520367643 > 0.8688724520367629
WOLFE (weak): th(4.308869380063768E-15)=0.8688724520367629; dx=-0.6751736666710758 evalInputDelta=2.7755575615628914E-15
New Minimum: 0.8688724520367629 > 0.8688724520367572
WOLFE (weak): th(1.2926608140191303E-14)=0.8688724520367572; dx=-0.6751736666710697 evalInputDelta=8.43769498715119E-15
New Minimum: 0.8688724520367572 > 0.8688724520367309
WOLFE (weak): th(5.1706432560765214E-14)=0.8688724520367309; dx=-0.6751736666710433 evalInputDelta=3.47499806707674E-14
New Minimum: 0.8688724520367309 > 0.8688724520365912
WOLFE (weak): th(2.5853216280382605E-13)=0.8688724520365912; dx=-0.6751736666709018 evalInputDelta=1.744160371686121E-13
New Minimum: 0.8688724520365912 > 0.8688724520357184
WOLFE (weak): th(1.5511929768229563E-12)=0.8688724520357184; dx=-0.675173666670017 evalInputDelta=1.0472733791289102E-12
New Minimum: 0.8688724520357184 > 0.8688724520294343
WOLFE (weak): th(1.0858350837760695E-11)=0.8688724520294343; dx=-0.6751736666636482 evalInputDelta=7.331357743112221E-12
New Minimum: 0.8688724520294343 > 0.8688724519781156
WOLFE (weak): th(8.686680670208556E-11)=0.8688724519781156; dx=-0.6751736666116356 evalInputDelta=5.865008478878053E-11
New Minimum: 0.8688724519781156 > 0.8688724515089141
WOLFE (weak): th(7.8180126031877E-10)=0.8688724515089141; dx=-0.6751736661360934 evalInputDelta=5.27851540255142E-10
New Minimum: 0.8688724515089141 > 0.8688724467582496
WOLFE (weak): th(7.818012603187701E-9)=0.8688724467582496; dx=-0.6751736613212271 evalInputDelta=5.278516068685235E-9
New Minimum: 0.8688724467582496 > 0.8688723939730897
WOLFE (weak): th(8.599813863506471E-8)=0.8688723939730897; dx=-0.675173607822718 evalInputDelta=5.806367597838147E-8
New Minimum: 0.8688723939730897 > 0.8688717552729871
WOLFE (weak): th(1.0319776636207765E-6)=0.8688717552729871; dx=-0.6751729604916203 evalInputDelta=6.967637785626479E-7
New Minimum: 0.8688717552729871 > 0.8688633941644854
WOLFE (weak): th(1.3415709627070094E-5)=0.8688633941644854; dx=-0.6751644864858575 evalInputDelta=9.05787228022703E-6
New Minimum: 0.8688633941644854 > 0.8687456530305265
WOLFE (weak): th(1.878199347789813E-4)=0.8687456530305265; dx=-0.6750451731977111 evalInputDelta=1.267990062391311E-4
New Minimum: 0.8687456530305265 > 0.8669729950168845
WOLFE (weak): th(0.0028172990216847197)=0.8669729950168845; dx=-0.6732528206044766 evalInputDelta=0.0018994570198811456
New Minimum: 0.8669729950168845 > 0.8391072476714438
WOLFE (weak): th(0.045076784346955515)=0.8391072476714438; dx=-0.6460135710766304 evalInputDelta=0.029765204365321818
New Minimum: 0.8391072476714438 > 0.47947254457770755
END: th(0.7663053338982437)=0.47947254457770755; dx=-0.3960358583559527 evalInputDelta=0.3893999074590581
Fitness changed from 0.8688724520367657 to 0.47947254457770755
Iteration 2 complete. Error: 0.47947254457770755 Total: 0.0861; Orientation: 0.0010; Line Search: 0.0809
th(0)=0.47947254457770755;dx=-0.24713943990292295
New Minimum: 0.47947254457770755 > 0.15686292858029982
END: th(1.650954794506842)=0.15686292858029982; dx=-0.17003863190574015 evalInputDelta=0.32260961599740773
Fitness changed from 0.47947254457770755 to 0.15686292858029982
Iteration 3 complete. Error: 0.15686292858029982 Total: 0.0081; Orientation: 0.0008; Line Search: 0.0053
th(0)=0.15686292858029982;dx=-0.11732884241941517
New Minimum: 0.15686292858029982 > 0.11261938024230192
WOLFE (weak): th(3.5568742809600002)=0.11261938024230192; dx=-0.11314019959428916 evalInputDelta=0.0442435483379979
New Minimum: 0.11261938024230192 > 0.09284713447295763
WOLFE (weak): th(7.1137485619200005)=0.09284713447295763; dx=-0.111734033175869 evalInputDelta=0.06401579410734219
New Minimum: 0.09284713447295763 > 0.06702771144291739
WOLFE (weak): th(21.34124568576)=0.06702771144291739; dx=-0.11063262612872701 evalInputDelta=0.08983521713738243
New Minimum: 0.06702771144291739 > 0.018853453186332907
WOLFE (weak): th(85.36498274304)=0.018853453186332907; dx=-0.10971789001203788 evalInputDelta=0.1380094753939669
New Minimum: 0.018853453186332907 > 0.0
WOLFE (weak): th(426.8249137152)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
WOLFE (weak): th(2560.9494822912)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
WOLFE (weak): th(17926.6463760384)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
WOLFE (weak): th(143413.1710083072)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
WOLFE (weak): th(1290718.5390747648)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(1.2907185390747648E7)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(7098951.964911207)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(4194835.251992986)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(2742776.895533875)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(2016747.71730432)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(1653733.1281895423)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(1472225.8336321535)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(1381472.186353459)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
WOLFE (weak): th(1336095.3627141118)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(1358783.7745337854)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Armijo: th(1347439.5686239486)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
mu ~= nu (1336095.3627141118): th(426.8249137152)=0.0
Fitness changed from 0.15686292858029982 to 0.0
Iteration 4 complete. Error: 0.0 Total: 0.0492; Orientation: 0.0007; Line Search: 0.0466
th(0)=0.0;dx=-0.10815715310571941
Armijo: th(2890750.373993524)=1.209929257441172; dx=1.5276013963098994E8 evalInputDelta=-1.209929257441172
Armijo: th(1445375.186996762)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Armijo: th(481791.72899892065)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Armijo: th(120447.93224973016)=1.209929257441172; dx=1.5276013963098994E8 evalInputDelta=-1.209929257441172
Armijo: th(24089.586449946033)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Armijo: th(4014.9310749910055)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Armijo: th(573.5615821415722)=0.0016665257167570596; dx=-0.10815122727174023 evalInputDelta=-0.0016665257167570596
Armijo: th(71.69519776769653)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(7.966133085299614)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(0.7966133085299614)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(0.07241939168454194)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(0.006034949307045161)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(4.6422686977270474E-4)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(3.3159062126621764E-5)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(2.210604141774784E-6)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(1.38162758860924E-7)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(8.127221109466118E-9)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(4.515122838592288E-10)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(2.376380441364362E-11)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(1.188190220682181E-12)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(5.658048669915148E-14)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Armijo: th(2.5718403045068854E-15)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
MIN ALPHA (1.118191436742124E-16): th(0.0)=0.0
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.0460; Orientation: 0.0006; Line Search: 0.0429
Iteration 5 failed. Error: 0.0
Previous Error: 0.0 -> 0.0
Optimization terminated 5
Final threshold in iteration 5: 0.0 (> 0.0) after 0.332s (< 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 0.29 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: 1533557557826
Reset training subject: 1533559021122
Constructing line search parameters: GD
F(0.0) = LineSearchPoint{point=PointSample{avg=1.8133828191685493}, derivative=-4.368738597952396E19}
F(1.0E-10) = LineSearchPoint{point=PointSample{avg=1.8373667595727716}, derivative=-4.368738597945957E19}, evalInputDelta = 0.02398394040422236
F(7.000000000000001E-10) = LineSearchPoint{point=PointSample{avg=3.1179874467999578}, derivative=1.9644752571277214E20}, evalInputDelta = 1.3046046276314085
F(5.384615384615385E-11) = LineSearchPoint{point=PointSample{avg=1.8254987901058055}, derivative=-4.368738597949358E19}, evalInputDelta = 0.012115970937256249
New Minimum: 1.8133828191685493 > 0.8963053201739006
F(3.7692307692307697E-10) = LineSearchPoint{point=PointSample{avg=0.8963053201739006}, derivative=1.3673749873436499E9}, evalInputDelta = -0.9170774989946486
0.8963053201739006 <= 1.8133828191685493
Converged to right
Fitness changed from 1.8133828191685493 to 0.8963053201739006
Iteration 1 complete. Error: 0.8963053201739006 Total: 0.0160; Orientation: 0.0004; Line Search: 0.0114
F(0.0) = LineSearchPoint{point=PointSample{avg=0.8963053201739006}, derivative=-0.9743806965023817}
New Minimum: 0.8963053201739006 > 0.8963053198066339
F(3.7692307692307697E-10) = LineSearchPoint{point=PointSample{avg=0.8963053198066339}, derivative=-0.9743806954047176}, evalInputDelta = -3.672667725496126E-10
New Minimum: 0.8963053198066339 > 0.8963053176030347
F(2.6384615384615386E-9) = LineSearchPoint{point=PointSample{avg=0.8963053176030347}, derivative=-0.974380688818733}, evalInputDelta = -2.570865964557356E-9
New Minimum: 0.8963053176030347 > 0.8963053021778393
F(1.846923076923077E-8) = LineSearchPoint{point=PointSample{avg=0.8963053021778393}, derivative=-0.974380642716845}, evalInputDelta = -1.7996061307812283E-8
New Minimum: 0.8963053021778393 > 0.8963051942014915
F(1.292846153846154E-7) = LineSearchPoint{point=PointSample{avg=0.8963051942014915}, derivative=-0.9743803200038241}, evalInputDelta = -1.2597240917067154E-7
New Minimum: 0.8963051942014915 > 0.8963044383680583
F(9.049923076923077E-7) = LineSearchPoint{point=PointSample{avg=0.8963044383680583}, derivative=-0.9743780610222493}, evalInputDelta = -8.818058423454289E-7
New Minimum: 0.8963044383680583 > 0.8962991475830888
F(6.334946153846154E-6) = LineSearchPoint{point=PointSample{avg=0.8962991475830888}, derivative=-0.9743622486201468}, evalInputDelta = -6.172590811814871E-6
New Minimum: 0.8962991475830888 > 0.8962621144920883
F(4.434462307692308E-5) = LineSearchPoint{point=PointSample{avg=0.8962621144920883}, derivative=-0.9742515847773262}, evalInputDelta = -4.320568181237494E-5
New Minimum: 0.8962621144920883 > 0.8960030005245715
F(3.1041236153846153E-4) = LineSearchPoint{point=PointSample{avg=0.8960030005245715}, derivative=-0.9734780616705151}, evalInputDelta = -3.0231964932914135E-4
New Minimum: 0.8960030005245715 > 0.8941949291081832
F(0.002172886530769231) = LineSearchPoint{point=PointSample{avg=0.8941949291081832}, derivative=-0.9681178452590891}, evalInputDelta = -0.0021103910657174207
New Minimum: 0.8941949291081832 > 0.8818062516979174
F(0.015210205715384615) = LineSearchPoint{point=PointSample{avg=0.8818062516979174}, derivative=-0.9330672649976202}, evalInputDelta = -0.014499068475983257
New Minimum: 0.8818062516979174 > 0.8050944588755742
F(0.1064714400076923) = LineSearchPoint{point=PointSample{avg=0.8050944588755742}, derivative=-0.7656771653368238}, evalInputDelta = -0.09121086129832645
New Minimum: 0.8050944588755742 > 0.4571896183226542
F(0.7453000800538462) = LineSearchPoint{point=PointSample{avg=0.4571896183226542}, derivative=-0.41596054605365695}, evalInputDelta = -0.43911570185124643
F(5.217100560376923) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.40131542772130174) = LineSearchPoint{point=PointSample{avg=0.6189201976479196}, derivative=-0.5363469366587248}, evalInputDelta = -0.277385122525981
New Minimum: 0.4571896183226542 > 0.18724722620041542
F(2.809207994049112) = LineSearchPoint{point=PointSample{avg=0.18724722620041542}, derivative=-0.18230022889906014}, evalInputDelta = -0.7090580939734852
F(19.664455958343787) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(1.5126504583341374) = LineSearchPoint{point=PointSample{avg=0.19714678824626866}, derivative=-0.2780512977368249}, evalInputDelta = -0.699158531927632
F(10.588553208338961) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.8145040929491508) = LineSearchPoint{point=PointSample{avg=0.4290132426668395}, derivative=-0.3985972615372243}, evalInputDelta = -0.46729207750706114
F(5.701528650644056) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.4385791269726197) = LineSearchPoint{point=PointSample{avg=0.59925666279677}, derivative=-0.5192615164659009}, evalInputDelta = -0.2970486573771306
F(3.0700538888083377) = LineSearchPoint{point=PointSample{avg=0.225880780797739}, derivative=-0.042929029473965694}, evalInputDelta = -0.6704245393761616
F(21.490377221658363) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
New Minimum: 0.18724722620041542 > 0.165763844935565
F(1.6531059401275665) = LineSearchPoint{point=PointSample{avg=0.165763844935565}, derivative=-0.26417204021635543}, evalInputDelta = -0.7305414752383357
F(11.571741580892965) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.8901339677609973) = LineSearchPoint{point=PointSample{avg=0.3995331610378586}, derivative=-0.38125145068175637}, evalInputDelta = -0.49677215913604206
F(6.230937774326981) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.4793029057174601) = LineSearchPoint{point=PointSample{avg=0.578464989816526}, derivative=-0.5020864814895254}, evalInputDelta = -0.3178403303573746
F(3.3551203400222205) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271129E9}, evalInputDelta = 0.31362393726727134
F(0.25808618000170924) = LineSearchPoint{point=PointSample{avg=0.7012905459259906}, derivative=-0.6192601878576323}, evalInputDelta = -0.19501477424791003
New Minimum: 0.165763844935565 > 0.1355950058507737
F(1.8066032600119648) = LineSearchPoint{point=PointSample{avg=0.1355950058507737}, derivative=-0.25045092794130064}, evalInputDelta = -0.760710314323127
F(12.646222820083754) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.9727863707756733) = LineSearchPoint{point=PointSample{avg=0.36874834622053193}, derivative=-0.363932258533097}, evalInputDelta = -0.5275569739533688
F(6.809504595429713) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271129E9}, evalInputDelta = 0.31362393726727134
F(0.5238080458022856) = LineSearchPoint{point=PointSample{avg=0.5565087871388122}, derivative=-0.4848399092839157}, evalInputDelta = -0.3397965330350884
F(3.666656320615999) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(0.2820504862012307) = LineSearchPoint{point=PointSample{avg=0.6866485782286065}, derivative=-0.6029279820496383}, evalInputDelta = -0.20965674194529416
F(1.9743534034086148) = LineSearchPoint{point=PointSample{avg=0.14098816264492225}, derivative=-0.2464862394673748}, evalInputDelta = -0.7553171575289783
F(13.820473823860304) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.3673749876271126E9}, evalInputDelta = 0.31362393726727134
F(1.0631133710661773) = LineSearchPoint{point=PointSample{avg=0.3366680066081655}, derivative=-0.3466444883404158}, evalInputDelta = -0.5596373135657351
F(7.4417935

...skipping 9896 bytes...

= 0.0
F(1115.5642132546336) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(7808.949492782435) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(600.6884225217258) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(4204.818957652081) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(323.4476121270831) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(2264.133284889582) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(174.16409883766013) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1219.148691863621) = LineSearchPoint{point=PointSample{avg=0.015631005191010426}, derivative=-0.10809162148469868}, evalInputDelta = 0.015631005191010426
F(93.78066860489392) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(656.4646802342575) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(4595.252761639802) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(353.48098166460017) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(2474.366871652201) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(190.33591320401547) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1332.3513924281083) = LineSearchPoint{point=PointSample{avg=0.05201354652870629}, derivative=-0.1078088678998352}, evalInputDelta = 0.05201354652870629
F(102.48856864831602) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(717.4199805382121) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(5021.939863767485) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(386.3030664436527) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(2704.121465105569) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(208.00934346965914) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1456.065404287614) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(112.00503109904723) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(784.0352176933307) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(5488.246523853315) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(422.17280952717806) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(2955.209666690246) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(227.32382051463432) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1591.2667436024403) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(122.40513412326465) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(856.8359388628526) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(5997.851572039968) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(461.37319784922835) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(3229.6123849445985) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(248.43172191881527) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1739.0220534317068) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(133.77092718705438) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(936.3964903093806) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(6554.775432165665) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.527601396309899E8}, evalInputDelta = 1.209929257441172
F(504.2134947819742) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(3529.4944634738195) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(271.4995741133707) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1900.497018793595) = LineSearchPoint{point=PointSample{avg=1.209929257441172}, derivative=1.5276013963098994E8}, evalInputDelta = 1.209929257441172
F(146.1920783687381) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
F(1023.3445485811667) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Loops = 52
F(511.67227429058335) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 511.67227429058335
F(255.83613714529167) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 255.83613714529167
F(127.91806857264584) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 127.91806857264584
F(63.95903428632292) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 63.95903428632292
F(31.97951714316146) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 31.97951714316146
F(15.98975857158073) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 15.98975857158073
F(7.994879285790365) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 7.994879285790365
F(3.9974396428951824) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 3.9974396428951824
F(1.9987198214475912) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 1.9987198214475912
F(0.9993599107237956) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 0.9993599107237956
F(0.4996799553618978) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Right bracket at 0.4996799553618978
F(0.2498399776809489) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-0.10815715310571941}, evalInputDelta = 0.0
Loops = 12
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.1026; Orientation: 0.0004; Line Search: 0.1010
Iteration 4 failed. Error: 0.0
Previous Error: 0.0 -> 0.0
Optimization terminated 4
Final threshold in iteration 4: 0.0 (> 0.0) after 0.292s (< 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 0.49 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: 1533857511468
Reset training subject: 1533858637069
Adding measurement 7426ac00 to history. Total: 0
LBFGS Accumulation History: 1 points
Constructing line search parameters: GD
Non-optimal measurement 1.8133828191685493 < 1.8133828191685493. Total: 1
th(0)=1.8133828191685493;dx=-4.368738597952396E19
Non-optimal measurement 2.48316671046316 < 1.8133828191685493. Total: 1
Armijo: th(2.154434690031884)=2.48316671046316; dx=1.9644752571283148E20 evalInputDelta=-0.6697838912946108
Non-optimal measurement 2.669934681082691 < 1.8133828191685493. Total: 1
Armijo: th(1.077217345015942)=2.669934681082691; dx=1.9644752571283148E20 evalInputDelta=-0.8565518619141419
Non-optimal measurement 2.91722409839269 < 1.8133828191685493. Total: 1
Armijo: th(0.3590724483386473)=2.91722409839269; dx=1.9644752571283148E20 evalInputDelta=-1.1038412792241408
Non-optimal measurement 3.036149961819927 < 1.8133828191685493. Total: 1
Armijo: th(0.08976811208466183)=3.036149961819927; dx=1.9644752571283148E20 evalInputDelta=-1.2227671426513775
Non-optimal measurement 3.0713457554011594 < 1.8133828191685493. Total: 1
Armijo: th(0.017953622416932366)=3.0713457554011594; dx=1.9644752571283148E20 evalInputDelta=-1.2579629362326101
Non-optimal measurement 3.0788918025890033 < 1.8133828191685493. Total: 1
Armijo: th(0.002992270402822061)=3.0788918025890033; dx=1.9644752571283148E20 evalInputDelta=-1.265508983420454
Non-optimal measurement 3.0801931037013395 < 1.8133828191685493. Total: 1
Armijo: th(4.2746720040315154E-4)=3.0801931037013395; dx=1.9644752571283148E20 evalInputDelta=-1.2668102845327902
Non-optimal measurement 3.0803830664290963 < 1.8133828191685493. Total: 1
Armijo: th(5.343340005039394E-5)=3.0803830664290963; dx=1.9644752571283148E20 evalInputDelta=-1.267000247260547
Non-optimal measurement 3.0804071921391607 < 1.8133828191685493. Total: 1
Armijo: th(5.9370444500437714E-6)=3.0804071921391607; dx=1.9644752571283148E20 evalInputDelta=-1.2670243729706114
Non-optimal measurement 3.0804099063303303 < 1.8133828191685493. Total: 1
Armijo: th(5.937044450043771E-7)=3.0804099063303303; dx=1.9644752571283148E20 evalInputDelta=-1.267027087161781
Non-optimal measurement 3.0804101804916035 < 1.8133828191685493. Total: 1
Armijo: th(5.397313136403428E-8)=3.0804101804916035; dx=1.9644752571283148E20 evalInputDelta=-1.2670273613230543
Non-optimal measurement 3.0804102056230587 < 1.8133828191685493. Total: 1
Armijo: th(4.4977609470028565E-9)=3.0804102056230587; dx=1.9644752571283148E20 evalInputDelta=-1.2670273864545094
Adding measurement 60a6f510 to history. Total: 1
New Minimum: 1.8133828191685493 > 0.8688724520367657
Armijo: th(3.4598161130791205E-10)=0.8688724520367657; dx=4.9275756198336685E8 evalInputDelta=0.9445103671317836
Non-optimal measurement 1.8187415980401966 < 0.8688724520367657. Total: 2
Armijo: th(2.4712972236279432E-11)=1.8187415980401966; dx=-4.368738597951103E19 evalInputDelta=-0.005358778871647374
Non-optimal measurement 1.8137302993162205 < 0.8688724520367657. Total: 2
Armijo: th(1.6475314824186289E-12)=1.8137302993162205; dx=-4.3687385979523146E19 evalInputDelta=-3.474801476712752E-4
Non-optimal measurement 1.8134044973605719 < 0.8688724520367657. Total: 2
Armijo: th(1.029707176511643E-13)=1.8134044973605719; dx=-4.368738597952391E19 evalInputDelta=-2.167819202258947E-5
Non-optimal measurement 1.8133840942115718 < 0.8688724520367657. Total: 2
Armijo: th(6.057101038303783E-15)=1.8133840942115718; dx=-4.368738597952396E19 evalInputDelta=-1.2750430224972575E-6
Non-optimal measurement 0.8688724520367657 < 0.8688724520367657. Total: 2
MIN ALPHA (3.3650561323909904E-16): th(3.4598161130791205E-10)=0.8688724520367657
Fitness changed from 1.8133828191685493 to 0.8688724520367657
Iteration 1 complete. Error: 0.8688724520367657 Total: 0.0401; Orientation: 0.0031; Line Search: 0.0344
Non-optimal measurement 0.8688724520367657 < 0.8688724520367657. Total: 2
LBFGS Accumulation History: 2 points
Non-optimal measurement 0.8688724520367657 < 0.8688724520367657. Total: 2
th(0)=0.8688724520367657;dx=-0.6751736666710786
Adding measurement 139b449b to history. Total: 2
New Minimum: 0.8688724520367657 > 0.8688724520367643
WOLFE (weak): th(2.154434690031884E-15)=0.8688724520367643; dx=-0.6751736666710771 evalInputDelta=1.3322676295501878E-15
Adding measurement 20768715 to history. Total: 3
New Minimum: 0.8688724520367643 > 0.8688724520367629
WOLFE (weak): th(4.308869380063768E-15)=0.8688724520367629; dx=-0.6751736666710758 evalInputDelta=2.7755575615628914E-15
Adding measurement 25c75106 to history. Total: 4
New Minimum: 0.8688724520367629 > 0.8688724520367572
WOLFE (weak): th(1.2926608140191303E-14)=0.8688724520367572; dx=-0.6751736666710697 evalInputDelta=8.43769498715119E-15
Adding measurement 7a2da37e to history. Total: 5
New Minimum: 0.8688724520367572 > 0.8688724520367309
WOLFE (weak): th(5.1706432560765214E-14)=0.8688724520367309; dx=-0.6751736666710433 evalInputDelta=3.47499806707674E-14
Adding measurement 2a31c2a8 to history. Total: 6
New Minimum: 0.8688724520367309 > 0.8688724520365912
WOLFE (weak): th(2.5853216280382605E-13)=0.8688724520365912; dx=-0.6751736666709018 evalInputDelta=1.744160371686121E-13
Adding measurement 654aeb2a to history. Total: 7
New Minimum: 0.8688724520365912 > 0.8688724520357184
WOLFE (weak): th(1.5511929768229563E-12)=0.8688724520357184; dx=-0.675173666670017 evalInputDelta=1.0472733791289102E-12
Adding measurement 3a489477 to history. Total: 8
New Minimum: 0.8688724520357184 > 0.8688724520294343
WOLFE (weak): th(1.0858350837760695E-11)=0.8688724520294343; dx=-0.6751736666636482 evalInputDelta=7.331357743112221E-12
Adding measurement 36e6ab27 to history. Total: 9
New Minimum: 0.8688724520294343 > 0.8688724519781156
WOLFE (weak): th(8.686680670208556E-11)=0.8688724519781156; dx=-0.6751736666116356 evalInputDelta=5.865008478878053E-11
Adding measurement 3d71eda6 to history. Total: 10
New Minimum: 0.8688724519781156 > 0.8688724515089141
WOLFE (weak): th(7.8180126031877E-10)=0.8688724515089141; dx=-0.6751736661360934 evalInputDelta=5.27851540255142E-10
Adding measurement 7664f22e to history. Total: 11
New Minimum: 0.8688724515089141 > 0.8688724467582496
WOLFE (weak): th(7.818012603187701E-9)=0.8688724467582496; dx=-0.6751736613212271 evalInputDelta=5.278516068685235E-9
Adding measurement 16043782 to history. Total: 12
New Minimum: 0.8688724467582496 > 0.8688723939730897
WOLFE (weak): th(8.599813863506471E-8)=0.8688723939730897; dx=-0.675173607822718 evalInputDelta=5.806367597838147E-8
Adding measurement 37bbeeab to history. Total: 13
New Minimum: 0.8688723939730897 > 0.8688717552729871
WOLFE (weak): th(1.0319776636207765E-6)=0.8688717552729871; dx=-0.6751729604916203 evalInputDelta=6.967637785626479E-7
Adding measurement 33ace6d2 to history. Total: 14
New Minimum: 0.8688717552729871 > 0.8688633941644854
WOLFE (weak): th(1.3415709627070094E-5)=0.8688633941644854; dx=-0.6751644864858575 evalInputDelta=9.05787228022703E-6
Adding measurement 230224eb to history. Total: 15
New Minimum: 0.8688633941644854 > 0.8687456530305265
WOLFE (weak): th(1.878199347789813E-4)=0.8687456530305265; dx=-0.6750451731977111 evalInputDelta=1.267990062391311E-4
Adding measurement 360ee659 to history. Total: 16
New Minimum: 0.8687456530305265 > 0.8669729950168845
WOLFE (weak): th(0.0028172990216847197)=0.8669729950168845; dx=-0.6732528206044766 evalInputDelta=0.0018994570198811456
Adding measurement 54e8497 to history. Total: 17
New Minimum: 0.8669729950168845 > 0.8391072476714438
WOLFE (weak): th(0.045076784346955515)=0.8391072476714438; dx=-0.6460135710766304 evalInputDelta=0.029765204365321818
Adding measurement 30b36ed6 to history. Total: 18
New Minimum: 0.8391072476714438 > 0.47947254457770755
END: th(0.7663053338982437)=0.47947254457770755; dx=-0.3960358583559527 evalInputDelta=0.3893999074590581
Fitness changed from 0.8688724520367657 to 0.47947254457770755
Iteration 2 complete. Error: 0.47947254457770755 Total: 0.0297; Orientation: 0.0007; Line Search: 0.0263
Non-optimal measurement 0.47947254457770755 < 0.47947254457770755. Total: 19
Rejected: LBFGS Orientation magnitude: 5.016e-01, gradient 4.971e-01, dot -0.983; [298ab487-daeb-4246-98d

...skipping 15104 bytes...

=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
Armijo: th(1653733.1281895423)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
Armijo: th(1472225.8336321535)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
Armijo: th(1381472.186353459)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
WOLFE (weak): th(1336095.3627141118)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
Armijo: th(1358783.7745337854)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
Armijo: th(1347439.5686239486)=0.0; dx=-0.10955824774775141 evalInputDelta=0.15686292858029982
Non-optimal measurement 0.0 < 0.0. Total: 9
mu ~= nu (1336095.3627141118): th(426.8249137152)=0.0
Fitness changed from 0.15686292858029982 to 0.0
Iteration 4 complete. Error: 0.0 Total: 0.0384; Orientation: 0.0126; Line Search: 0.0250
Non-optimal measurement 0.0 < 0.0. Total: 9
Rejected: LBFGS Orientation magnitude: 7.956e-01, gradient 3.289e-01, dot -0.991; [3828324b-c610-41f8-98e1-820d753e71a9 = 1.000/1.000e+00, a4911443-3aa1-45ed-a0e5-bb6401fa647b = 1.000/1.000e+00, 2761be66-cb06-4119-a514-e7cb9954cc7a = 1.000/1.000e+00, b7505353-8d6c-42f6-9d7b-9e9b3032eb77 = 1.000/1.000e+00, 298ab487-daeb-4246-98d8-f3b437ef1fab = 1.000/1.000e+00]
Orientation rejected. Popping history element from 0.0, 0.018853453186332907, 0.06702771144291739, 0.09284713447295763, 0.11261938024230192, 0.15686292858029982, 0.8688724520367643, 0.8688724520367657, 1.8133828191685493
Rejected: LBFGS Orientation magnitude: 1.266e+00, gradient 3.289e-01, dot -0.832; [b7505353-8d6c-42f6-9d7b-9e9b3032eb77 = 1.000/1.000e+00, 2761be66-cb06-4119-a514-e7cb9954cc7a = 1.000/1.000e+00, 3828324b-c610-41f8-98e1-820d753e71a9 = 1.000/1.000e+00, 298ab487-daeb-4246-98d8-f3b437ef1fab = 1.000/1.000e+00, a4911443-3aa1-45ed-a0e5-bb6401fa647b = 1.000/1.000e+00]
Orientation rejected. Popping history element from 0.0, 0.018853453186332907, 0.06702771144291739, 0.09284713447295763, 0.11261938024230192, 0.15686292858029982, 0.8688724520367643, 0.8688724520367657
Rejected: LBFGS Orientation magnitude: 1.515e+00, gradient 3.289e-01, dot -0.876; [298ab487-daeb-4246-98d8-f3b437ef1fab = 1.000/1.000e+00, a4911443-3aa1-45ed-a0e5-bb6401fa647b = 1.000/1.000e+00, 3828324b-c610-41f8-98e1-820d753e71a9 = 1.000/1.000e+00, b7505353-8d6c-42f6-9d7b-9e9b3032eb77 = 1.000/1.000e+00, 2761be66-cb06-4119-a514-e7cb9954cc7a = 1.000/1.000e+00]
Orientation rejected. Popping history element from 0.0, 0.018853453186332907, 0.06702771144291739, 0.09284713447295763, 0.11261938024230192, 0.15686292858029982, 0.8688724520367643
Rejected: LBFGS Orientation magnitude: 6.255e+01, gradient 3.289e-01, dot -0.988; [298ab487-daeb-4246-98d8-f3b437ef1fab = 1.000/1.000e+00, b7505353-8d6c-42f6-9d7b-9e9b3032eb77 = 1.000/1.000e+00, 2761be66-cb06-4119-a514-e7cb9954cc7a = 1.000/1.000e+00, a4911443-3aa1-45ed-a0e5-bb6401fa647b = 1.000/1.000e+00, 3828324b-c610-41f8-98e1-820d753e71a9 = 1.000/1.000e+00]
Orientation rejected. Popping history element from 0.0, 0.018853453186332907, 0.06702771144291739, 0.09284713447295763, 0.11261938024230192, 0.15686292858029982
Rejected: LBFGS Orientation magnitude: 1.898e+02, gradient 3.289e-01, dot -0.997; [3828324b-c610-41f8-98e1-820d753e71a9 = 1.000/1.000e+00, 2761be66-cb06-4119-a514-e7cb9954cc7a = 1.000/1.000e+00, b7505353-8d6c-42f6-9d7b-9e9b3032eb77 = 1.000/1.000e+00, 298ab487-daeb-4246-98d8-f3b437ef1fab = 1.000/1.000e+00, a4911443-3aa1-45ed-a0e5-bb6401fa647b = 1.000/1.000e+00]
Orientation rejected. Popping history element from 0.0, 0.018853453186332907, 0.06702771144291739, 0.09284713447295763, 0.11261938024230192
Rejected: LBFGS Orientation magnitude: 9.763e+02, gradient 3.289e-01, dot -0.984; [3828324b-c610-41f8-98e1-820d753e71a9 = 1.000/1.000e+00, 298ab487-daeb-4246-98d8-f3b437ef1fab = 1.000/1.000e+00, 2761be66-cb06-4119-a514-e7cb9954cc7a = 1.000/1.000e+00, b7505353-8d6c-42f6-9d7b-9e9b3032eb77 = 1.000/1.000e+00, a4911443-3aa1-45ed-a0e5-bb6401fa647b = 1.000/1.000e+00]
Orientation rejected. Popping history element from 0.0, 0.018853453186332907, 0.06702771144291739, 0.09284713447295763
LBFGS Accumulation History: 3 points
Removed measurement 42723912 to history. Total: 8
Removed measurement 699e1070 to history. Total: 7
Removed measurement 3d81b2ba to history. Total: 6
Removed measurement 5fc3c455 to history. Total: 5
Removed measurement 2d2a1697 to history. Total: 4
Removed measurement 1c368f1f to history. Total: 3
Adding measurement 5d690063 to history. Total: 3
th(0)=0.0;dx=-0.10815715310571941
Non-optimal measurement 1.209929257441172 < 0.0. Total: 4
Armijo: th(2890750.373993524)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Non-optimal measurement 1.209929257441172 < 0.0. Total: 4
Armijo: th(1445375.186996762)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Non-optimal measurement 1.209929257441172 < 0.0. Total: 4
Armijo: th(481791.72899892065)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Non-optimal measurement 1.209929257441172 < 0.0. Total: 4
Armijo: th(120447.93224973016)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Non-optimal measurement 1.209929257441172 < 0.0. Total: 4
Armijo: th(24089.586449946033)=1.209929257441172; dx=1.5276013963098994E8 evalInputDelta=-1.209929257441172
Non-optimal measurement 1.209929257441172 < 0.0. Total: 4
Armijo: th(4014.9310749910055)=1.209929257441172; dx=1.527601396309899E8 evalInputDelta=-1.209929257441172
Non-optimal measurement 0.0016665257167570596 < 0.0. Total: 4
Armijo: th(573.5615821415722)=0.0016665257167570596; dx=-0.10815122727174023 evalInputDelta=-0.0016665257167570596
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(71.69519776769653)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(7.966133085299614)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(0.7966133085299614)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(0.07241939168454194)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(0.006034949307045161)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(4.6422686977270474E-4)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(3.3159062126621764E-5)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(2.210604141774784E-6)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(1.38162758860924E-7)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(8.127221109466118E-9)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(4.515122838592288E-10)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(2.376380441364362E-11)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(1.188190220682181E-12)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(5.658048669915148E-14)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
Armijo: th(2.5718403045068854E-15)=0.0; dx=-0.10815715310571941 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 4
MIN ALPHA (1.118191436742124E-16): th(0.0)=0.0
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.0878; Orientation: 0.0542; Line Search: 0.0328
Iteration 5 failed. Error: 0.0
Previous Error: 0.0 -> 0.0
Optimization terminated 5
Final threshold in iteration 5: 0.0 (> 0.0) after 0.486s (< 30.000s)

Returns

    0.0

Training Converged

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

    return TestUtil.compare(title + " vs Iteration", runs);
Logging
Plotting range=[1.0, -0.8677563058332081], [4.0, -0.04754402573995846]; valueStats=DoubleSummaryStatistics{count=8, sum=4.042316, min=0.135595, average=0.505290, max=0.896305}
Plotting 4 points for GD
Plotting 3 points for CjGD
Plotting 4 points for LBFGS

Returns

Result

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

    return TestUtil.compareTime(title + " vs Time", runs);
Logging
Plotting range=[0.0, -0.8677563058332081], [0.358, -0.04754402573995846]; valueStats=DoubleSummaryStatistics{count=8, sum=4.042316, min=0.135595, average=0.505290, max=0.896305}
Plotting 4 points for GD
Plotting 3 points for CjGD
Plotting 4 points for LBFGS

Returns

Result

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.128, 0.496, 0.7, 0.08]

Gradient Descent

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

TrainingTester.java:480 executed in 0.04 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: 1534663977200
Reset training subject: 1534666305650
Constructing line search parameters: GD
th(0)=10.530381090632405;dx=-5.056421187327363E23
New Minimum: 10.530381090632405 > 0.0
Armijo: th(2.154434690031884)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(1.077217345015942)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(0.3590724483386473)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(0.08976811208466183)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(0.017953622416932366)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(0.002992270402822061)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(4.2746720040315154E-4)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(5.343340005039394E-5)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(5.9370444500437714E-6)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(5.937044450043771E-7)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(5.397313136403428E-8)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(4.4977609470028565E-9)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(3.4598161130791205E-10)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(2.4712972236279432E-11)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(1.6475314824186289E-12)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Armijo: th(1.029707176511643E-13)=10.530381090632405; dx=-5.056421187327363E23 evalInputDelta=0.0
Armijo: th(6.057101038303783E-15)=10.530381090632405; dx=-5.056421187327363E23 evalInputDelta=0.0
MIN ALPHA (3.3650561323909904E-16): th(2.154434690031884)=0.0
Fitness changed from 10.530381090632405 to 0.0
Iteration 1 complete. Error: 0.0 Total: 0.0360; Orientation: 0.0003; Line Search: 0.0306
th(0)=0.0;dx=-2.2689899374875417
Armijo: th(2.154434690031884E-15)=0.0; dx=-2.2689899374875417 evalInputDelta=0.0
Armijo: th(1.077217345015942E-15)=0.0; dx=-2.2689899374875417 evalInputDelta=0.0
MIN ALPHA (3.5907244833864734E-16): th(0.0)=0.0
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.0073; Orientation: 0.0003; Line Search: 0.0055
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 0.044s (< 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 0.08 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: 1534711369545
Reset training subject: 1534712876084
Constructing line search parameters: GD
F(0.0) = LineSearchPoint{point=PointSample{avg=10.530381090632405}, derivative=-5.056421187327363E23}
New Minimum: 10.530381090632405 > 0.0
F(1.0E-10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(7.000000000000001E-10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(4.900000000000001E-9) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(3.430000000000001E-8) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(2.4010000000000004E-7) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(1.6807000000000003E-6) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(1.1764900000000001E-5) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(8.235430000000001E-5) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(5.764801000000001E-4) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(0.004035360700000001) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(0.028247524900000005) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(0.19773267430000002) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(1.3841287201) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(9.688901040700001) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(67.8223072849) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(474.7561509943) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(3323.2930569601003) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(23263.0513987207) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(162841.3597910449) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(1139889.5185373144) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(7979226.6297612) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(5.58545864083284E7) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(3.909821048582988E8) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(2.7368747340080914E9) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
F(1.915812313805664E10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
0.0 <= 10.530381090632405
F(1.0E10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-5.056421187344996E11}, evalInputDelta = -10.530381090632405
Right bracket at 1.0E10
Converged to right
Fitness changed from 10.530381090632405 to 0.0
Iteration 1 complete. Error: 0.0 Total: 0.0412; Orientation: 0.0002; Line Search: 0.0373
F(0.0) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}
F(1.0E10) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
0.0 <= 0.0
F(5.0E9) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 5.0E9
F(2.5E9) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 2.5E9
F(1.25E9) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 1.25E9
F(6.25E8) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 6.25E8
F(3.125E8) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 3.125E8
F(1.5625E8) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 1.5625E8
F(7.8125E7) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 7.8125E7
F(3.90625E7) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 3.90625E7
F(1.953125E7) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 1.953125E7
F(9765625.0) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 9765625.0
F(4882812.5) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Right bracket at 4882812.5
F(2441406.25) = LineSearchPoint{point=PointSample{avg=0.0}, derivative=-2.2689899374875417}, evalInputDelta = 0.0
Loops = 12
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.0336; Orientation: 0.0002; Line Search: 0.0323
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 0.075s (< 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 0.04 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: 1534790699679
Reset training subject: 1534792621178
Adding measurement 1e3826c to history. Total: 0
LBFGS Accumulation History: 1 points
Constructing line search parameters: GD
Non-optimal measurement 10.530381090632405 < 10.530381090632405. Total: 1
th(0)=10.530381090632405;dx=-5.056421187327363E23
Adding measurement 311bcf39 to history. Total: 1
New Minimum: 10.530381090632405 > 0.0
Armijo: th(2.154434690031884)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(1.077217345015942)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(0.3590724483386473)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(0.08976811208466183)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(0.017953622416932366)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(0.002992270402822061)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(4.2746720040315154E-4)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(5.343340005039394E-5)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(5.9370444500437714E-6)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(5.937044450043771E-7)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(5.397313136403428E-8)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(4.4977609470028565E-9)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(3.4598161130791205E-10)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(2.4712972236279432E-11)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(1.6475314824186289E-12)=0.0; dx=-5.056421187344996E11 evalInputDelta=10.530381090632405
Non-optimal measurement 10.530381090632405 < 0.0. Total: 2
Armijo: th(1.029707176511643E-13)=10.530381090632405; dx=-5.056421187327363E23 evalInputDelta=0.0
Non-optimal measurement 10.530381090632405 < 0.0. Total: 2
Armijo: th(6.057101038303783E-15)=10.530381090632405; dx=-5.056421187327363E23 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 2
MIN ALPHA (3.3650561323909904E-16): th(2.154434690031884)=0.0
Fitness changed from 10.530381090632405 to 0.0
Iteration 1 complete. Error: 0.0 Total: 0.0307; Orientation: 0.0004; Line Search: 0.0260
Non-optimal measurement 0.0 < 0.0. Total: 2
LBFGS Accumulation History: 2 points
Non-optimal measurement 0.0 < 0.0. Total: 2
th(0)=0.0;dx=-2.2689899374875417
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(2.154434690031884E-15)=0.0; dx=-2.2689899374875417 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 2
Armijo: th(1.077217345015942E-15)=0.0; dx=-2.2689899374875417 evalInputDelta=0.0
Non-optimal measurement 0.0 < 0.0. Total: 2
MIN ALPHA (3.5907244833864734E-16): th(0.0)=0.0
Fitness changed from 0.0 to 0.0
Static Iteration Total: 0.0055; Orientation: 0.0004; Line Search: 0.0042
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 0.036s (< 30.000s)

Returns

    0.0

Training Converged

TrainingTester.java:432 executed in 0.01 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

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.128, 0.08, 0.496, 0.7]

We simultaneously regress this target input:

TrainingTester.java:287 executed in 0.00 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

    [ 1.764, -0.608 ]
    [ -0.608, 1.764 ]
    [ 1.764, -0.608 ]
    [ -0.608, 1.764 ]
    [ 1.764, -0.608 ]

Which produces the following output:

TrainingTester.java:308 executed in 0.00 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

    [ -0.274432, 0.4493440000000001 ]
    [ 0.218944, 0.9332319999999998 ]
    [ -0.274432, 0.4493440000000001 ]
    [ 0.218944, 0.9332319999999998 ]
    [ -0.274432, 0.4493440000000001 ]

Gradient Descent

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

TrainingTester.java:480 executed in 0.04 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: 1534878916641
Reset training subject: 1534880252381
Constructing line search parameters: GD
th(0)=10.730028731962271;dx=-4.8670631007413936E23
Armijo: th(2.154434690031884)=20.183819885495915; dx=3.0755084476000893E34 evalInputDelta=-9.453791153533643
Armijo: th(1.077217345015942)=20.183819885495915; dx=1.5377542237865444E34 evalInputDelta=-9.453791153533643
Armijo: th(0.3590724483386473)=20.183819885495915; dx=5.125847412441807E33 evalInputDelta=-9.453791153533643
Armijo: th(0.08976811208466183)=20.183819885495915; dx=1.2814618529079439E33 evalInputDelta=-9.453791153533643
Armijo: th(0.017953622416932366)=20.183819885495915; dx=2.5629237036558037E32 evalInputDelta=-9.453791153533643
Armijo: th(0.002992270402822061)=20.183819885495915; dx=4.271539483592128E31 evalInputDelta=-9.453791153533643
Armijo: th(4.2746720040315154E-4)=20.183819885495915; dx=6.102199030836866E30 evalInputDelta=-9.453791153533643
Armijo: th(5.343340005039394E-5)=20.183819885495915; dx=7.627746425953896E29 evalInputDelta=-9.453791153533643
Armijo: th(5.9370444500437714E-6)=20.183819885495915; dx=8.475249805678933E28 evalInputDelta=-9.453791153533643
Armijo: th(5.937044450043771E-7)=20.183819885495915; dx=8.475006796196803E27 evalInputDelta=-9.453791153533643
Armijo: th(5.397313136403428E-8)=20.183819885495915; dx=7.702096991672552E26 evalInputDelta=-9.453791153533643
Armijo: th(4.4977609470028565E-9)=20.183819885495915; dx=6.393663193954666E25 evalInputDelta=-9.453791153533643
Armijo: th(3.4598161130791205E-10)=20.183819885495915; dx=4.6689619623963074E24 evalInputDelta=-9.453791153533643
New Minimum: 10.730028731962271 > 7.480365869215118
Armijo: th(2.4712972236279432E-11)=7.480365869215118; dx=2.1587977987149855E23 evalInputDelta=3.2496628627471535
New Minimum: 7.480365869215118 > 7.457004409774346
Armijo: th(1.6475314824186289E-12)=7.457004409774346; dx=2.1587977987064606E23 evalInputDelta=3.2730243221879247
Armijo: th(1.029707176511643E-13)=10.85751918118668; dx=-4.8523637778244624E23 evalInputDelta=-0.12749044922440866
Armijo: th(6.057101038303783E-15)=10.736073500504087; dx=-4.866198434687583E23 evalInputDelta=-0.006044768541816126
MIN ALPHA (3.3650561323909904E-16): th(1.6475314824186289E-12)=7.457004409774346
Fitness changed from 10.730028731962271 to 7.457004409774346
Iteration 1 complete. Error: 7.457004409774346 Total: 0.0333; Orientation: 0.0002; Line Search: 0.0296
th(0)=7.457004409774346;dx=-2.773297298518103E23
Armijo: th(2.154434690031884E-15)=7.457004409774346; dx=-2.7729876049215734E23 evalInputDelta=0.0
Armijo: th(1.077217345015942E-15)=7.457004409774346; dx=-2.7731424517198385E23 evalInputDelta=0.0
MIN ALPHA (3.5907244833864734E-16): th(0.0)=7.457004409774346
Fitness changed from 7.457004409774346 to 7.457004409774346
Static Iteration Total: 0.0085; Orientation: 0.0003; Line Search: 0.0068
Iteration 2 failed. Error: 7.457004409774346
Previous Error: 0.0 -> 7.457004409774346
Optimization terminated 2
Final threshold in iteration 2: 7.457004409774346 (> 0.0) after 0.042s (< 30.000s)

Returns

    7.457004409774346

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.7000000000002727, 0.495999999999906, 0.9568805332413605, -0.2939270772138233]

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.6080000000000866, 1.7640000000000542 ]

To produce the following output:

TrainingTester.java:633 executed in 0.00 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

    [ 0.44934399999963465, -1.1002707284160302 ]

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: 1534933796137
Reset training subject: 1534935457692
Constructing line search parameters: GD
F(0.0) = LineSearchPoint{point=PointSample{avg=10.730028731962271}, derivative=-4.867063100741393E23}
F(1.0E-10) = LineSearchPoint{point=PointSample{avg=18.33381594923737}, derivative=1.1566980366151747E24}, evalInputDelta = 7.603787217275098
18.33381594923737 <= 10.730028731962271
Converged to right
Fitness changed from 10.730028731962271 to 10.730028731962271
Static Iteration Total: 0.0078; Orientation: 0.0003; Line Search: 0.0032
Iteration 1 failed. Error: 10.730028731962271
Previous Error: 0.0 -> 10.730028731962271
Optimization terminated 1
Final threshold in iteration 1: 10.730028731962271 (> 0.0) after 0.008s (< 30.000s)

Returns

    10.730028731962271

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.7, 0.496, -0.128, 0.08]

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.608, 1.764 ]

To produce the following output:

TrainingTester.java:633 executed in 0.00 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

    [ 0.4493440000000001, 0.218944 ]

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.04 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: 1534949165138
Reset training subject: 1534950580939
Adding measurement 1ff13396 to history. Total: 0
LBFGS Accumulation History: 1 points
Constructing line search parameters: GD
Non-optimal measurement 10.730028731962271 < 10.730028731962271. Total: 1
th(0)=10.730028731962271;dx=-4.867063100741393E23
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(2.154434690031884)=20.183819885495915; dx=3.0755084476000898E34 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(1.077217345015942)=20.183819885495915; dx=1.5377542237865442E34 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(0.3590724483386473)=20.183819885495915; dx=5.125847412441807E33 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(0.08976811208466183)=20.183819885495915; dx=1.2814618529079439E33 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(0.017953622416932366)=20.183819885495915; dx=2.5629237036558037E32 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(0.002992270402822061)=20.183819885495915; dx=4.2715394835921275E31 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(4.2746720040315154E-4)=20.183819885495915; dx=6.102199030836866E30 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(5.343340005039394E-5)=20.183819885495915; dx=7.627746425953896E29 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(5.9370444500437714E-6)=20.183819885495915; dx=8.475249805678933E28 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(5.937044450043771E-7)=20.183819885495915; dx=8.475006796196803E27 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(5.397313136403428E-8)=20.183819885495915; dx=7.702096991672553E26 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(4.4977609470028565E-9)=20.183819885495915; dx=6.393663193954666E25 evalInputDelta=-9.453791153533643
Non-optimal measurement 20.183819885495915 < 10.730028731962271. Total: 1
Armijo: th(3.4598161130791205E-10)=20.183819885495915; dx=4.6689619623963074E24 evalInputDelta=-9.453791153533643
Adding measurement 573afed to history. Total: 1
New Minimum: 10.730028731962271 > 7.480365869215118
Armijo: th(2.4712972236279432E-11)=7.480365869215118; dx=2.1587977987149855E23 evalInputDelta=3.2496628627471535
Adding measurement 2cf0fb88 to history. Total: 2
New Minimum: 7.480365869215118 > 7.457004409774346
Armijo: th(1.6475314824186289E-12)=7.457004409774346; dx=2.1587977987064606E23 evalInputDelta=3.2730243221879247
Non-optimal measurement 10.85751918118668 < 7.457004409774346. Total: 3
Armijo: th(1.029707176511643E-13)=10.85751918118668; dx=-4.8523637778244624E23 evalInputDelta=-0.12749044922440866
Non-optimal measurement 10.736073500504087 < 7.457004409774346. Total: 3
Armijo: th(6.057101038303783E-15)=10.736073500504087; dx=-4.866198434687583E23 evalInputDelta=-0.006044768541816126
Non-optimal measurement 7.457004409774346 < 7.457004409774346. Total: 3
MIN ALPHA (3.3650561323909904E-16): th(1.6475314824186289E-12)=7.457004409774346
Fitness changed from 10.730028731962271 to 7.457004409774346
Iteration 1 complete. Error: 7.457004409774346 Total: 0.0349; Orientation: 0.0009; Line Search: 0.0306
Non-optimal measurement 7.457004409774346 < 7.457004409774346. Total: 3
LBFGS Accumulation History: 3 points
Non-optimal measurement 7.457004409774346 < 7.457004409774346. Total: 3
th(0)=7.457004409774346;dx=-2.773297298518103E23
Non-optimal measurement 7.457004409774346 < 7.457004409774346. Total: 3
Armijo: th(2.154434690031884E-15)=7.457004409774346; dx=-2.7729876049215734E23 evalInputDelta=0.0
Non-optimal measurement 7.457004409774346 < 7.457004409774346. Total: 3
Armijo: th(1.077217345015942E-15)=7.457004409774346; dx=-2.7731424517198385E23 evalInputDelta=0.0
Non-optimal measurement 7.457004409774346 < 7.457004409774346. Total: 3
MIN ALPHA (3.5907244833864734E-16): th(0.0)=7.457004409774346
Fitness changed from 7.457004409774346 to 7.457004409774346
Static Iteration Total: 0.0083; Orientation: 0.0007; Line Search: 0.0061
Iteration 2 failed. Error: 7.457004409774346
Previous Error: 0.0 -> 7.457004409774346
Optimization terminated 2
Final threshold in iteration 2: 7.457004409774346 (> 0.0) after 0.044s (< 30.000s)

Returns

    7.457004409774346

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.7000000000002727, 0.495999999999906, 0.9568805332413605, -0.2939270772138233]

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.6080000000000866, 1.7640000000000542 ]

To produce the following output:

TrainingTester.java:633 executed in 0.00 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

    [ 0.44934399999963465, -1.1002707284160302 ]

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

    return TestUtil.compare(title + " vs Iteration", runs);
Logging
Plotting range=[0.0, -0.12743560008487487], [2.0, 1.8725643999151251]; valueStats=DoubleSummaryStatistics{count=2, sum=14.914009, min=7.457004, average=7.457004, max=7.457004}
Only 1 points for GD
Only 1 points for LBFGS

Returns

Result

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

    return TestUtil.compareTime(title + " vs Time", runs);
Logging
Plotting range=[-1.0, -0.12743560008487487], [1.0, 1.8725643999151251]; valueStats=DoubleSummaryStatistics{count=2, sum=14.914009, min=7.457004, average=7.457004, max=7.457004}
Only 1 points for GD
Only 0 points for LBFGS

Returns

Result

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": "Converged", "value": 0.0 }, "CjGD": { "type": "Converged", "value": 0.0 }, "GD": { "type": "Converged", "value": 0.0 } }, "complete":{ "LBFGS": { "type": "NonConverged", "value": 7.457004409774346 }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": 7.457004409774346 } }}

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": "Converged", "value": 0.0 }, "CjGD": { "type": "Converged", "value": 0.0 }, "GD": { "type": "Converged", "value": 0.0 } }, "complete":{ "LBFGS": { "type": "NonConverged", "value": 7.457004409774346 }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": 7.457004409774346 } }}OK
  {
    "result": "OK",
    "performance": {
      "execution_time": "2.605",
      "gc_time": "0.494"
    },
    "created_on": 1586736121020,
    "file_name": "trainingTest",
    "report": {
      "simpleName": "Basic",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.FullyConnectedReferenceLayerTest.Basic",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/test/java/com/simiacryptus/mindseye/layers/java/FullyConnectedReferenceLayerTest.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": "Converged",
          "value": 0.0
        },
        "CjGD": {
          "type": "Converged",
          "value": 0.0
        },
        "GD": {
          "type": "Converged",
          "value": 0.0
        }
      },
      "complete": {
        "LBFGS": {
          "type": "NonConverged",
          "value": 7.457004409774346
        },
        "CjGD": {
          "type": "NonConverged",
          "value": "NaN"
        },
        "GD": {
          "type": "NonConverged",
          "value": 7.457004409774346
        }
      }
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/java/FullyConnectedReferenceLayer/Basic/trainingTest/202004130201",
    "id": "8f6a06e6-f807-4af3-9a33-fec4bba8d989",
    "report_type": "Components",
    "display_name": "Comparative Training",
    "target": {
      "simpleName": "FullyConnectedReferenceLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.FullyConnectedReferenceLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/main/java/com/simiacryptus/mindseye/layers/java/FullyConnectedReferenceLayer.java",
      "javaDoc": ""
    }
  }