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

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

Test Modules

Using Seed 7172946664507848704

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

    [ 0.08, -0.128, 0.7 ]
    [ 1.764, 0.496, -0.608 ]
    [ 0.08, -0.128, 0.7 ]
    [ 1.764, -0.608, 0.496 ]
    [ 0.08, -0.128, 0.7 ]
    [ 0.496, -0.608, 1.764 ]
    [ 0.08, -0.128, 0.7 ]
    [ 1.764, -0.608, 0.496 ]
    [ -0.128, 0.7, 0.08 ]
    [ 1.764, -0.608, 0.496 ]

Gradient Descent

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

TrainingTester.java:480 executed in 0.18 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: 1937966063339
BACKPROP_AGG_SIZE = 3
THREADS = 64
SINGLE_THREADED = false
Initialized CoreSettings = {
"backpropAggregationSize" : 3,
"jvmThreads" : 64,
"singleThreaded" : false
}
Reset training subject: 1937996793694
Constructing line search parameters: GD
th(0)=1.1691688500366593;dx=-1.5864057030927975E43
Armijo: th(2.154434690031884)=3.1194317599038692; dx=-6.006576310415736E43 evalInputDelta=-1.95026290986721
Armijo: th(1.077217345015942)=3.1194317599038692; dx=-6.176099561393463E43 evalInputDelta=-1.95026290986721
Armijo: th(0.3590724483386473)=3.1485321812271687; dx=-6.289115062045282E43 evalInputDelta=-1.9793633311905094
Armijo: th(0.08976811208466183)=3.242241882408129; dx=-6.331495874789713E43 evalInputDelta=-2.07307303237147
Armijo: th(0.017953622416932366)=3.283923527152099; dx=-6.342797424854895E43 evalInputDelta=-2.1147546771154397
Armijo: th(0.002992270402822061)=3.2945109273245192; dx=-6.345151914451808E43 evalInputDelta=-2.12534207728786
Armijo: th(4.2746720040315154E-4)=3.2964135226726503; dx=-6.34555554123985E43 evalInputDelta=-2.127244672635991
Armijo: th(5.343340005039394E-5)=3.29669327495687; dx=-6.345614403479773E43 evalInputDelta=-2.1275244249202108
Armijo: th(5.9370444500437714E-6)=3.2967288412607645; dx=-6.345621878049921E43 evalInputDelta=-2.127559991224105
Armijo: th(5.937044450043771E-7)=3.296732843066116; dx=-6.345622718939063E43 evalInputDelta=-2.1275639930294568
Armijo: th(5.397313136403428E-8)=3.2967332472955846; dx=-6.345622803877361E43 evalInputDelta=-2.1275643972589253
Armijo: th(4.4977609470028565E-9)=3.2967332843500143; dx=-6.345622811663371E43 evalInputDelta=-2.127564434313355
Armijo: th(3.4598161130791205E-10)=3.2967332874594772; dx=-6.345622812316743E43 evalInputDelta=-2.127564437422818
Armijo: th(2.4712972236279432E-11)=3.2967332877000906; dx=-6.345622812367301E43 evalInputDelta=-2.1275644376634313
Armijo: th(1.6475314824186289E-12)=2.516875347741398; dx=-4.759217109278392E43 evalInputDelta=-1.3477064977047388
Armijo: th(1.029707176511643E-13)=2.516875347742555; dx=-4.759217109278392E43 evalInputDelta=-1.3477064977058957
Armijo: th(6.057101038303783E-15)=2.5168753477426273; dx=-4.759217109278392E43 evalInputDelta=-1.347706497705968
MIN ALPHA (3.3650561323909904E-16): th(0.0)=1.1691688500366593
Fitness changed from 1.1691688500366593 to 1.1691688500366593
Static Iteration Total: 0.1733; Orientation: 0.0062; Line Search: 0.1190
Iteration 1 failed. Error: 1.1691688500366593
Previous Error: 0.0 -> 1.1691688500366593
Optimization terminated 1
Final threshold in iteration 1: 1.1691688500366593 (> 0.0) after 0.175s (< 30.000s)

