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

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

Test Modules

Network Diagram

This is a network apply the following layout:

LayerTests.java:203 executed in 0.07 seconds (0.000 gc):

    return Graphviz.fromGraph((Graph) TestUtil.toGraph(((DAGNetwork) layer).addRef())).height(400).width(600)
        .render(Format.PNG).toImage();
Logging
executing command [/bin/sh, -c, dot -Tsvg /tmp/GraphvizJava/DotEngine4649710823081552300/dotfile.dot -ooutfile.svg]

Returns

Result

Using Seed 1707502356754038784

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, -1.72, -0.712, -0.176, -0.556, -1.516 ], [ 0.496, -0.852, 1.356, -0.768, -1.228, -0.804 ], [ 0.048, -0.804, 1.032, 1.64, -0.408, -0.892 ] ],
[ [ 0.7, -1.028, 1.048, 1.556, -1.476, -0.636 ], [ -0.608, 1.912, 1.512, -0.068, 1.552, 0.148 ], [ 1.524, 1.108, 0.3, 0.392, -0.384, 1.62 ] ],
[ [ -0.128, -0.384, -1.616, 0.788, 1.704, -1.492 ], [ 1.764, -1.688, 1.556, 1.612, 1.876, -0.032 ], [ 1.208, 0.028, 0.636, 0.092, -1.572, -1.856 ] ]
]
Inputs Statistics: {meanExponent=-0.17845012967818402, negative=26, min=-1.856, max=1.912, mean=0.10896296296296298, count=54, sum=5.884000000000001, positive=28, stdDev=1.1399084915021154, zeros=0}
Output: [
[ [ -0.990336, -1.4536479999999992, 3.373856000000001 ], [ -1.8347360000000015, 5.22368, 2.1614400000000002 ], [ 2.127247999999998, -2.2059680000000013, -3.6029439999999986 ] ],
[ [ 2.061519999999998, -1.5095359999999982, 2.6922240000000004 ], [ -2.0402560000000007, 7.857312, -5.046816000000003 ], [ 16.792656, -3.81768, 10.079360000000001 ] ],
[ [ -0.5429600000000003, 8.236016, 11.073279999999999 ], [ -9.641791999999999, -4.911248000000001, 8.1568 ], [ -6.057952000000002, 10.340735999999998, 7.429056 ] ]
]
Outputs Statistics: {meanExponent=0.5859869781561906, negative=13, min=-9.641791999999999, max=16.792656, mean=1.998122666666666, count=27, sum=53.949311999999985, positive=14, stdDev=6.208918731206801, zeros=0}

Feedback Validation

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

