1. Test Modules
  2. Differential Validation
    1. Feedback Validation
    2. Learning Validation
    3. Total Accuracy
    4. Frozen and Alive Status
  3. Results

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

Test Modules

Using Seed 957009544225837056

Differential Validation

SingleDerivativeTester.java:101 executed in 0.00 seconds (0.000 gc):

        log.info(RefString.format("Inputs: %s", prettyPrint(inputPrototype)));
        log.info(RefString.format("Inputs Statistics: %s", printStats(inputPrototype)));
        log.info(RefString.format("Output: %s", outputPrototype.prettyPrint()));
        assert outputPrototype != null;
        log.info(RefString.format("Outputs Statistics: %s", outputPrototype.getScalarStatistics()));
      },
      outputPrototype.addRef(),
      RefUtil.addRef(inputPrototype)));
Logging
Inputs: [
[ [ 0.76, 0.268, 1.424 ], [ -0.476, 0.612, -1.044 ], [ 1.644, -1.088, 0.384 ] ],
[ [ -0.276, 1.104, 1.128 ], [ 1.72, -1.516, 1.804 ], [ -0.34, 1.968, 1.964 ] ],
[ [ 1.364, -1.8, 0.508 ], [ -1.544, -0.436, -1.444 ], [ 0.772, 0.708, -1.416 ] ]
]
Inputs Statistics: {meanExponent=-0.033998463304850374, negative=11, min=-1.8, max=1.968, mean=0.2500740740740741, count=27, sum=6.752000000000001, positive=16, stdDev=1.1981172243991487, zeros=0}
Output: [
[ [ -6.761968000000003, -3.6857280000000032, 2.5568480000000005, -8.550063999999999 ], [ -0.5247040000000016, 0.6778079999999989, 3.087024, 7.262928 ] ],
[ [ 3.086992, 20.148736, -17.750752000000006, -0.9633919999999997 ], [ 0.2745119999999983, 7.190848, 8.0048, -0.36070400000000014 ] ]
]
Outputs Statistics: {meanExponent=0.4637868418012085, negative=7, min=-17.750752000000006, max=20.148736, mean=0.8558239999999991, count=16, sum=13.693183999999986, positive=9, stdDev=8.053549201790725, zeros=0}

Feedback Validation

We validate the agreement between the implemented derivative of the inputs apply finite difference estimations:

SingleDerivativeTester.java:117 executed in 0.06 seconds (0.000 gc):

        return testFeedback(
            statistics,
            component.addRef(),
            RefUtil.addRef(inputPrototype),
            outputPrototype.addRef());
      },
      outputPrototype.addRef(),
      RefUtil.addRef(inputPrototype),
      component.addRef()));