Returns

    1.1691688500366593

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

    

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

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.34719999999999995, -0.04864, -0.225792 ]

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.20 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: 1938154349277
Reset training subject: 1938157719999
Constructing line search parameters: GD
F(0.0) = LineSearchPoint{point=PointSample{avg=1.1691688500366593}, derivative=-1.5864057030927975E43}
F(1.0E-10) = LineSearchPoint{point=PointSample{avg=3.296733287643705}, derivative=-6.3456228123554535E43}, evalInputDelta = 2.1275644376070457
F(7.000000000000001E-10) = LineSearchPoint{point=PointSample{avg=3.2967332871943364}, derivative=-6.34562281226103E43}, evalInputDelta = 2.127564437157677
F(5.384615384615385E-11) = LineSearchPoint{point=PointSample{avg=3.296733287678271}, derivative=-6.345622812362717E43}, evalInputDelta = 2.127564437641612
F(3.7692307692307697E-10) = LineSearchPoint{point=PointSample{avg=3.296733287436304}, derivative=-6.345622812311873E43}, evalInputDelta = 2.1275644373996445
F(2.899408284023669E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876968847}, derivative=-6.345622812366628E43}, evalInputDelta = 2.1275644376602254
F(2.0295857988165684E-10) = LineSearchPoint{point=PointSample{avg=3.296733287566594}, derivative=-6.34562281233925E43}, evalInputDelta = 2.1275644375299345
F(1.561219845243514E-11) = LineSearchPoint{point=PointSample{avg=3.296733287706907}, derivative=-6.345622812368733E43}, evalInputDelta = 2.1275644376702476
F(1.0928538916704598E-10) = LineSearchPoint{point=PointSample{avg=3.2967332876367506}, derivative=-6.345622812353992E43}, evalInputDelta = 2.1275644376000913
F(8.406568397465076E-12) = LineSearchPoint{point=PointSample{avg=2.516875347736336}, derivative=-4.759217109278392E43}, evalInputDelta = 1.3477064976996767
F(5.884597878225553E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876745266}, derivative=-6.345622812361929E43}, evalInputDelta = 2.1275644376378673
F(4.119218514757887E-10) = LineSearchPoint{point=PointSample{avg=3.296733287410092}, derivative=-6.345622812306366E43}, evalInputDelta = 2.1275644373734326
F(3.168629626736836E-11) = LineSearchPoint{point=PointSample{avg=3.296733287694868}, derivative=-6.345622812366204E43}, evalInputDelta = 2.127564437658209
F(2.2180407387157852E-10) = LineSearchPoint{point=PointSample{avg=3.2967332875524797}, derivative=-6.345622812336284E43}, evalInputDelta = 2.1275644375158205
F(1.706185183627527E-11) = LineSearchPoint{point=PointSample{avg=3.296733287705821}, derivative=-6.345622812368505E43}, evalInputDelta = 2.127564437669162
F(1.194329628539269E-10) = LineSearchPoint{point=PointSample{avg=3.29673328762915}, derivative=-6.345622812352395E43}, evalInputDelta = 2.1275644375924907
F(9.187150988763607E-12) = LineSearchPoint{point=PointSample{avg=3.2967332877117186}, derivative=-6.345622812369744E43}, evalInputDelta = 2.1275644376750593
F(6.431005692134525E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876704347}, derivative=-6.34562281236107E43}, evalInputDelta = 2.1275644376337755
F(4.501703984494168E-10) = LineSearchPoint{point=PointSample{avg=3.2967332873814454}, derivative=-6.345622812300346E43}, evalInputDelta = 2.127564437344786
F(3.4628492188416676E-11) = LineSearchPoint{point=PointSample{avg=3.296733287692665}, derivative=-6.34562281236574E43}, evalInputDelta = 2.1275644376560057
F(2.423994453189167E-10) = LineSearchPoint{point=PointSample{avg=3.296733287537055}, derivative=-6.345622812333044E43}, evalInputDelta = 2.127564437500396
F(1.864611117837821E-11) = LineSearchPoint{point=PointSample{avg=3.2967332877046345}, derivative=-6.345622812368256E43}, evalInputDelta = 2.127564437667975
F(1.3052277824864746E-10) = LineSearchPoint{point=PointSample{avg=3.2967332876208446}, derivative=-6.345622812350649E43}, evalInputDelta = 2.1275644375841853
F(1.004021371143442E-11) = LineSearchPoint{point=PointSample{avg=3.29673328771108}, derivative=-6.345622812369611E43}, evalInputDelta = 2.1275644376744207
F(7.028149598004095E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876659627}, derivative=-6.34562281236013E43}, evalInputDelta = 2.1275644376293035
F(4.919704718602866E-10) = LineSearchPoint{point=PointSample{avg=3.29673328735014}, derivative=-6.345622812293768E43}, evalInputDelta = 2.1275644373134805
F(3.784388245079128E-11) = LineSearchPoint{point=PointSample{avg=3.296733287690256}, derivative=-6.345622812365234E43}, evalInputDelta = 2.127564437653597
F(2.64907177155539E-10) = LineSearchPoint{point=PointSample{avg=3.2967332875201976}, derivative=-6.345622812329501E43}, evalInputDelta = 2.1275644374835383
F(2.037747516581069E-11) = LineSearchPoint{point=PointSample{avg=3.2967332877033377}, derivative=-6.345622812367983E43}, evalInputDelta = 2.1275644376666785
F(1.4264232616067484E-10) = LineSearchPoint{point=PointSample{avg=3.296733287611768}, derivative=-6.345622812348742E43}, evalInputDelta = 2.1275644375751086
F(1.0972486627744219E-11) = LineSearchPoint{point=PointSample{avg=3.2967332877103814}, derivative=-6.345622812369463E43}, evalInputDelta = 2.127564437673722
F(7.680740639420954E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876610747}, derivative=-6.345622812359103E43}, evalInputDelta = 2.1275644376244154
F(5.376518447594668E-10) = LineSearchPoint{point=PointSample{avg=3.2967332873159263}, derivative=-6.345622812286579E43}, evalInputDelta = 2.127564437279267
F(4.135783421226668E-11) = LineSearchPoint{point=PointSample{avg=3.296733287687624}, derivative=-6.345622812364682E43}, evalInputDelta = 2.127564437650965
F(2.8950483948586675E-10) = LineSearchPoint{point=PointSample{avg=3.2967332875017754}, derivative=-6.34562281232563E43}, evalInputDelta = 2.127564437465116
F(2.2269603037374367E-11) = LineSearchPoint{point=PointSample{avg=3.29673328770192}, derivative=-6.345622812367685E43}, evalInputDelta = 2.127564437665261
F(1.5588722126162056E-10) = LineSearchPoint{point=PointSample{avg=3.2967332876018483}, derivative=-6.345622812346658E43}, evalInputDelta = 2.127564437565189
F(1.1991324712432351E-11) = LineSearchPoint{point=PointSample{avg=3.2967332877096185}, derivative=-6.345622812369304E43}, evalInputDelta = 2.127564437672959
F(8.393927298702646E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876557336}, derivative=-6.345622812357981E43}, evalInputDelta = 2.1275644376190743
F(5.875749109091853E-10) = LineSearchPoint{point=PointSample{avg=3.296733287278537}, derivative=-6.345622812278723E43}, evalInputDelta = 2.127564437241878
F(4.5198070069937326E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876847486}, derivative=-6.345622812364077E43}, evalInputDelta = 2.1275644376480893
F(3.1638649048956127E-10) = LineSearchPoint{point=PointSample{avg=3.2967332874816426}, derivative=-6.3456228123214E43}, evalInputDelta = 2.1275644374449834
F(2.4337422345350867E-11) = LineSearchPoint{point=PointSample{avg=3.296733287700372}, derivative=-6.3456228123673605E43}, evalInputDelta = 2.127564437663713
F(1.7036195641745607E-10) = LineSearchPoint{point=PointSample{avg=3.2967332875910076}, derivative=-6.34562281234438E43}, evalInputDelta = 2.1275644375543483
F(1.3104765878265852E-11) = LineSearchPoint{point=PointSample{avg=3.296733287708785}, derivative=-6.345622812369128E43}, evalInputDelta = 2.1275644376721257
F(9.173336114786096E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876498956}, derivative=-6.345622812356754E43}, evalInputDelta = 2.1275644376132363
F(6.421335280350267E-10) = LineSearchPoint{point=PointSample{avg=3.296733287237675}, derivative=-6.345622812270137E43}, evalInputDelta = 2.127564437201016
F(4.939488677192513E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876816053}, derivative=-6.345622812363417E43}, evalInputDelta = 2.127564437644946
F(3.457642074034759E-10) = LineSearchPoint{point=PointSample{avg=3.2967332874596402}, derivative=-6.345622812316776E43}, evalInputDelta = 2.127564437422981
F(2.65972467233443E-11) = LineSearchPoint{point=PointSample{avg=3.2967332876986797}, derivative=-6.345622812367005E43}, evalInputDelta = 2.1275644376620204
F(1.861807270634101E-10) = LineSearchPoint{point=PointSample{avg=3.2967332875791597}, derivative=-6.345622812341891E43}, evalInputDelta = 2.1275644375425005
F(1.4321594389493084E-11) = LineSearchPoint{point=PointSample{avg=3.296733287707873}, derivative=-6.345622812368936E43}, evalInputDelta = 2.127564437671214
F(1.0025116072645159E-10) = LineSearchPoint{point=PointSample{avg=3.2967332876435167}, derivative=-6.345622812355414E43}, evalInputDelta = 2.1275644376068574
F(7.711627748188584E-12) = LineSearchPoint{point=PointSample{avg=2.5168753477368564}, derivative=-4.759217109278392E43}, evalInputDelta = 1.3477064977001971
Loops = 52
F(1.0E-10) = LineSearchPoint{point=PointSample{avg=3.296733287643705}, derivative=-6.3456228123554535E43}, evalInputDelta = 2.1275644376070457
3.296733287643705 > 2.5168753477368564
Fitness changed from 1.1691688500366593 to 1.1691688500366593
Static Iteration Total: 0.1960; Orientation: 0.0013; Line Search: 0.1851
Iteration 1 failed. Error: 1.1691688500366593
Previous Error: 0.0 -> 1.1691688500366593
Optimization terminated 1
Final threshold in iteration 1: 1.1691688500366593 (> 0.0) after 0.196s (< 30.000s)