SingleDerivativeTester.java:117 executed in 1.45 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, -1.72, -0.712, -0.176, -0.556, -1.516 ], [ 0.496, -0.852, 1.356, -0.768, -1.228, -0.804 ], [ 0.048, -0.804, 1.032, 1.64, -0.408, -0.892 ] ],
[ [ 0.7, -1.028, 1.048, 1.556, -1.476, -0.636 ], [ -0.608, 1.912, 1.512, -0.068, 1.552, 0.148 ], [ 1.524, 1.108, 0.3, 0.392, -0.384, 1.62 ] ],
[ [ -0.128, -0.384, -1.616, 0.788, 1.704, -1.492 ], [ 1.764, -1.688, 1.556, 1.612, 1.876, -0.032 ], [ 1.208, 0.028, 0.636, 0.092, -1.572, -1.856 ] ]
]
Value Statistics: {meanExponent=-0.17845012967818402, negative=26, min=-1.856, max=1.912, mean=0.10896296296296298, count=54, sum=5.884000000000001, positive=28, stdDev=1.1399084915021154, zeros=0}
Implemented Feedback: [ [ -1.552, -1.156, 0.0, -0.316, 0.972, 0.0, 0.0, 0.0, ... ], [ 1.42, -1.552, -1.156, -0.472, -0.316, 0.972, 0.0, 0.0, ... ], [ 0.0, 1.42, -1.552, 0.0, -0.472, -0.316, 0.0, 0.0, ... ], [ -1.456, 0.52, 0.0, -1.552, -1.156, 0.0, -0.316, 0.972, ... ], [ -2.0, -1.456, 0.52, 1.42, -1.552, -1.156, -0.472, -0.316, ... ], [ 0.0, -2.0, -1.456, 0.0, 1.42, -1.552, 0.0, -0.472, ... ], [ 0.0, 0.0, 0.0, -1.456, 0.52, 0.0, -1.552, -1.156, ... ], [ 0.0, 0.0, 0.0, -2.0, -1.456, 0.52, 1.42, -1.552, ... ], ... ]
Implemented Statistics: {meanExponent=-0.11160088656840629, negative=431, min=-2.0, max=1.98, mean=0.019709190672153605, count=1458, sum=28.735999999999958, positive=451, stdDev=0.9352987671020911, zeros=576}
Measured Feedback: [ [ -1.5520000000002199, -1.1560000000088166, 0.0, -0.31599999999798456, 0.9720000000079665, 0.0, 0.0, 0.0, ... ], [ 1.4200000000030855, -1.5520000000002199, -1.1559999999999349, -0.47200000000025, -0.31599999999798456, 0.9719999999902029, 0.0, 0.0, ... ], [ 0.0, 1.4200000000030855, -1.5520000000002199, 0.0, -0.4719999999913682, -0.31599999999798456, 0.0, 0.0, ... ], [ -1.4559999999974593, 0.5200000000016303, 0.0, -1.5520000000002199, -1.155999999991053, 0.0, -0.31599999999798456, 0.9719999999902029, ... ], [ -1.9999999999953388, -1.4559999999974593, 0.5200000000016303, 1.4200000000030855, -1.5520000000002199, -1.1560000000088166, -0.4719999999913682, -0.31599999999798456, ... ], [ 0.0, -2.0000000000131024, -1.4559999999974593, 0.0, 1.4200000000030855, -1.5520000000002199, 0.0, -0.4720000000091318, ... ], [ 0.0, 0.0, 0.0, -1.4559999999974593, 0.5200000000016303, 0.0, -1.5520000000002199, -1.1560000000088166, ... ], [ 0.0, 0.0, 0.0, -1.9999999999953388, -1.4559999999974593, 0.5200000000016303, 1.4200000000030855, -1.5520000000179834, ... ], ... ]
Measured Statistics: {meanExponent=-0.11160088656801694, negative=431, min=-2.0000000000131024, max=1.980000000001425, mean=0.0197091906718249, count=1458, sum=28.735999999520704, positive=451, stdDev=0.9352987671022709, zeros=576}
Feedback Error: [ [ -2.19824158875781E-13, -8.816725127758218E-12, 0.0, 2.015443367753278E-12, 7.966516335500273E-12, 0.0, 0.0, 0.0, ... ], [ 3.085531830038235E-12, -2.19824158875781E-13, 6.505906924303417E-14, -2.5002222514558525E-13, 2.015443367753278E-12, -9.797052058502231E-12, 0.0, 0.0, ... ], [ 0.0, 3.085531830038235E-12, -2.19824158875781E-13, 0.0, 8.631761971855667E-12, 2.015443367753278E-12, 0.0, 0.0, ... ], [ 2.5406343695522082E-12, 1.6302514893595799E-12, 0.0, -2.19824158875781E-13, 8.946843266244286E-12, 0.0, 2.015443367753278E-12, -9.797052058502231E-12, ... ], [ 4.661160346586257E-12, 2.5406343695522082E-12, 1.6302514893595799E-12, 3.085531830038235E-12, -2.19824158875781E-13, -8.816725127758218E-12, 8.631761971855667E-12, 2.015443367753278E-12, ... ], [ 0.0, -1.3102408047416247E-11, 2.5406343695522082E-12, 0.0, 3.085531830038235E-12, -2.19824158875781E-13, 0.0, -9.131806422146838E-12, ... ], [ 0.0, 0.0, 0.0, 2.5406343695522082E-12, 1.6302514893595799E-12, 0.0, -2.19824158875781E-13, -8.816725127758218E-12, ... ], [ 0.0, 0.0, 0.0, 4.661160346586257E-12, 2.5406343695522082E-12, 1.6302514893595799E-12, 3.085531830038235E-12, -1.7983392552878286E-11, ... ], ... ]
Error Statistics: {meanExponent=-11.60666023314184, negative=455, min=-3.442202078929313E-11, max=2.5554891536216928E-11, mean=-3.2873452236144833E-13, count=1458, sum=-4.792949336029917E-10, positive=427, stdDev=4.812949955944666E-12, zeros=576}