Logging
Feedback for input 0
Inputs Values: [
[ [ 0.76, 0.268, 1.424 ], [ -0.476, 0.612, -1.044 ], [ 1.644, -1.088, 0.384 ] ],
[ [ -0.276, 1.104, 1.128 ], [ 1.72, -1.516, 1.804 ], [ -0.34, 1.968, 1.964 ] ],
[ [ 1.364, -1.8, 0.508 ], [ -1.544, -0.436, -1.444 ], [ 0.772, 0.708, -1.416 ] ]
]
Value Statistics: {meanExponent=-0.033998463304850374, negative=11, min=-1.8, max=1.968, mean=0.2500740740740741, count=27, sum=6.752000000000001, positive=16, stdDev=1.1981172243991487, zeros=0}
Implemented Feedback: [ [ 0.584, 0.856, 1.64, 0.032, -0.356, -1.492, 0.264, 0.328, ... ], [ 0.78, 1.448, -0.496, 1.368, -0.06, -1.572, -0.832, -0.516, ... ], [ -1.3, 0.604, -0.76, -1.488, -1.46, -1.516, 0.968, -0.816, ... ], [ 1.424, -0.092, 0.12, 0.492, 1.18, -0.768, -1.432, -0.584, ... ], [ -0.228, 1.392, 1.872, 1.38, -1.696, 1.552, 1.448, 0.244, ... ], [ 1.304, 0.212, -0.736, 1.836, -0.74, -0.556, 0.848, -1.052, ... ], [ -0.02, 0.48, -0.056, 1.544, -1.976, 1.764, -0.708, 1.7, ... ], [ 1.052, -0.216, 1.316, -1.284, -0.684, 0.7, 0.484, -1.384, ... ], ... ]
Implemented Statistics: {meanExponent=-0.1335798644506383, negative=198, min=-2.0, max=1.984, mean=0.09410185185185173, count=432, sum=40.651999999999944, positive=234, stdDev=1.1457122274571037, zeros=0}
Measured Feedback: [ [ 0.5840000000034706, 0.8560000000024104, 1.6399999999983095, 0.03200000000092018, -0.3560000000035757, -1.4919999999918332, 0.2640000000120324, 0.3279999999961092, ... ], [ 0.780000000020209, 1.4479999999927884, -0.496000000005381, 1.3680000000038106, -0.05999999999062311, -1.5720000000030154, -0.8319999999883976, -0.515999999990413, ... ], [ -1.299999999986312, 0.6040000000062662, -0.7599999999996498, -1.4879999999983795, -1.459999999990913, -1.5159999999880824, 0.968000000005631, -0.8159999999790557, ... ], [ 1.4240000000143027, -0.09199999999154329, 0.11999999999900979, 0.49200000000304556, 1.1800000000050659, -0.7679999999865572, -1.4319999999923283, -0.5840000000034706, ... ], [ -0.22799999999989495, 1.391999999995619, 1.8719999999916581, 1.3800000000019352, -1.695999999995479, 1.5519999999824563, 1.448000000010552, 0.24400000000923683, ... ], [ 1.3039999999975294, 0.21200000000831665, -0.7360000000034006, 1.8359999999972842, -0.7399999999968543, -0.5559999999960041, 0.8480000000066212, -1.0520000000013852, ... ], [ -0.01999999998503199, 0.47999999999603915, -0.056000000014932994, 1.5439999999999898, -1.9759999999990896, 1.7640000000085365, -0.7079999999959341, 1.7000000000066962, ... ], [ 1.0520000000013852, -0.21599999998400676, 1.315999999995654, -1.2840000000036156, -0.6839999999996849, 0.7000000000090267, 0.4839999999983746, -1.3839999999731845, ... ], ... ]
Measured Statistics: {meanExponent=-0.13357986444773517, negative=198, min=-1.9999999999953388, max=1.9840000000037605, mean=0.09410185185382537, count=432, sum=40.65200000085256, positive=234, stdDev=1.1457122274565497, zeros=0}
Feedback Error: [ [ 3.470668197280702E-12, 2.4104052087636774E-12, -1.6904255772942633E-12, 9.201805983849454E-13, -3.5756952954102417E-12, 8.166800569142652E-12, 1.2032375096282522E-11, -3.890832100950092E-12, ... ], [ 2.0208945628041874E-11, -7.211564678755167E-12, -5.381028955753209E-12, 3.810507465118462E-12, 9.376888154832841E-12, -3.015365734881925E-12, 1.1602385718845198E-11, 9.586997862243152E-12, ... ], [ 1.3687939670603555E-11, 6.266209773286846E-12, 3.5016434196677437E-13, 1.6204815267428785E-12, 9.086953411951981E-12, 1.191757803553628E-11, 5.631051180898794E-12, 2.0944246337251116E-11, ... ], [ 1.4302781181640967E-11, 8.456707556447896E-12, -9.902079156631771E-13, 3.0455638011517294E-12, 5.065947661364589E-12, 1.344280242676632E-11, 7.671641100159832E-12, -3.470668197280702E-12, ... ], [ 1.0505485370515544E-13, -4.380940055170868E-12, -8.341993762428501E-12, 1.935340776526573E-12, 4.5210502008785625E-12, -1.7543744235126724E-11, 1.0552003715247338E-11, 9.236833520276377E-12, ... ], [ -2.4706903190008234E-12, 8.316652921891432E-12, -3.4006131244268545E-12, -2.715827562838058E-12, 3.1457059179729185E-12, 3.9959147102308634E-12, 6.621259096561971E-12, -1.3851142455223453E-12, ... ], [ 1.49680094707616E-11, -3.9608316626527085E-12, -1.4932992342675533E-11, -1.021405182655144E-14, 9.103828801926284E-13, 8.536504836342829E-12, 4.065858760782248E-12, 6.696199150724169E-12, ... ], [ 1.3851142455223453E-12, 1.5993234514510846E-11, -4.346079052197638E-12, -3.6155523019942848E-12, 3.1519231669108194E-13, 9.026779324017298E-12, -1.6253665080512292E-12, 2.681543875837633E-11, ... ], ... ]
Error Statistics: {meanExponent=-11.399135400699324, negative=170, min=-2.4624968730790897E-11, max=3.007605275939795E-11, mean=1.973523879360952E-12, count=432, sum=8.525623158839313E-10, positive=262, stdDev=8.899915265607846E-12, zeros=0}

Returns

    {
      "absoluteTol" : {
        "count" : 432,
        "sum" : 2.9390549612096084E-9,
        "min" : 1.021405182655144E-14,
        "max" : 3.007605275939795E-11,
        "sumOfSquare" : 3.5900620518560024E-20,
        "standardDeviation" : 6.067740317435933E-12,
        "average" : 6.803367965762982E-12
      },
      "relativeTol" : {
        "count" : 432,
        "sum" : 5.797113817467091E-9,
        "min" : 3.3076592702563064E-15,
        "max" : 1.4021566006651674E-9,
        "sumOfSquare" : 2.4459285973578774E-18,
        "standardDeviation" : 7.403914922642678E-11,
        "average" : 1.341924494784049E-11
      }
    }

Learning Validation

We validate the agreement between the implemented derivative of the internal weights apply finite difference estimations:

SingleDerivativeTester.java:133 executed in 0.33 seconds (0.000 gc):

        return testLearning(
            statistics,
            component.addRef(),
            RefUtil.addRef(inputPrototype),
            outputPrototype.addRef());
      },
      outputPrototype.addRef(),
      RefUtil.addRef(inputPrototype),
      component.addRef()));
Logging
Learning Gradient for weight setByCoord 0
Weights: [ 0.584, 0.78, -1.3, 1.424, -0.228, 1.304, -0.02, 1.052, ... ]
Implemented Gradient: [ [ 0.76, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -0.276, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.364, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -0.476, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.72, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -1.544, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -0.34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], ... ]
Implemented Statistics: {meanExponent=-0.03399846330485025, negative=176, min=-1.8, max=1.968, mean=0.015629629629629646, count=6912, sum=108.03200000000011, positive=256, stdDev=0.30558482463632075, zeros=6480}
Measured Gradient: [ [ 0.7599999999996498, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -0.27599999999239344, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.364000000005916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -0.4759999999848219, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.7199999999917281, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -1.543999999995549, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.6439999999917632, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -0.3399999999942338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], ... ]
Measured Statistics: {meanExponent=-0.033998463305095296, negative=176, min=-1.8000000000029104, max=1.9680000000121822, mean=0.015629629629722325, count=6912, sum=108.0320000006407, positive=256, stdDev=0.3055848246363451, zeros=6480}
Gradient Error: [ [ -3.5016434196677437E-13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 7.606582030916798E-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 5.915934409017609E-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 1.517808101425544E-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -8.271827667272191E-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 4.451106150327178E-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ -8.236744619694036E-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], [ 5.766220834146907E-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ], ... ]
Error Statistics: {meanExponent=-11.423497648067356, negative=169, min=-2.4589996705515205E-11, max=3.2616798151252624E-11, mean=9.269822563871976E-14, count=6912, sum=6.407301356148309E-10, positive=263, stdDev=1.9704168253186513E-12, zeros=6480}

Returns

    {
      "absoluteTol" : {
        "count" : 7344,
        "sum" : 5.4721561344728276E-9,
        "min" : 0.0,
        "max" : 3.2616798151252624E-11,
        "sumOfSquare" : 6.279614858677271E-20,
        "standardDeviation" : 2.8276263998098612E-12,
        "average" : 7.451192993563219E-13
      },
      "relativeTol" : {
        "count" : 864,
        "sum" : 7.497507007913138E-9,
        "min" : 3.3076592702563064E-15,
        "max" : 1.4021566006651674E-9,
        "sumOfSquare" : 2.4615917509119762E-18,
        "standardDeviation" : 5.2666522263390185E-11,
        "average" : 8.677670148047613E-12
      }
    }

Total Accuracy

The overall agreement accuracy between the implemented derivative and the finite difference estimations:

SingleDerivativeTester.java:148 executed in 0.00 seconds (0.000 gc):

    //log.info(String.format("Component: %s\nInputs: %s\noutput=%s", component, Arrays.toStream(inputPrototype), outputPrototype));
    log.info(RefString.format("Finite-Difference Derivative Accuracy:"));
    log.info(RefString.format("absoluteTol: %s", statistics.absoluteTol));
    log.info(RefString.format("relativeTol: %s", statistics.relativeTol));
Logging
Finite-Difference Derivative Accuracy:
absoluteTol: 7.4512e-13 +- 2.8276e-12 [0.0000e+00 - 3.2617e-11] (7344#)
relativeTol: 8.6777e-12 +- 5.2667e-11 [3.3077e-15 - 1.4022e-09] (864#)

Frozen and Alive Status

SingleDerivativeTester.java:156 executed in 0.01 seconds (0.000 gc):

    testFrozen(component.addRef(), RefUtil.addRef(inputPrototype));
    testUnFrozen(component.addRef(), RefUtil.addRef(inputPrototype));

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

    throwException(exceptions.addRef());

Results

classdetailsresult
com.simiacryptus.mindseye.test.unit.SingleDerivativeTesterToleranceStatistics{absoluteTol=7.4512e-13 +- 2.8276e-12 [0.0000e+00 - 3.2617e-11] (7344#), relativeTol=8.6777e-12 +- 5.2667e-11 [3.3077e-15 - 1.4022e-09] (864#)}OK
  {
    "result": "OK",
    "performance": {
      "execution_time": "0.633",
      "gc_time": "0.204"
    },
    "created_on": 1586736152091,
    "file_name": "derivativeTest",
    "report": {
      "simpleName": "Image",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.FullyConnectedReferenceLayerTest.Image",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/test/java/com/simiacryptus/mindseye/layers/java/FullyConnectedReferenceLayerTest.java",
      "javaDoc": ""
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/java/FullyConnectedReferenceLayer/Image/derivativeTest/202004130232",
    "id": "25d8b7f7-4383-4778-b206-c655b4826c50",
    "report_type": "Components",
    "display_name": "Derivative Validation",
    "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": ""
    }
  }