Returns

    1.1691688500366593

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

    

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

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.34719999999999995, -0.04864, -0.225792 ]

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.07 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: 1938359257503
Reset training subject: 1938361067492
Adding measurement 706d58cf to history. Total: 0
LBFGS Accumulation History: 1 points
Constructing line search parameters: GD
Non-optimal measurement 1.1691688500366593 < 1.1691688500366593. Total: 1
th(0)=1.1691688500366593;dx=-1.5864057030927975E43
Non-optimal measurement 3.1194317599038692 < 1.1691688500366593. Total: 1
Armijo: th(2.154434690031884)=3.1194317599038692; dx=-6.006576310415736E43 evalInputDelta=-1.95026290986721
Non-optimal measurement 3.1194317599038692 < 1.1691688500366593. Total: 1
Armijo: th(1.077217345015942)=3.1194317599038692; dx=-6.176099561393463E43 evalInputDelta=-1.95026290986721
Non-optimal measurement 3.1485321812271687 < 1.1691688500366593. Total: 1
Armijo: th(0.3590724483386473)=3.1485321812271687; dx=-6.289115062045282E43 evalInputDelta=-1.9793633311905094
Non-optimal measurement 3.242241882408129 < 1.1691688500366593. Total: 1
Armijo: th(0.08976811208466183)=3.242241882408129; dx=-6.331495874789714E43 evalInputDelta=-2.07307303237147
Non-optimal measurement 3.283923527152099 < 1.1691688500366593. Total: 1
Armijo: th(0.017953622416932366)=3.283923527152099; dx=-6.342797424854895E43 evalInputDelta=-2.1147546771154397
Non-optimal measurement 3.2945109273245192 < 1.1691688500366593. Total: 1
Armijo: th(0.002992270402822061)=3.2945109273245192; dx=-6.345151914451808E43 evalInputDelta=-2.12534207728786
Non-optimal measurement 3.2964135226726503 < 1.1691688500366593. Total: 1
Armijo: th(4.2746720040315154E-4)=3.2964135226726503; dx=-6.34555554123985E43 evalInputDelta=-2.127244672635991
Non-optimal measurement 3.29669327495687 < 1.1691688500366593. Total: 1
Armijo: th(5.343340005039394E-5)=3.29669327495687; dx=-6.345614403479773E43 evalInputDelta=-2.1275244249202108
Non-optimal measurement 3.2967288412607645 < 1.1691688500366593. Total: 1
Armijo: th(5.9370444500437714E-6)=3.2967288412607645; dx=-6.345621878049921E43 evalInputDelta=-2.127559991224105
Non-optimal measurement 3.296732843066116 < 1.1691688500366593. Total: 1
Armijo: th(5.937044450043771E-7)=3.296732843066116; dx=-6.345622718939063E43 evalInputDelta=-2.1275639930294568
Non-optimal measurement 3.2967332472955846 < 1.1691688500366593. Total: 1
Armijo: th(5.397313136403428E-8)=3.2967332472955846; dx=-6.345622803877361E43 evalInputDelta=-2.1275643972589253
Non-optimal measurement 3.2967332843500143 < 1.1691688500366593. Total: 1
Armijo: th(4.4977609470028565E-9)=3.2967332843500143; dx=-6.345622811663371E43 evalInputDelta=-2.127564434313355
Non-optimal measurement 3.2967332874594772 < 1.1691688500366593. Total: 1
Armijo: th(3.4598161130791205E-10)=3.2967332874594772; dx=-6.345622812316743E43 evalInputDelta=-2.127564437422818
Non-optimal measurement 3.2967332877000906 < 1.1691688500366593. Total: 1
Armijo: th(2.4712972236279432E-11)=3.2967332877000906; dx=-6.345622812367301E43 evalInputDelta=-2.1275644376634313
Non-optimal measurement 2.516875347741398 < 1.1691688500366593. Total: 1
Armijo: th(1.6475314824186289E-12)=2.516875347741398; dx=-4.759217109278392E43 evalInputDelta=-1.3477064977047388
Non-optimal measurement 2.516875347742555 < 1.1691688500366593. Total: 1
Armijo: th(1.029707176511643E-13)=2.516875347742555; dx=-4.759217109278392E43 evalInputDelta=-1.3477064977058957
Non-optimal measurement 2.5168753477426273 < 1.1691688500366593. Total: 1
Armijo: th(6.057101038303783E-15)=2.5168753477426273; dx=-4.759217109278392E43 evalInputDelta=-1.347706497705968
Non-optimal measurement 1.1691688500366593 < 1.1691688500366593. Total: 1
MIN ALPHA (3.3650561323909904E-16): th(0.0)=1.1691688500366593
Fitness changed from 1.1691688500366593 to 1.1691688500366593
Static Iteration Total: 0.0657; Orientation: 0.0031; Line Search: 0.0570
Iteration 1 failed. Error: 1.1691688500366593
Previous Error: 0.0 -> 1.1691688500366593
Optimization terminated 1
Final threshold in iteration 1: 1.1691688500366593 (> 0.0) after 0.066s (< 30.000s)