Returns

    {
      "absoluteTol" : {
        "count" : 1458,
        "sum" : 3.8751401983116995E-9,
        "min" : 0.0,
        "max" : 3.442202078929313E-11,
        "sumOfSquare" : 3.393138324301591E-20,
        "standardDeviation" : 4.025966423391459E-12,
        "average" : 2.6578465008996567E-12
      },
      "relativeTol" : {
        "count" : 882,
        "sum" : 6.842821335318194E-9,
        "min" : 2.1466134835732244E-14,
        "max" : 6.620079191095183E-10,
        "sumOfSquare" : 9.03598572399349E-19,
        "standardDeviation" : 3.1053131009568525E-11,
        "average" : 7.758300833694098E-12
      }
    }

Learning Validation

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

SingleDerivativeTester.java:133 executed in 2.14 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: [ -2.0, -1.456, 0.52, 1.42, -1.552, -1.156, -0.472, -0.316, ... ]
Implemented Gradient: [ [ -0.608, 1.764, 0.0, 1.524, 1.208, 0.0, 0.0, 0.0, ... ], [ 0.496, -0.608, 1.764, 0.048, 1.524, 1.208, 0.0, 0.0, ... ], [ 0.0, 0.496, -0.608, 0.0, 0.048, 1.524, 0.0, 0.0, ... ], [ 0.7, -0.128, 0.0, -0.608, 1.764, 0.0, 1.524, 1.208, ... ], [ 0.08, 0.7, -0.128, 0.496, -0.608, 1.764, 0.048, 1.524, ... ], [ 0.0, 0.08, 0.7, 0.0, 0.496, -0.608, 0.0, 0.048, ... ], [ 0.0, 0.0, 0.0, 0.7, -0.128, 0.0, -0.608, 1.764, ... ], [ 0.0, 0.0, 0.0, 0.08, 0.7, -0.128, 0.496, -0.608, ... ], ... ]
Implemented Statistics: {meanExponent=-0.1683856540383651, negative=402, min=-1.856, max=1.912, mean=0.021193415637860116, count=8748, sum=185.4000000000003, positive=480, stdDev=0.36767508492874446, zeros=7866}
Measured Gradient: [ [ -0.6079999999997199, 1.763999999990773, 0.0, 1.5240000000016352, 1.2080000000125324, 0.0, 0.0, 0.0, ... ], [ 0.496000000005381, -0.6079999999997199, 1.7639999999996547, 0.04800000000138027, 1.524000000010517, 1.2079999999947688, 0.0, 0.0, ... ], [ 0.0, 0.49599999998761746, -0.6079999999997199, 0.0, 0.048000000010262056, 1.5239999999927534, 0.0, 0.0, ... ], [ 0.700000000000145, -0.12800000000368073, 0.0, -0.6079999999997199, 1.7640000000085365, 0.0, 1.524000000010517, 1.2079999999770052, ... ], [ 0.08000000000230045, 0.6999999999912632, -0.12800000000368073, 0.496000000005381, -0.6079999999997199, 1.763999999990773, 0.048000000010262056, 1.5239999999749898, ... ], [ 0.0, 0.07999999999341867, 0.700000000000145, 0.0, 0.496000000005381, -0.6079999999997199, 0.0, 0.04799999999249849, ... ], [ 0.0, 0.0, 0.0, 0.700000000000145, -0.12800000000368073, 0.0, -0.6079999999997199, 1.7639999999730094, ... ], [ 0.0, 0.0, 0.0, 0.08000000000230045, 0.7000000000090267, -0.12800000000368073, 0.496000000005381, -0.6079999999997199, ... ], ... ]
Measured Statistics: {meanExponent=-0.16838565403901293, negative=402, min=-1.8560000000178434, max=1.9120000000150128, mean=0.021193415637801964, count=8748, sum=185.39999999949157, positive=480, stdDev=0.3676750849285783, zeros=7866}
Gradient Error: [ [ 2.80109269112927E-13, -9.227063557659676E-12, 0.0, 1.6351364706679306E-12, 1.2532419546573692E-11, 0.0, 0.0, 0.0, ... ], [ 5.381028955753209E-12, 2.80109269112927E-13, -3.452793606584237E-13, 1.380270897577418E-12, 1.0516920667669183E-11, -5.2311488474288126E-12, 0.0, 0.0, ... ], [ 0.0, -1.2382539438249296E-11, 2.80109269112927E-13, 0.0, 1.026205509457867E-11, -7.246647726333322E-12, 0.0, 0.0, ... ], [ 1.4499512701604544E-13, -3.6807223935397815E-12, 0.0, 2.80109269112927E-13, 8.536504836342829E-12, 0.0, 1.0516920667669183E-11, -2.2994717241431317E-11, ... ], [ 2.3004514959623634E-12, -8.736789069985207E-12, -3.6807223935397815E-12, 5.381028955753209E-12, 2.80109269112927E-13, -9.227063557659676E-12, 1.026205509457867E-11, -2.5010216120335826E-11, ... ], [ 0.0, -6.581332701038889E-12, 1.4499512701604544E-13, 0.0, 5.381028955753209E-12, 2.80109269112927E-13, 0.0, -7.501513299423834E-12, ... ], [ 0.0, 0.0, 0.0, 1.4499512701604544E-13, -3.6807223935397815E-12, 0.0, 2.80109269112927E-13, -2.699063195166218E-11, ... ], [ 0.0, 0.0, 0.0, 2.3004514959623634E-12, 9.026779324017298E-12, -3.6807223935397815E-12, 5.381028955753209E-12, 2.80109269112927E-13, ... ], ... ]
Error Statistics: {meanExponent=-11.630226659191376, negative=472, min=-3.01461078322518E-11, max=2.4239860119124046E-11, mean=-5.812475209013581E-14, count=8748, sum=-5.084753312845081E-10, positive=410, stdDev=2.0176473307505314E-12, zeros=7866}

