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 470494444445147136

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.08, 0.7, -0.128, 0.496 ]
Inputs Statistics: {meanExponent=-0.6122800817139336, negative=1, min=-0.128, max=0.7, mean=0.287, count=4, sum=1.148, positive=3, stdDev=0.3276141022605712, zeros=0}
Output: [ 0.19278888790601265, 0.358380669884858, 0.1565844913571327, 0.29224595085199667 ]
Outputs Statistics: {meanExponent=-0.6250190441116747, negative=0, min=0.1565844913571327, max=0.358380669884858, mean=0.25, count=4, sum=1.0, positive=4, stdDev=0.07989158054844746, 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.03 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.08, 0.7, -0.128, 0.496 ]
Value Statistics: {meanExponent=-0.6122800817139336, negative=1, min=-0.128, max=0.7, mean=0.287, count=4, sum=1.148, positive=3, stdDev=0.3276141022605712, zeros=0}
Implemented Feedback: [ [ 0.1556213326059755, -0.06909181079411361, -0.030187749952070263, -0.05634177185979167 ], [ -0.06909181079411361, 0.22994396533773842, -0.05611685490614898, -0.10473529963747587 ], [ -0.030187749952070263, -0.05611685490614898, 0.13206578842356073, -0.04576118356534151 ], [ -0.05634177185979167, -0.10473529963747587, -0.04576118356534151, 0.20683825506260903 ] ]
Implemented Statistics: {meanExponent=-1.1256465449146806, negative=12, min=-0.10473529963747587, max=0.22994396533773842, mean=-6.938893903907228E-18, count=16, sum=-1.1102230246251565E-16, positive=4, stdDev=0.10824155592445873, zeros=0}
Measured Feedback: [ [ 0.15562611348329813, -0.0690939333791718, -0.03018867735654629, -0.0563435027478576 ], [ -0.06909278922440087, 0.2299472216427123, -0.056117649593900865, -0.10473678282552079 ], [ -0.03018878665689284, -0.0561187820657949, 0.1320703238130716, -0.04576275509149408 ], [ -0.05634294236056547, -0.10473747551364987, -0.04576213425394604, 0.20684255212788383 ] ]
Measured Statistics: {meanExponent=-1.1256356877642302, negative=12, min=-0.10473747551364987, max=0.2299472216427123, mean=-1.734723475976807E-13, count=16, sum=-2.7755575615628914E-12, positive=4, stdDev=0.10824390539016497, zeros=0}
Feedback Error: [ [ 4.780877322640986E-6, -2.12258505818963E-6, -9.274044760268496E-7, -1.7308880659316905E-6 ], [ -9.784302872628547E-7, 3.2563049738865146E-6, -7.946877518816287E-7, -1.4831880449234225E-6 ], [ -1.0367048225781716E-6, -1.9271596459202733E-6, 4.53538951086796E-6, -1.5715261525717228E-6 ], [ -1.1705007738060935E-6, -2.175876174001501E-6, -9.506886045340668E-7, 4.297065274799783E-6 ] ]
Error Statistics: {meanExponent=-5.752669768323731, negative=12, min=-2.175876174001501E-6, max=4.780877322640986E-6, mean=-1.7346454134203881E-13, count=16, sum=-2.775432661472621E-12, positive=4, stdDev=2.4863586930765205E-6, zeros=0}

Returns

    {
      "absoluteTol" : {
        "count" : 16,
        "sum" : 3.373927693982315E-5,
        "min" : 7.946877518816287E-7,
        "max" : 4.780877322640986E-6,
        "sumOfSquare" : 9.89116728101954E-11,
        "standardDeviation" : 1.3173244020507833E-6,
        "average" : 2.1087048087389468E-6
      },
      "relativeTol" : {
        "count" : 16,
        "sum" : 1.9999610222100564E-4,
        "min" : 7.080598772215514E-6,
        "max" : 1.7170657358048413E-5,
        "sumOfSquare" : 2.755221619326945E-9,
        "standardDeviation" : 3.994676636258103E-6,
        "average" : 1.2499756388812853E-5
      }
    }

Learning Validation

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

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

        return testLearning(
            statistics,
            component.addRef(),
            RefUtil.addRef(inputPrototype),
            outputPrototype.addRef());
      },
      outputPrototype.addRef(),
      RefUtil.addRef(inputPrototype),
      component.addRef()));

Returns

    {
      "absoluteTol" : {
        "count" : 16,
        "sum" : 3.373927693982315E-5,
        "min" : 7.946877518816287E-7,
        "max" : 4.780877322640986E-6,
        "sumOfSquare" : 9.89116728101954E-11,
        "standardDeviation" : 1.3173244020507833E-6,
        "average" : 2.1087048087389468E-6
      },
      "relativeTol" : {
        "count" : 16,
        "sum" : 1.9999610222100564E-4,
        "min" : 7.080598772215514E-6,
        "max" : 1.7170657358048413E-5,
        "sumOfSquare" : 2.755221619326945E-9,
        "standardDeviation" : 3.994676636258103E-6,
        "average" : 1.2499756388812853E-5
      }
    }

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: 2.1087e-06 +- 1.3173e-06 [7.9469e-07 - 4.7809e-06] (16#)
relativeTol: 1.2500e-05 +- 3.9947e-06 [7.0806e-06 - 1.7171e-05] (16#)

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=2.1087e-06 +- 1.3173e-06 [7.9469e-07 - 4.7809e-06] (16#), relativeTol=1.2500e-05 +- 3.9947e-06 [7.0806e-06 - 1.7171e-05] (16#)}OK
  {
    "result": "OK",
    "performance": {
      "execution_time": "0.159",
      "gc_time": "0.097"
    },
    "created_on": 1586737193258,
    "file_name": "derivativeTest",
    "report": {
      "simpleName": "Basic",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.SoftmaxLayerTest.Basic",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/test/java/com/simiacryptus/mindseye/layers/java/SoftmaxLayerTest.java",
      "javaDoc": ""
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/java/SoftmaxLayer/Basic/derivativeTest/202004131953",
    "id": "63dd35ed-4e9d-4cde-a846-c6778879ad54",
    "report_type": "Components",
    "display_name": "Derivative Validation",
    "target": {
      "simpleName": "SoftmaxLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.SoftmaxLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/93db34cedee48c0202777a2b25deddf1dfaf5731/src/main/java/com/simiacryptus/mindseye/layers/java/SoftmaxLayer.java",
      "javaDoc": ""
    }
  }