Returns

    1.1691688500366593

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

    

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

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.34719999999999995, -0.04864, -0.225792 ]

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.03 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": "NonConverged", "value": NaN }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": NaN } }, "model":null, "complete":null}

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

    throwException(exceptions.addRef());

Results

detailsresult
{"input":{ "LBFGS": { "type": "NonConverged", "value": NaN }, "CjGD": { "type": "NonConverged", "value": NaN }, "GD": { "type": "NonConverged", "value": NaN } }, "model":null, "complete":null}OK
  {
    "result": "OK",
    "performance": {
      "execution_time": "0.821",
      "gc_time": "0.192"
    },
    "created_on": 1586736525767,
    "file_name": "trainingTest",
    "report": {
      "simpleName": "Basic",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.ScaleMetaLayerTest.Basic",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/test/java/com/simiacryptus/mindseye/layers/java/ScaleMetaLayerTest.java",
      "javaDoc": ""
    },
    "training_analysis": {
      "input": {
        "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/ScaleMetaLayer/Basic/trainingTest/202004130845",
    "id": "b2cf9a5e-04d5-4a74-99da-0db9e1590385",
    "report_type": "Components",
    "display_name": "Comparative Training",
    "target": {
      "simpleName": "ScaleMetaLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.ScaleMetaLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/main/java/com/simiacryptus/mindseye/layers/java/ScaleMetaLayer.java",
      "javaDoc": ""
    }
  }