Returns

    {
      "absoluteTol" : {
        "count" : 10206,
        "sum" : 7.833699740972255E-9,
        "min" : 0.0,
        "max" : 3.442202078929313E-11,
        "sumOfSquare" : 6.957317801782972E-20,
        "standardDeviation" : 2.4955448637497993E-12,
        "average" : 7.675582736598329E-13
      },
      "relativeTol" : {
        "count" : 1764,
        "sum" : 1.4608938261100854E-8,
        "min" : 1.3980586236020684E-14,
        "max" : 6.620079191095183E-10,
        "sumOfSquare" : 1.6433332600815308E-18,
        "standardDeviation" : 2.93769991833176E-11,
        "average" : 8.2817110323701E-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.6756e-13 +- 2.4955e-12 [0.0000e+00 - 3.4422e-11] (10206#)
relativeTol: 8.2817e-12 +- 2.9377e-11 [1.3981e-14 - 6.6201e-10] (1764#)

Frozen and Alive Status

SingleDerivativeTester.java:156 executed in 0.03 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.6756e-13 +- 2.4955e-12 [0.0000e+00 - 3.4422e-11] (10206#), relativeTol=8.2817e-12 +- 2.9377e-11 [1.3981e-14 - 6.6201e-10] (1764#)}OK
  {
    "result": "OK",
    "performance": {
      "execution_time": "4.754",
      "gc_time": "0.946"
    },
    "created_on": 1586746354031,
    "file_name": "derivativeTest",
    "report": {
      "simpleName": "BandReduceTest",
      "canonicalName": "com.simiacryptus.mindseye.layers.cudnn.conv.ConvolutionLayerTest.BandReduceTest",
      "link": "https://github.com/SimiaCryptus/mindseye-cudnn/tree/59d5b3318556370acb2d83ee6ec123ce0fc6974f/src/test/java/com/simiacryptus/mindseye/layers/cudnn/conv/ConvolutionLayerTest.java",
      "javaDoc": ""
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/cudnn/conv/ConvolutionLayer/BandReduceTest/derivativeTest/202004135234",
    "id": "c0472d23-f017-433e-aba0-21ceeb866027",
    "report_type": "Components",
    "display_name": "Derivative Validation",
    "target": {
      "simpleName": "ConvolutionLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.cudnn.conv.ConvolutionLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-cudnn/tree/59d5b3318556370acb2d83ee6ec123ce0fc6974f/src/main/java/com/simiacryptus/mindseye/layers/cudnn/conv/ConvolutionLayer.java",
      "javaDoc": ""
    }
  }