From 32e5cc1945a3fb75bd281aa9558888b75761e26f Mon Sep 17 00:00:00 2001 From: Alex Black Date: Thu, 13 Jun 2019 20:40:40 +1000 Subject: [PATCH] First round of runtime test improvements (#7875) * Capsnet test runtime improvements * Slow test speedups * Next round of test speed improvements * More test improvements * Improve test speed * Next round of test speedups * Another round * More test speedups * Another round * Another round of test speedups * Another round of speedups... * CuDNN test speedups + more tests extending BaseDL4JTest * Minor fix + more BaseDL4JTest use in other modules --- .../gradientcheck/AttentionLayerTest.java | 130 ++--- .../gradientcheck/BNGradientCheckTest.java | 322 ++++-------- .../gradientcheck/CNN3DGradientCheckTest.java | 4 +- .../gradientcheck/CNNGradientCheckTest.java | 454 ++++++++-------- .../CapsnetGradientCheckTest.java | 5 +- .../gradientcheck/DropoutGradientCheck.java | 20 +- .../GlobalPoolingGradientCheckTests.java | 48 +- .../GradientCheckTestsComputationGraph.java | 91 ++-- .../GradientCheckTestsMasking.java | 58 +-- .../gradientcheck/LSTMGradientCheckTests.java | 206 +++----- .../gradientcheck/RnnGradientChecks.java | 14 +- .../UtilLayerGradientChecks.java | 33 +- .../gradientcheck/VaeGradientCheckTests.java | 51 +- .../gradientcheck/YoloGradientCheckTests.java | 68 ++- .../deeplearning4j/nn/dtypes/DTypeTests.java | 36 +- .../nn/layers/capsule/CapsNetMNISTTest.java | 2 + .../LocallyConnectedLayerTest.java | 14 +- .../nn/layers/samediff/TestSameDiffConv.java | 11 +- .../optimize/solver/TestOptimizers.java | 32 +- .../org/deeplearning4j/ValidateCuDNN.java | 20 +- .../gradientcheck/CNNGradientCheckTest.java | 488 ++++++++---------- .../gradientcheck/CuDNNGradientChecks.java | 190 +++---- .../deeplearning4j/graph/BaseDL4JTest.java | 140 +++++ .../graph/data/TestGraphLoading.java | 3 +- .../graph/data/TestGraphLoadingWeighted.java | 3 +- .../deeplearning4j/graph/graph/TestGraph.java | 3 +- .../deepwalk/DeepWalkGradientCheck.java | 3 +- .../graph/models/deepwalk/TestDeepWalk.java | 5 +- .../models/deepwalk/TestGraphHuffman.java | 3 +- .../nn/modelimport/keras/BaseDL4JTest.java | 140 +++++ .../nn/modelimport/keras/MiscTests.java | 2 +- .../configurations/FullModelComparisons.java | 3 +- .../keras/configurations/JsonTest.java | 3 +- .../Keras1ModelConfigurationTest.java | 3 +- .../Keras2ModelConfigurationTest.java | 3 +- .../KerasInitilizationTest.java | 3 +- .../configurations/KerasModelImportTest.java | 6 +- .../keras/e2e/KerasCustomLayerTest.java | 3 +- .../keras/e2e/KerasLambdaTest.java | 3 +- .../keras/e2e/KerasModelEndToEndTest.java | 7 +- .../keras/e2e/KerasYolo9000PredictTest.java | 3 +- .../keras/e2e/KerasYolo9000Test.java | 3 +- .../activation/KerasLeakyReLUTest.java | 3 +- .../advanced/activation/KerasPReLUTest.java | 3 +- .../activation/KerasThresholdedReLUTest.java | 3 +- .../KerasAtrousConvolution1DTest.java | 3 +- .../KerasAtrousConvolution2DTest.java | 3 +- .../convolution/KerasConvolution1DTest.java | 3 +- .../convolution/KerasConvolution2DTest.java | 3 +- .../convolution/KerasConvolution3DTest.java | 3 +- .../convolution/KerasCropping1DTest.java | 3 +- .../convolution/KerasCropping2DTest.java | 3 +- .../convolution/KerasCropping3DTest.java | 3 +- .../convolution/KerasDeconvolution2DTest.java | 3 +- .../KerasDepthwiseConvolution2DTest.java | 3 +- .../KerasSeparableConvolution2DTest.java | 3 +- .../convolution/KerasUpsampling1DTest.java | 3 +- .../convolution/KerasUpsampling2DTest.java | 3 +- .../convolution/KerasUpsampling3DTest.java | 3 +- .../convolution/KerasZeroPadding1DTest.java | 3 +- .../convolution/KerasZeroPadding2DTest.java | 3 +- .../convolution/KerasZeroPadding3DTest.java | 3 +- .../layers/core/KerasActivationLayer.java | 3 +- .../keras/layers/core/KerasDenseTest.java | 3 +- .../keras/layers/core/KerasDropoutTest.java | 3 +- .../keras/layers/core/KerasMaskingTest.java | 3 +- .../keras/layers/core/KerasPermuteTest.java | 3 +- .../layers/core/KerasRepeatVectorTest.java | 3 +- .../keras/layers/core/KerasReshapeTest.java | 3 +- .../core/KerasSpatialDropout2DTest.java | 3 +- .../layers/embeddings/KerasEmbeddingTest.java | 3 +- .../local/KerasLocallyConnected1DTest.java | 3 +- .../local/KerasLocallyConnected2DTest.java | 3 +- .../layers/noise/KerasAlphaDropoutTest.java | 3 +- .../noise/KerasGaussianDropoutTest.java | 3 +- .../layers/noise/KerasGaussianNoiseTest.java | 3 +- .../KerasBatchNormalizationTest.java | 3 +- .../layers/pooling/KerasPooling1DTest.java | 3 +- .../layers/pooling/KerasPooling2DTest.java | 3 +- .../layers/pooling/KerasPooling3DTest.java | 3 +- .../keras/layers/recurrent/KerasLSTMTest.java | 3 +- .../layers/recurrent/KerasSimpleRnnTest.java | 3 +- .../wrappers/KerasBidirectionalTest.java | 3 +- .../keras/optimizers/OptimizerImport.java | 3 +- .../TimeSeriesGeneratorImportTest.java | 3 +- .../sequence/TimeSeriesGeneratorTest.java | 3 +- .../text/TokenizerImportTest.java | 3 +- .../preprocessing/text/TokenizerTest.java | 3 +- .../weights/KerasWeightSettingTests.java | 3 +- .../nearestneighbor/server/BaseDL4JTest.java | 140 +++++ .../server/NearestNeighborTest.java | 2 +- .../clustering/kdtree/KDTree.java | 2 +- .../clustering/BaseDL4JTest.java | 140 +++++ .../clustering/kdtree/KDTreeTest.java | 3 +- .../clustering/kmeans/KMeansTest.java | 3 +- .../lsh/RandomProjectionLSHTest.java | 3 +- .../clustering/quadtree/QuadTreeTest.java | 3 +- .../randomprojection/RPTreeTest.java | 3 +- .../randomprojection/RPUtilsTest.java | 3 +- .../clustering/sptree/SPTreeTest.java | 3 +- .../vptree/VPTreeSerializationTests.java | 3 +- .../clustering/vptree/VpTreeNodeTest.java | 3 +- .../java/org/deeplearning4j/BaseDL4JTest.java | 140 +++++ .../org/deeplearning4j/models/UITest.java | 3 +- .../models/WordVectorSerializerTest.java | 3 +- .../loader/VectorsConfigurationTest.java | 3 +- .../models/word2vec/Word2VecTests.java | 3 +- .../iterator/Word2VecIteratorTest.java | 3 +- .../SentenceIteratorTest.java | 3 +- .../UimaResultSetIteratorTest.java | 3 +- .../StemmingPreprocessorTest.java | 3 +- .../PosUimaTokenizerFactoryTest.java | 3 +- .../text/treeparser/TreeParserTest.java | 4 +- .../text/treeparser/TreeTransformerTests.java | 3 +- .../deeplearning4j/util/ContextLabelTest.java | 3 +- .../java/org/deeplearning4j/BaseDL4JTest.java | 140 +++++ .../java/org/deeplearning4j/TsneTest.java | 2 +- .../vectorizer/BagOfWordsVectorizerTest.java | 3 +- .../vectorizer/TfidfVectorizerTest.java | 3 +- .../iterator/TestBertIterator.java | 3 +- .../TestCnnSentenceDataSetIterator.java | 3 +- .../inmemory/InMemoryLookupTableTest.java | 3 +- .../learner/elements/BatchSequenceTest.java | 20 - .../reader/impl/FlatModelUtilsTest.java | 3 +- .../wordvectors/WordVectorsImplTest.java | 3 +- .../models/fasttext/FastTextTest.java | 3 +- .../glove/AbstractCoOccurrencesTest.java | 3 +- .../models/glove/GloveTest.java | 3 +- .../count/BinaryCoOccurrenceReaderTest.java | 3 +- .../models/glove/count/RoundCountTest.java | 3 +- .../ParagraphVectorsTest.java | 3 +- .../sequencevectors/SequenceVectorsTest.java | 3 +- .../walkers/impl/PopularityWalkerTest.java | 3 +- .../graph/walkers/impl/RandomWalkerTest.java | 3 +- .../walkers/impl/WeightedWalkerTest.java | 3 +- .../AbstractElementFactoryTest.java | 3 +- .../serialization/VocabWordFactoryTest.java | 3 +- .../WordVectorSerializerTest.java | 3 +- .../impl/GraphTransformerTest.java | 3 +- .../ParallelTransformerIteratorTest.java | 3 +- .../models/word2vec/Word2VecTestsSmall.java | 3 +- .../word2vec/Word2VecVisualizationTests.java | 3 +- .../iterator/Word2VecDataSetIteratorTest.java | 3 +- .../wordstore/VocabConstructorTest.java | 3 +- .../wordstore/VocabularyHolderTest.java | 3 +- .../wordstore/inmemory/AbstractCacheTest.java | 3 +- .../AsyncLabelAwareIteratorTest.java | 3 +- .../BasicLabelAwareIteratorTest.java | 3 +- .../DefaultDocumentIteratorTest.java | 13 +- .../FileDocumentIteratorTest.java | 3 +- .../FileLabelAwareIteratorTest.java | 3 +- .../FilenamesLabelAwareIteratorTest.java | 3 +- .../documentiterator/LabelsSourceTest.java | 3 +- .../AggregatingSentenceIteratorTest.java | 3 +- .../BasicLineIteratorTest.java | 3 +- .../BasicResultSetIteratorTest.java | 3 +- .../MutipleEpochsSentenceIteratorTest.java | 3 +- .../PrefetchingSentenceIteratorTest.java | 3 +- .../StreamLineIteratorTest.java | 3 +- .../BertWordPieceTokenizerTests.java | 3 +- .../tokenizer/DefaulTokenizerTests.java | 3 +- .../tokenizer/NGramTokenizerTest.java | 3 +- .../EndingPreProcessorTest.java | 3 +- .../NGramTokenizerFactoryTest.java | 3 +- .../wordstore/InMemoryVocabStoreTests.java | 7 +- .../nn/adapters/ArgmaxAdapterTest.java | 3 +- .../nn/adapters/Regression2dAdapterTest.java | 3 +- .../layers/recurrent/MaskZeroLayerTest.java | 3 +- .../samediff/SameDiffCustomLayerTests.java | 3 +- .../EncodedGradientsAccumulatorTest.java | 3 +- .../solvers/accumulation/IndexedTailTest.java | 11 +- .../SmartFancyBlockingQueueTest.java | 3 +- .../parameterserver/BaseDL4JTest.java | 140 +++++ .../ParameterServerParallelWrapperTest.java | 2 +- .../org/deeplearning4j/ui/BaseDL4JTest.java | 140 +++++ .../ui/TestStorageMetaData.java | 2 +- .../ui/stats/TestStatsClasses.java | 3 +- .../ui/stats/TestStatsListener.java | 3 +- .../ui/stats/TestTransferStatsCollection.java | 3 +- .../ui/storage/TestStatsStorage.java | 3 +- .../perf/listener/BaseDL4JTest.java | 140 +++++ .../perf/listener/SystemPollingTest.java | 2 +- .../perf/listener/TestHardWareMetric.java | 2 +- .../listener/TestSystemInfoPrintListener.java | 2 +- .../opvalidation/LayerOpValidation.java | 16 +- .../samediff/SameDiffTrainingTest.java | 13 +- .../test/java/org/nd4j/linalg/Nd4jTestsC.java | 2 +- .../linalg/api/indexing/IndexingTestsC.java | 2 +- 188 files changed, 2558 insertions(+), 1531 deletions(-) create mode 100644 deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/BaseDL4JTest.java create mode 100644 deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/BaseDL4JTest.java create mode 100644 deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/BaseDL4JTest.java create mode 100644 deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/BaseDL4JTest.java create mode 100644 deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/BaseDL4JTest.java create mode 100644 deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/BaseDL4JTest.java delete mode 100644 deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/learner/elements/BatchSequenceTest.java create mode 100644 deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/BaseDL4JTest.java create mode 100644 deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/BaseDL4JTest.java create mode 100644 deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/BaseDL4JTest.java diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/AttentionLayerTest.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/AttentionLayerTest.java index 79b06535d..e3380337b 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/AttentionLayerTest.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/AttentionLayerTest.java @@ -17,12 +17,14 @@ package org.deeplearning4j.gradientcheck; import org.deeplearning4j.BaseDL4JTest; +import org.deeplearning4j.TestUtils; import org.deeplearning4j.nn.conf.ComputationGraphConfiguration; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.conf.NeuralNetConfiguration; import org.deeplearning4j.nn.conf.graph.AttentionVertex; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.*; +import org.deeplearning4j.nn.conf.layers.recurrent.SimpleRnn; import org.deeplearning4j.nn.graph.ComputationGraph; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; import org.deeplearning4j.nn.weights.WeightInit; @@ -44,7 +46,7 @@ public class AttentionLayerTest extends BaseDL4JTest { @Rule public ExpectedException exceptionRule = ExpectedException.none(); - private static final boolean PRINT_RESULTS = false; + private static final boolean PRINT_RESULTS = true; private static final boolean RETURN_ON_FIRST_FAILURE = false; private static final double DEFAULT_EPS = 1e-6; private static final double DEFAULT_MAX_REL_ERROR = 1e-3; @@ -53,19 +55,15 @@ public class AttentionLayerTest extends BaseDL4JTest { @Test public void testSelfAttentionLayer() { int nIn = 3; - int nOut = 5; + int nOut = 2; int tsLength = 4; - int layerSize = 8; + int layerSize = 4; - Random r = new Random(12345); - for (int mb : new int[]{1, 2, 3}) { + for (int mb : new int[]{1, 3}) { for (boolean inputMask : new boolean[]{false, true}) { for (boolean projectInput : new boolean[]{false, true}) { - INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); - INDArray labels = Nd4j.create(mb, nOut); - for (int i = 0; i < mb; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + INDArray in = Nd4j.rand(DataType.DOUBLE, new int[]{mb, nIn, tsLength}); + INDArray labels = TestUtils.randomOneHot(mb, nOut); String maskType = (inputMask ? "inputMask" : "none"); INDArray inMask = null; @@ -94,7 +92,7 @@ public class AttentionLayerTest extends BaseDL4JTest { .list() .layer(new LSTM.Builder().nOut(layerSize).build()) .layer( projectInput ? - new SelfAttentionLayer.Builder().nOut(8).nHeads(2).projectInput(true).build() + new SelfAttentionLayer.Builder().nOut(4).nHeads(2).projectInput(true).build() : new SelfAttentionLayer.Builder().nHeads(1).projectInput(false).build() ) .layer(new GlobalPoolingLayer.Builder().poolingType(PoolingType.MAX).build()) @@ -107,7 +105,7 @@ public class AttentionLayerTest extends BaseDL4JTest { net.init(); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null, true, 100); assertTrue(name, gradOK); } } @@ -117,20 +115,16 @@ public class AttentionLayerTest extends BaseDL4JTest { @Test public void testLearnedSelfAttentionLayer() { int nIn = 3; - int nOut = 5; + int nOut = 2; int tsLength = 4; - int layerSize = 8; - int numQueries = 6; + int layerSize = 4; + int numQueries = 3; - Random r = new Random(12345); for (boolean inputMask : new boolean[]{false, true}) { - for (int mb : new int[]{3, 2, 1}) { + for (int mb : new int[]{3, 1}) { for (boolean projectInput : new boolean[]{false, true}) { - INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); - INDArray labels = Nd4j.create(mb, nOut); - for (int i = 0; i < mb; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + INDArray in = Nd4j.rand(DataType.DOUBLE, new int[]{mb, nIn, tsLength}); + INDArray labels = TestUtils.randomOneHot(mb, nOut); String maskType = (inputMask ? "inputMask" : "none"); INDArray inMask = null; @@ -159,7 +153,7 @@ public class AttentionLayerTest extends BaseDL4JTest { .list() .layer(new LSTM.Builder().nOut(layerSize).build()) .layer( projectInput ? - new LearnedSelfAttentionLayer.Builder().nOut(8).nHeads(2).nQueries(numQueries).projectInput(true).build() + new LearnedSelfAttentionLayer.Builder().nOut(4).nHeads(2).nQueries(numQueries).projectInput(true).build() : new LearnedSelfAttentionLayer.Builder().nHeads(1).nQueries(numQueries).projectInput(false).build() ) .layer(new GlobalPoolingLayer.Builder().poolingType(PoolingType.MAX).build()) @@ -172,7 +166,7 @@ public class AttentionLayerTest extends BaseDL4JTest { net.init(); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null, true, 100); assertTrue(name, gradOK); } } @@ -182,10 +176,10 @@ public class AttentionLayerTest extends BaseDL4JTest { @Test public void testLearnedSelfAttentionLayer_differentMiniBatchSizes() { int nIn = 3; - int nOut = 5; + int nOut = 2; int tsLength = 4; - int layerSize = 8; - int numQueries = 6; + int layerSize = 4; + int numQueries = 3; Random r = new Random(12345); for (boolean inputMask : new boolean[]{false, true}) { @@ -199,7 +193,7 @@ public class AttentionLayerTest extends BaseDL4JTest { .list() .layer(new LSTM.Builder().nOut(layerSize).build()) .layer( projectInput ? - new LearnedSelfAttentionLayer.Builder().nOut(8).nHeads(2).nQueries(numQueries).projectInput(true).build() + new LearnedSelfAttentionLayer.Builder().nOut(4).nHeads(2).nQueries(numQueries).projectInput(true).build() : new LearnedSelfAttentionLayer.Builder().nHeads(1).nQueries(numQueries).projectInput(false).build() ) .layer(new GlobalPoolingLayer.Builder().poolingType(PoolingType.MAX).build()) @@ -210,17 +204,14 @@ public class AttentionLayerTest extends BaseDL4JTest { MultiLayerNetwork net = new MultiLayerNetwork(conf); net.init(); - for (int mb : new int[]{3, 2, 1}) { - INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); - INDArray labels = Nd4j.create(mb, nOut); - for (int i = 0; i < mb; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + for (int mb : new int[]{3, 1}) { + INDArray in = Nd4j.rand(DataType.DOUBLE, new int[]{mb, nIn, tsLength}); + INDArray labels = TestUtils.randomOneHot(mb, nOut); String maskType = (inputMask ? "inputMask" : "none"); INDArray inMask = null; if (inputMask) { - inMask = Nd4j.ones(mb, tsLength); + inMask = Nd4j.ones(DataType.INT, mb, tsLength); for (int i = 0; i < mb; i++) { int firstMaskedStep = tsLength - 1 - i; if (firstMaskedStep == 0) { @@ -236,7 +227,7 @@ public class AttentionLayerTest extends BaseDL4JTest { System.out.println("Starting test: " + name); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null, true, 100); assertTrue(name, gradOK); } } @@ -282,20 +273,15 @@ public class AttentionLayerTest extends BaseDL4JTest { @Test public void testRecurrentAttentionLayer() { - int nIn = 9; - int nOut = 5; - int tsLength = 4; - int layerSize = 8; + int nIn = 4; + int nOut = 2; + int tsLength = 3; + int layerSize = 3; - - Random r = new Random(12345); - for (int mb : new int[]{3, 2, 1}) { + for (int mb : new int[]{3, 1}) { for (boolean inputMask : new boolean[]{true, false}) { - INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); - INDArray labels = Nd4j.create(mb, nOut); - for (int i = 0; i < mb; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + INDArray in = Nd4j.rand(DataType.DOUBLE, new int[]{mb, nIn, tsLength}); + INDArray labels = TestUtils.randomOneHot(mb, nOut); String maskType = (inputMask ? "inputMask" : "none"); INDArray inMask = null; @@ -335,8 +321,7 @@ public class AttentionLayerTest extends BaseDL4JTest { //System.out.println("Original"); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null, false, -1, null - ); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null, true, 100, null); assertTrue(name, gradOK); } } @@ -345,19 +330,16 @@ public class AttentionLayerTest extends BaseDL4JTest { @Test public void testAttentionVertex() { int nIn = 3; - int nOut = 5; - int tsLength = 4; - int layerSize = 8; + int nOut = 2; + int tsLength = 3; + int layerSize = 3; Random r = new Random(12345); for (boolean inputMask : new boolean[]{false, true}) { - for (int mb : new int[]{3, 2, 1}) { + for (int mb : new int[]{3, 1}) { for (boolean projectInput : new boolean[]{false, true}) { - INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); - INDArray labels = Nd4j.create(mb, nOut); - for (int i = 0; i < mb; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + INDArray in = Nd4j.rand(DataType.DOUBLE, new int[]{mb, nIn, tsLength}); + INDArray labels = TestUtils.randomOneHot(mb, nOut); String maskType = (inputMask ? "inputMask" : "none"); INDArray inMask = null; @@ -385,13 +367,13 @@ public class AttentionLayerTest extends BaseDL4JTest { .weightInit(WeightInit.XAVIER) .graphBuilder() .addInputs("input") - .addLayer("lstmKeys", new LSTM.Builder().nOut(layerSize).build(), "input") - .addLayer("lstmQueries", new LSTM.Builder().nOut(layerSize).build(), "input") - .addLayer("lstmValues", new LSTM.Builder().nOut(layerSize).build(), "input") + .addLayer("rnnKeys", new SimpleRnn.Builder().nOut(layerSize).build(), "input") + .addLayer("rnnQueries", new SimpleRnn.Builder().nOut(layerSize).build(), "input") + .addLayer("rnnValues", new SimpleRnn.Builder().nOut(layerSize).build(), "input") .addVertex("attention", projectInput ? - new AttentionVertex.Builder().nOut(8).nHeads(2).projectInput(true).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build() - : new AttentionVertex.Builder().nOut(8).nHeads(1).projectInput(false).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build(), "lstmQueries", "lstmKeys", "lstmValues") + new AttentionVertex.Builder().nOut(4).nHeads(2).projectInput(true).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build() + : new AttentionVertex.Builder().nOut(3).nHeads(1).projectInput(false).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build(), "rnnQueries", "rnnKeys", "rnnValues") .addLayer("pooling", new GlobalPoolingLayer.Builder().poolingType(PoolingType.MAX).build(), "attention") .addLayer("output", new OutputLayer.Builder().nOut(nOut).activation(Activation.SOFTMAX).lossFunction(LossFunctions.LossFunction.MCXENT).build(), "pooling") .setOutputs("output") @@ -412,19 +394,16 @@ public class AttentionLayerTest extends BaseDL4JTest { @Test public void testAttentionVertexSameInput() { int nIn = 3; - int nOut = 5; + int nOut = 2; int tsLength = 4; - int layerSize = 8; + int layerSize = 4; Random r = new Random(12345); for (boolean inputMask : new boolean[]{false, true}) { - for (int mb : new int[]{3, 2, 1}) { + for (int mb : new int[]{3, 1}) { for (boolean projectInput : new boolean[]{false, true}) { INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); - INDArray labels = Nd4j.create(mb, nOut); - for (int i = 0; i < mb; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + INDArray labels = TestUtils.randomOneHot(mb, nOut); String maskType = (inputMask ? "inputMask" : "none"); INDArray inMask = null; @@ -452,11 +431,11 @@ public class AttentionLayerTest extends BaseDL4JTest { .weightInit(WeightInit.XAVIER) .graphBuilder() .addInputs("input") - .addLayer("lstm", new LSTM.Builder().nOut(layerSize).build(), "input") + .addLayer("rnn", new SimpleRnn.Builder().activation(Activation.TANH).nOut(layerSize).build(), "input") .addVertex("attention", projectInput ? - new AttentionVertex.Builder().nOut(8).nHeads(2).projectInput(true).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build() - : new AttentionVertex.Builder().nOut(8).nHeads(1).projectInput(false).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build(), "lstm", "lstm", "lstm") + new AttentionVertex.Builder().nOut(4).nHeads(2).projectInput(true).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build() + : new AttentionVertex.Builder().nOut(4).nHeads(1).projectInput(false).nInQueries(layerSize).nInKeys(layerSize).nInValues(layerSize).build(), "rnn", "rnn", "rnn") .addLayer("pooling", new GlobalPoolingLayer.Builder().poolingType(PoolingType.MAX).build(), "attention") .addLayer("output", new OutputLayer.Builder().nOut(nOut).activation(Activation.SOFTMAX).lossFunction(LossFunctions.LossFunction.MCXENT).build(), "pooling") .setOutputs("output") @@ -467,7 +446,8 @@ public class AttentionLayerTest extends BaseDL4JTest { net.init(); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, new INDArray[]{in}, new INDArray[]{labels}, inMask != null ? new INDArray[]{inMask} : null, null); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, new INDArray[]{in}, + new INDArray[]{labels}, inMask != null ? new INDArray[]{inMask} : null, null); assertTrue(name, gradOK); } } diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/BNGradientCheckTest.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/BNGradientCheckTest.java index 11b3ee0d0..5bafc81b0 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/BNGradientCheckTest.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/BNGradientCheckTest.java @@ -76,7 +76,7 @@ public class BNGradientCheckTest extends BaseDL4JTest { INDArray input = ds.getFeatures(); INDArray labels = ds.getLabels(); - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder().updater(new NoOp()) @@ -117,14 +117,14 @@ public class BNGradientCheckTest extends BaseDL4JTest { int depth = 1; int hw = 4; int nOut = 4; - INDArray input = Nd4j.rand(new int[] {minibatch, depth, hw, hw}); + INDArray input = Nd4j.rand(new int[]{minibatch, depth, hw, hw}); INDArray labels = Nd4j.zeros(minibatch, nOut); Random r = new Random(12345); for (int i = 0; i < minibatch; i++) { labels.putScalar(i, r.nextInt(nOut), 1.0); } - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder() .dataType(DataType.DOUBLE) .updater(new NoOp()).seed(12345L) @@ -158,20 +158,14 @@ public class BNGradientCheckTest extends BaseDL4JTest { } @Test - public void testGradientBNWithCNNandSubsamplingcCnfigurableProfiler() { - - Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder() - .notOptimalArguments(true) - .notOptimalTAD(true) - .checkForINF(true) - .checkForNAN(true) - .checkElapsedTime(true) - .stackTrace(true) - .checkWorkspaces(true) - .build()); - + public void testGradientBNWithCNNandSubsampling() { + //Parameterized test, testing combinations of: + // (a) activation function + // (b) Whether to test at random initialization, or after some learning (i.e., 'characteristic mode of operation') + // (c) Loss function (with specified output activations) + // (d) l1 and l2 values Activation[] activFns = {Activation.SIGMOID, Activation.TANH, Activation.IDENTITY}; - boolean[] characteristic = {false, true}; //If true: run some backprop steps first + boolean[] characteristic = {true}; //If true: run some backprop steps first LossFunctions.LossFunction[] lossFunctions = {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; @@ -181,24 +175,24 @@ public class BNGradientCheckTest extends BaseDL4JTest { double[] l1vals = {0.0, 0.0, 0.2}; //i.e., use l2vals[j] with l1vals[j] Nd4j.getRandom().setSeed(12345); - int minibatch = 10; + int minibatch = 4; int depth = 2; int hw = 5; - int nOut = 3; - INDArray input = Nd4j.rand(new int[] {minibatch, depth, hw, hw}).muli(5).subi(2.5); - INDArray labels = Nd4j.zeros(minibatch, nOut); - Random r = new Random(12345); - for (int i = 0; i < minibatch; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } + int nOut = 2; + INDArray input = Nd4j.rand(new int[]{minibatch, depth, hw, hw}).muli(5).subi(2.5); + INDArray labels = TestUtils.randomOneHot(minibatch, nOut); DataSet ds = new DataSet(input, labels); - - for(boolean useLogStd : new boolean[]{true, false}) { + Random rng = new Random(12345); + for (boolean useLogStd : new boolean[]{true, false}) { for (Activation afn : activFns) { for (boolean doLearningFirst : characteristic) { for (int i = 0; i < lossFunctions.length; i++) { for (int j = 0; j < l2vals.length; j++) { + //Skip 2 of every 3 tests: from 24 cases to 8, still with decent coverage + if (rng.nextInt(3) != 0) + continue; + LossFunctions.LossFunction lf = lossFunctions[i]; Activation outputActivation = outputActivations[i]; @@ -260,7 +254,7 @@ public class BNGradientCheckTest extends BaseDL4JTest { //However, numerical gradient will be 0 as forward pass doesn't depend on this "parameter" Set excludeParams = new HashSet<>(Arrays.asList("1_mean", "1_var", "3_mean", "3_var", "1_log10stdev", "3_log10stdev")); boolean gradOK = GradientCheckUtil.checkGradients(mln, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels, excludeParams); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels, null, null, true, 25, excludeParams); //Most params are in output layer, only these should be skipped with this threshold assertTrue(gradOK); TestUtils.testModelSerialization(mln); @@ -269,117 +263,6 @@ public class BNGradientCheckTest extends BaseDL4JTest { } } } - OpProfiler.getInstance().printOutDashboard(); - } - - @Test - public void testGradientBNWithCNNandSubsampling() { - Nd4j.getExecutioner().setProfilingMode(OpExecutioner.ProfilingMode.NAN_PANIC); - //Parameterized test, testing combinations of: - // (a) activation function - // (b) Whether to test at random initialization, or after some learning (i.e., 'characteristic mode of operation') - // (c) Loss function (with specified output activations) - // (d) l1 and l2 values - Activation[] activFns = {Activation.SIGMOID, Activation.TANH, Activation.IDENTITY}; - boolean[] characteristic = {false, true}; //If true: run some backprop steps first - - LossFunctions.LossFunction[] lossFunctions = - {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; - Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH}; //i.e., lossFunctions[i] used with outputActivations[i] here - - double[] l2vals = {0.0, 0.1, 0.1}; - double[] l1vals = {0.0, 0.0, 0.2}; //i.e., use l2vals[j] with l1vals[j] - - Nd4j.getRandom().setSeed(12345); - int minibatch = 10; - int depth = 2; - int hw = 5; - int nOut = 3; - INDArray input = Nd4j.rand(new int[] {minibatch, depth, hw, hw}).muli(5).subi(2.5); - INDArray labels = Nd4j.zeros(minibatch, nOut); - Random r = new Random(12345); - for (int i = 0; i < minibatch; i++) { - labels.putScalar(i, r.nextInt(nOut), 1.0); - } - - DataSet ds = new DataSet(input, labels); - - for(boolean useLogStd : new boolean[]{true, false}) { - for (Activation afn : activFns) { - for (boolean doLearningFirst : characteristic) { - for (int i = 0; i < lossFunctions.length; i++) { - for (int j = 0; j < l2vals.length; j++) { - LossFunctions.LossFunction lf = lossFunctions[i]; - Activation outputActivation = outputActivations[i]; - - MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder().seed(12345) - .dataType(DataType.DOUBLE) - .l2(l2vals[j]) - .optimizationAlgo(OptimizationAlgorithm.LINE_GRADIENT_DESCENT) - .updater(new NoOp()) - .dist(new UniformDistribution(-2, 2)).seed(12345L).list() - .layer(0, new ConvolutionLayer.Builder(2, 2).stride(1, 1).nOut(3) - .activation(afn).build()) - .layer(1, new BatchNormalization.Builder().useLogStd(useLogStd).build()) - .layer(2, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) - .kernelSize(2, 2).stride(1, 1).build()) - .layer(3, new BatchNormalization()) - .layer(4, new ActivationLayer.Builder().activation(afn).build()) - .layer(5, new OutputLayer.Builder(lf).activation(outputActivation).nOut(nOut) - .build()) - .setInputType(InputType.convolutional(hw, hw, depth)); - - MultiLayerConfiguration conf = builder.build(); - - MultiLayerNetwork mln = new MultiLayerNetwork(conf); - mln.init(); - String name = new Object() { - }.getClass().getEnclosingMethod().getName(); - - System.out.println("Num params: " + mln.numParams()); - - if (doLearningFirst) { - //Run a number of iterations of learning - mln.setInput(ds.getFeatures()); - mln.setLabels(ds.getLabels()); - mln.computeGradientAndScore(); - double scoreBefore = mln.score(); - for (int k = 0; k < 20; k++) - mln.fit(ds); - mln.computeGradientAndScore(); - double scoreAfter = mln.score(); - //Can't test in 'characteristic mode of operation' if not learning - String msg = name - + " - score did not (sufficiently) decrease during learning - activationFn=" - + afn + ", lossFn=" + lf + ", outputActivation=" + outputActivation - + ", doLearningFirst= " + doLearningFirst + " (before=" + scoreBefore - + ", scoreAfter=" + scoreAfter + ")"; - assertTrue(msg, scoreAfter < 0.9 * scoreBefore); - } - - if (PRINT_RESULTS) { - System.out.println(name + " - activationFn=" + afn + ", lossFn=" + lf - + ", outputActivation=" + outputActivation + ", doLearningFirst=" - + doLearningFirst + ", l1=" + l1vals[j] + ", l2=" + l2vals[j]); - for (int k = 0; k < mln.getnLayers(); k++) - System.out.println("Layer " + k + " # params: " + mln.getLayer(k).numParams()); - } - - //Mean and variance vars are not gradient checkable; mean/variance "gradient" is used to implement running mean/variance calc - //i.e., runningMean = decay * runningMean + (1-decay) * batchMean - //However, numerical gradient will be 0 as forward pass doesn't depend on this "parameter" - Set excludeParams = new HashSet<>(Arrays.asList("1_mean", "1_var", "3_mean", "3_var", "1_log10stdev", "3_log10stdev")); - boolean gradOK = GradientCheckUtil.checkGradients(mln, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels, excludeParams); - - assertTrue(gradOK); - TestUtils.testModelSerialization(mln); - } - } - } - } - } - OpProfiler.getInstance().printOutDashboard(); } @@ -390,21 +273,21 @@ public class BNGradientCheckTest extends BaseDL4JTest { // (b) Whether to test at random initialization, or after some learning (i.e., 'characteristic mode of operation') // (c) Loss function (with specified output activations) // (d) l1 and l2 values - Activation[] activFns = {Activation.SIGMOID, Activation.TANH, Activation.IDENTITY}; - boolean[] characteristic = {false, true}; //If true: run some backprop steps first + Activation[] activFns = {Activation.TANH, Activation.IDENTITY}; + boolean[] characteristic = {true}; //If true: run some backprop steps first LossFunctions.LossFunction[] lossFunctions = - {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; + {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH}; //i.e., lossFunctions[i] used with outputActivations[i] here - double[] l2vals = {0.0, 0.1, 0.1}; - double[] l1vals = {0.0, 0.0, 0.2}; //i.e., use l2vals[j] with l1vals[j] + double[] l2vals = {0.0, 0.1}; + double[] l1vals = {0.0, 0.2}; //i.e., use l2vals[j] with l1vals[j] Nd4j.getRandom().setSeed(12345); int minibatch = 10; int nIn = 5; int nOut = 3; - INDArray input = Nd4j.rand(new int[] {minibatch, nIn}); + INDArray input = Nd4j.rand(new int[]{minibatch, nIn}); INDArray labels = Nd4j.zeros(minibatch, nOut); Random r = new Random(12345); for (int i = 0; i < minibatch; i++) { @@ -413,7 +296,7 @@ public class BNGradientCheckTest extends BaseDL4JTest { DataSet ds = new DataSet(input, labels); - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { for (Activation afn : activFns) { for (boolean doLearningFirst : characteristic) { for (int i = 0; i < lossFunctions.length; i++) { @@ -498,7 +381,7 @@ public class BNGradientCheckTest extends BaseDL4JTest { INDArray input = ds.getFeatures(); INDArray labels = ds.getLabels(); - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder().updater(new NoOp()) .dataType(DataType.DOUBLE) .seed(12345L) @@ -537,14 +420,14 @@ public class BNGradientCheckTest extends BaseDL4JTest { int depth = 1; int hw = 4; int nOut = 4; - INDArray input = Nd4j.rand(new int[] {minibatch, depth, hw, hw}); + INDArray input = Nd4j.rand(new int[]{minibatch, depth, hw, hw}); INDArray labels = Nd4j.zeros(minibatch, nOut); Random r = new Random(12345); for (int i = 0; i < minibatch; i++) { labels.putScalar(i, r.nextInt(nOut), 1.0); } - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder().updater(new NoOp()) .dataType(DataType.DOUBLE) .seed(12345L) @@ -588,7 +471,7 @@ public class BNGradientCheckTest extends BaseDL4JTest { int minibatchSize = 3; - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder().seed(seed).updater(new NoOp()) .dataType(DataType.DOUBLE) @@ -630,22 +513,21 @@ public class BNGradientCheckTest extends BaseDL4JTest { // (b) Whether to test at random initialization, or after some learning (i.e., 'characteristic mode of operation') // (c) Loss function (with specified output activations) // (d) l1 and l2 values - Activation[] activFns = {Activation.SIGMOID, Activation.TANH, Activation.IDENTITY}; - boolean[] characteristic = {false, true}; //If true: run some backprop steps first + Activation[] activFns = {Activation.TANH, Activation.IDENTITY}; + boolean doLearningFirst = true; - LossFunctions.LossFunction[] lossFunctions = - {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; - Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH}; //i.e., lossFunctions[i] used with outputActivations[i] here + LossFunctions.LossFunction[] lossFunctions = {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD}; + Activation[] outputActivations = {Activation.SOFTMAX}; //i.e., lossFunctions[i] used with outputActivations[i] here - double[] l2vals = {0.0, 0.1, 0.1}; - double[] l1vals = {0.0, 0.0, 0.2}; //i.e., use l2vals[j] with l1vals[j] + double[] l2vals = {0.0, 0.1}; + double[] l1vals = {0.0, 0.2}; //i.e., use l2vals[j] with l1vals[j] Nd4j.getRandom().setSeed(12345); int minibatch = 10; int depth = 2; int hw = 5; int nOut = 3; - INDArray input = Nd4j.rand(new int[] {minibatch, depth, hw, hw}); + INDArray input = Nd4j.rand(new int[]{minibatch, depth, hw, hw}); INDArray labels = Nd4j.zeros(minibatch, nOut); Random r = new Random(12345); for (int i = 0; i < minibatch; i++) { @@ -654,75 +536,73 @@ public class BNGradientCheckTest extends BaseDL4JTest { DataSet ds = new DataSet(input, labels); - for(boolean useLogStd : new boolean[]{true, false}) { + for (boolean useLogStd : new boolean[]{true, false}) { for (Activation afn : activFns) { - for (boolean doLearningFirst : characteristic) { - for (int i = 0; i < lossFunctions.length; i++) { - for (int j = 0; j < l2vals.length; j++) { - LossFunctions.LossFunction lf = lossFunctions[i]; - Activation outputActivation = outputActivations[i]; + for (int i = 0; i < lossFunctions.length; i++) { + for (int j = 0; j < l2vals.length; j++) { + LossFunctions.LossFunction lf = lossFunctions[i]; + Activation outputActivation = outputActivations[i]; - ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder().seed(12345) - .dataType(DataType.DOUBLE) - .optimizationAlgo(OptimizationAlgorithm.LINE_GRADIENT_DESCENT) - .updater(new NoOp()) - .dist(new UniformDistribution(-2, 2)).seed(12345L).graphBuilder() - .addInputs("in") - .addLayer("0", new ConvolutionLayer.Builder(2, 2).stride(1, 1).nOut(3) - .activation(afn).build(), "in") - .addLayer("1", new BatchNormalization.Builder().useLogStd(useLogStd).build(), "0") - .addLayer("2", new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) - .kernelSize(2, 2).stride(1, 1).build(), "1") - .addLayer("3", new BatchNormalization.Builder().useLogStd(useLogStd).build(), "2") - .addLayer("4", new ActivationLayer.Builder().activation(afn).build(), "3") - .addLayer("5", new OutputLayer.Builder(lf).activation(outputActivation) - .nOut(nOut).build(), "4") - .setOutputs("5").setInputTypes(InputType.convolutional(hw, hw, depth)) - .build(); + ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder().seed(12345) + .dataType(DataType.DOUBLE) + .optimizationAlgo(OptimizationAlgorithm.LINE_GRADIENT_DESCENT) + .updater(new NoOp()) + .dist(new UniformDistribution(-2, 2)).seed(12345L).graphBuilder() + .addInputs("in") + .addLayer("0", new ConvolutionLayer.Builder(2, 2).stride(1, 1).nOut(3) + .activation(afn).build(), "in") + .addLayer("1", new BatchNormalization.Builder().useLogStd(useLogStd).build(), "0") + .addLayer("2", new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) + .kernelSize(2, 2).stride(1, 1).build(), "1") + .addLayer("3", new BatchNormalization.Builder().useLogStd(useLogStd).build(), "2") + .addLayer("4", new ActivationLayer.Builder().activation(afn).build(), "3") + .addLayer("5", new OutputLayer.Builder(lf).activation(outputActivation) + .nOut(nOut).build(), "4") + .setOutputs("5").setInputTypes(InputType.convolutional(hw, hw, depth)) + .build(); - ComputationGraph net = new ComputationGraph(conf); - net.init(); - String name = new Object() { - }.getClass().getEnclosingMethod().getName(); + ComputationGraph net = new ComputationGraph(conf); + net.init(); + String name = new Object() { + }.getClass().getEnclosingMethod().getName(); - if (doLearningFirst) { - //Run a number of iterations of learning - net.setInput(0, ds.getFeatures()); - net.setLabels(ds.getLabels()); - net.computeGradientAndScore(); - double scoreBefore = net.score(); - for (int k = 0; k < 20; k++) - net.fit(ds); - net.computeGradientAndScore(); - double scoreAfter = net.score(); - //Can't test in 'characteristic mode of operation' if not learning - String msg = name - + " - score did not (sufficiently) decrease during learning - activationFn=" - + afn + ", lossFn=" + lf + ", outputActivation=" + outputActivation - + ", doLearningFirst= " + doLearningFirst + " (before=" + scoreBefore - + ", scoreAfter=" + scoreAfter + ")"; - assertTrue(msg, scoreAfter < 0.9 * scoreBefore); - } - - if (PRINT_RESULTS) { - System.out.println(name + " - activationFn=" + afn + ", lossFn=" + lf - + ", outputActivation=" + outputActivation + ", doLearningFirst=" - + doLearningFirst + ", l1=" + l1vals[j] + ", l2=" + l2vals[j]); - for (int k = 0; k < net.getNumLayers(); k++) - System.out.println("Layer " + k + " # params: " + net.getLayer(k).numParams()); - } - - //Mean and variance vars are not gradient checkable; mean/variance "gradient" is used to implement running mean/variance calc - //i.e., runningMean = decay * runningMean + (1-decay) * batchMean - //However, numerical gradient will be 0 as forward pass doesn't depend on this "parameter" - Set excludeParams = new HashSet<>(Arrays.asList("1_mean", "1_var", "3_mean", "3_var", "1_log10stdev", "3_log10stdev")); - boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, - new INDArray[]{input}, new INDArray[]{labels}, null, null, excludeParams); - - assertTrue(gradOK); - TestUtils.testModelSerialization(net); + if (doLearningFirst) { + //Run a number of iterations of learning + net.setInput(0, ds.getFeatures()); + net.setLabels(ds.getLabels()); + net.computeGradientAndScore(); + double scoreBefore = net.score(); + for (int k = 0; k < 20; k++) + net.fit(ds); + net.computeGradientAndScore(); + double scoreAfter = net.score(); + //Can't test in 'characteristic mode of operation' if not learning + String msg = name + + " - score did not (sufficiently) decrease during learning - activationFn=" + + afn + ", lossFn=" + lf + ", outputActivation=" + outputActivation + + ", doLearningFirst= " + doLearningFirst + " (before=" + scoreBefore + + ", scoreAfter=" + scoreAfter + ")"; + assertTrue(msg, scoreAfter < 0.9 * scoreBefore); } + + if (PRINT_RESULTS) { + System.out.println(name + " - activationFn=" + afn + ", lossFn=" + lf + + ", outputActivation=" + outputActivation + ", doLearningFirst=" + + doLearningFirst + ", l1=" + l1vals[j] + ", l2=" + l2vals[j]); + for (int k = 0; k < net.getNumLayers(); k++) + System.out.println("Layer " + k + " # params: " + net.getLayer(k).numParams()); + } + + //Mean and variance vars are not gradient checkable; mean/variance "gradient" is used to implement running mean/variance calc + //i.e., runningMean = decay * runningMean + (1-decay) * batchMean + //However, numerical gradient will be 0 as forward pass doesn't depend on this "parameter" + Set excludeParams = new HashSet<>(Arrays.asList("1_mean", "1_var", "3_mean", "3_var", "1_log10stdev", "3_log10stdev")); + boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, + new INDArray[]{input}, new INDArray[]{labels}, null, null, excludeParams); + + assertTrue(gradOK); + TestUtils.testModelSerialization(net); } } } diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNN3DGradientCheckTest.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNN3DGradientCheckTest.java index f23e965a1..01fe1fe9b 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNN3DGradientCheckTest.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNN3DGradientCheckTest.java @@ -151,7 +151,7 @@ public class CNN3DGradientCheckTest extends BaseDL4JTest { boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, - RETURN_ON_FIRST_FAILURE, input, labels); + RETURN_ON_FIRST_FAILURE, input, labels, null, null, true, 128); assertTrue(msg, gradOK); @@ -255,7 +255,7 @@ public class CNN3DGradientCheckTest extends BaseDL4JTest { boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, - RETURN_ON_FIRST_FAILURE, input, labels); + RETURN_ON_FIRST_FAILURE, input, labels, null, null, true, 512); assertTrue(msg, gradOK); diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java index c13923c3f..89293829a 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java @@ -142,12 +142,6 @@ public class CNNGradientCheckTest extends BaseDL4JTest { // (a) activation function // (b) Whether to test at random initialization, or after some learning (i.e., 'characteristic mode of operation') // (c) Loss function (with specified output activations) - Activation[] activFns = {Activation.SIGMOID, Activation.TANH}; - boolean[] characteristic = {false, true}; //If true: run some backprop steps first - - LossFunctions.LossFunction[] lossFunctions = - {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; - Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH}; //i.e., lossFunctions[i] used with outputActivations[i] here DataSet ds = new IrisDataSetIterator(150, 150).next(); ds.normalizeZeroMeanZeroUnitVariance(); @@ -159,72 +153,74 @@ public class CNNGradientCheckTest extends BaseDL4JTest { double[] l1vals = {0.0, 0.0, 0.5, 0.0}; double[] biasL2 = {0.0, 0.0, 0.0, 0.2}; double[] biasL1 = {0.0, 0.0, 0.6, 0.0}; + Activation[] activFns = {Activation.SIGMOID, Activation.TANH, Activation.ELU, Activation.SOFTPLUS}; + boolean[] characteristic = {false, true, false, true}; //If true: run some backprop steps first - for (Activation afn : activFns) { - for (boolean doLearningFirst : characteristic) { - for (int i = 0; i < lossFunctions.length; i++) { - for (int k = 0; k < l2vals.length; k++) { - LossFunctions.LossFunction lf = lossFunctions[i]; - Activation outputActivation = outputActivations[i]; - double l2 = l2vals[k]; - double l1 = l1vals[k]; + LossFunctions.LossFunction[] lossFunctions = + {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE, LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; + Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH, Activation.SOFTMAX, Activation.IDENTITY}; //i.e., lossFunctions[i] used with outputActivations[i] here - MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder() - .dataType(DataType.DOUBLE) - .l2(l2).l1(l1).l2Bias(biasL2[k]).l1Bias(biasL1[k]) - .optimizationAlgo( - OptimizationAlgorithm.CONJUGATE_GRADIENT) - .seed(12345L).list() - .layer(0, new ConvolutionLayer.Builder(new int[]{1, 1}).nIn(1).nOut(6) - .weightInit(WeightInit.XAVIER).activation(afn) - .updater(new NoOp()).build()) - .layer(1, new OutputLayer.Builder(lf).activation(outputActivation).nOut(3) - .weightInit(WeightInit.XAVIER).updater(new NoOp()).build()) + for( int i=0; i 8x8x3 + .layer(new OutputLayer.Builder(LossFunctions.LossFunction.MCXENT) + .activation(Activation.SOFTMAX).nIn(8 * 8 * 3) + .nOut(4).build()) + .setInputType(InputType.convolutionalFlat(height, width, + inputDepth)) + .build(); - MultiLayerConfiguration conf = - new NeuralNetConfiguration.Builder() - .dataType(DataType.DOUBLE) - .updater(new NoOp()) - .dist(new NormalDistribution(0, 1)) - .list().layer(new ConvolutionLayer.Builder(kernel, - stride, padding).nIn(inputDepth) - .nOut(3).build())//output: (5-2+0)/1+1 = 4 - .layer(new Upsampling2D.Builder().size(size).build()) //output: 4*2 =8 -> 8x8x3 - .layer(new OutputLayer.Builder(LossFunctions.LossFunction.MCXENT) - .activation(Activation.SOFTMAX).nIn(8 * 8 * 3) - .nOut(4).build()) - .setInputType(InputType.convolutionalFlat(height, width, - inputDepth)) - .build(); + MultiLayerNetwork net = new MultiLayerNetwork(conf); + net.init(); - MultiLayerNetwork net = new MultiLayerNetwork(conf); - net.init(); + String msg = "Upsampling - minibatch=" + minibatchSize; - String msg = "PoolingType=" + poolingType + ", minibatch=" + minibatchSize + ", activationFn=" - + afn; - - if (PRINT_RESULTS) { - System.out.println(msg); - for (int j = 0; j < net.getnLayers(); j++) - System.out.println("Layer " + j + " # params: " + net.getLayer(j).numParams()); - } - - boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); - - assertTrue(msg, gradOK); - - TestUtils.testModelSerialization(net); - } + if (PRINT_RESULTS) { + System.out.println(msg); + for (int j = 0; j < net.getnLayers(); j++) + System.out.println("Layer " + j + " # params: " + net.getLayer(j).numParams()); } + + boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); + + assertTrue(msg, gradOK); + + TestUtils.testModelSerialization(net); } } @@ -695,60 +678,56 @@ public class CNNGradientCheckTest extends BaseDL4JTest { public void testCnnSamePaddingMode() { int nOut = 2; - int[] minibatchSizes = {1, 3}; + int[] minibatchSizes = {1, 3, 3, 2, 1, 2}; + int[] heights = new int[]{4, 5, 6, 5, 4, 4}; //Same padding mode: insensitive to exact input size... + int[] kernelSizes = new int[]{2, 3, 2, 3, 2, 3}; + int[] inputDepths = {1, 2, 4, 3, 2, 3}; + int width = 5; - int[] heights = new int[]{4, 5, 6}; //Same padding mode: insensitive to exact input size... - int[] kernelSizes = new int[]{2, 3}; - int[] inputDepths = {1, 2, 4}; Nd4j.getRandom().setSeed(12345); - for (int inputDepth : inputDepths) { - for (int minibatchSize : minibatchSizes) { - for (int height : heights) { - for (int k : kernelSizes) { + for( int i=0; i 0.0) - conf.l1(l1); - if (l2 > 0.0) - conf.l2(l2); - if (biasL2[k] > 0) - conf.l2Bias(biasL2[k]); - if (biasL1[k] > 0) - conf.l1Bias(biasL1[k]); + NeuralNetConfiguration.Builder conf = + new NeuralNetConfiguration.Builder(); + if (l1 > 0.0) + conf.l1(l1); + if (l2 > 0.0) + conf.l2(l2); + if (biasL2[k] > 0) + conf.l2Bias(biasL2[k]); + if (biasL1[k] > 0) + conf.l1Bias(biasL1[k]); - MultiLayerConfiguration mlc = conf.seed(12345L) - .dataType(DataType.DOUBLE) - .list().layer(0, - new GravesBidirectionalLSTM.Builder().nIn(nIn).nOut(layerSize) - - .dist(new NormalDistribution(0, 1)) - .activation(afn).updater( - Updater.NONE) - .build()) - .layer(1, new RnnOutputLayer.Builder(lf).activation(outputActivation).nIn(layerSize) - .nOut(nOut) - .dist(new NormalDistribution(0, 1)).updater(new NoOp()).build()) - .build(); + MultiLayerConfiguration mlc = conf.seed(12345L) + .dataType(DataType.DOUBLE) + .updater(new NoOp()) + .list().layer(0, + new GravesBidirectionalLSTM.Builder().nIn(nIn).nOut(layerSize) + .weightInit(new NormalDistribution(0, 1)) + .activation(afn) + .build()) + .layer(1, new RnnOutputLayer.Builder(lf).activation(outputActivation).nIn(layerSize) + .nOut(nOut) + .dist(new NormalDistribution(0, 1)).updater(new NoOp()).build()) + .build(); - MultiLayerNetwork mln = new MultiLayerNetwork(mlc); + MultiLayerNetwork mln = new MultiLayerNetwork(mlc); - mln.init(); + mln.init(); - if (PRINT_RESULTS) { - System.out.println("testGradientGravesBidirectionalLSTMFull() - activationFn=" + afn - + ", lossFn=" + lf + ", outputActivation=" + outputActivation + ", l2=" + l2 - + ", l1=" + l1); - for (int j = 0; j < mln.getnLayers(); j++) - System.out.println("Layer " + j + " # params: " + mln.getLayer(j).numParams()); - } - - boolean gradOK = GradientCheckUtil.checkGradients(mln, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); - - String msg = "testGradientGravesLSTMFull() - activationFn=" + afn + ", lossFn=" + lf - + ", outputActivation=" + outputActivation + ", l2=" + l2 + ", l1=" + l1; - assertTrue(msg, gradOK); - TestUtils.testModelSerialization(mln); + if (PRINT_RESULTS) { + System.out.println("testGradientGravesBidirectionalLSTMFull() - activationFn=" + afn + + ", lossFn=" + lf + ", outputActivation=" + outputActivation + ", l2=" + l2 + + ", l1=" + l1); + for (int j = 0; j < mln.getnLayers(); j++) + System.out.println("Layer " + j + " # params: " + mln.getLayer(j).numParams()); } + + boolean gradOK = GradientCheckUtil.checkGradients(mln, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); + + String msg = "testGradientGravesLSTMFull() - activationFn=" + afn + ", lossFn=" + lf + + ", outputActivation=" + outputActivation + ", l2=" + l2 + ", l1=" + l1; + assertTrue(msg, gradOK); + TestUtils.testModelSerialization(mln); } } } @@ -391,21 +362,14 @@ public class LSTMGradientCheckTests extends BaseDL4JTest { int[] timeSeriesLength = {1, 5, 1}; int[] miniBatchSize = {7, 1, 1}; - int nIn = 7; - int layerSize = 9; - int nOut = 4; + int nIn = 3; + int layerSize = 4; + int nOut = 2; for (int i = 0; i < timeSeriesLength.length; i++) { Random r = new Random(12345L); - INDArray input = Nd4j.zeros(miniBatchSize[i], nIn, timeSeriesLength[i]); - for (int m = 0; m < miniBatchSize[i]; m++) { - for (int j = 0; j < nIn; j++) { - for (int k = 0; k < timeSeriesLength[i]; k++) { - input.putScalar(new int[] {m, j, k}, r.nextDouble() - 0.5); - } - } - } + INDArray input = Nd4j.rand(DataType.DOUBLE, miniBatchSize[i], nIn, timeSeriesLength[i]).subi(0.5); INDArray labels = Nd4j.zeros(miniBatchSize[i], nOut, timeSeriesLength[i]); for (int m = 0; m < miniBatchSize[i]; m++) { @@ -431,7 +395,7 @@ public class LSTMGradientCheckTests extends BaseDL4JTest { mln.init(); boolean gradOK = GradientCheckUtil.checkGradients(mln, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels, null, null, true, 128); String msg = "testGradientGravesLSTMEdgeCases() - timeSeriesLength=" + timeSeriesLength[i] + ", miniBatchSize=" + miniBatchSize[i]; @@ -445,11 +409,11 @@ public class LSTMGradientCheckTests extends BaseDL4JTest { //Test gradients with CNN -> FF -> LSTM -> RnnOutputLayer //time series input/output (i.e., video classification or similar) - int nChannelsIn = 3; - int inputSize = 10 * 10 * nChannelsIn; //10px x 10px x 3 channels - int miniBatchSize = 4; - int timeSeriesLength = 10; - int nClasses = 3; + int nChannelsIn = 2; + int inputSize = 6 * 6 * nChannelsIn; //10px x 10px x 3 channels + int miniBatchSize = 2; + int timeSeriesLength = 4; + int nClasses = 2; //Generate Nd4j.getRandom().setSeed(12345); @@ -467,18 +431,18 @@ public class LSTMGradientCheckTests extends BaseDL4JTest { MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().updater(new NoOp()).seed(12345) .dataType(DataType.DOUBLE) .dist(new UniformDistribution(-2, 2)).list() - .layer(0, new ConvolutionLayer.Builder(5, 5).nIn(3).nOut(5).stride(1, 1) + .layer(0, new ConvolutionLayer.Builder(3, 3).nIn(2).nOut(3).stride(1, 1) .activation(Activation.TANH).build()) //Out: (10-5)/1+1 = 6 -> 6x6x5 .layer(1, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX).kernelSize(2, 2) .stride(1, 1).build()) //Out: (6-2)/1+1 = 5 -> 5x5x5 - .layer(2, new DenseLayer.Builder().nIn(5 * 5 * 5).nOut(4).activation(Activation.TANH).build()) + .layer(2, new DenseLayer.Builder().nIn(27).nOut(4).activation(Activation.TANH).build()) .layer(3, new GravesLSTM.Builder().nIn(4).nOut(3).activation(Activation.TANH).build()) .layer(4, new RnnOutputLayer.Builder().lossFunction(LossFunction.MCXENT).nIn(3).nOut(nClasses) .activation(Activation.SOFTMAX).build()) - .setInputType(InputType.convolutional(10, 10, 3)).build(); + .setInputType(InputType.convolutional(6, 6, 2)).build(); //Here: ConvolutionLayerSetup in config builder doesn't know that we are expecting time series input, not standard FF input -> override it here - conf.getInputPreProcessors().put(0, new RnnToCnnPreProcessor(10, 10, 3)); + conf.getInputPreProcessors().put(0, new RnnToCnnPreProcessor(6, 6, 2)); MultiLayerNetwork mln = new MultiLayerNetwork(conf); mln.init(); @@ -489,7 +453,7 @@ public class LSTMGradientCheckTests extends BaseDL4JTest { } boolean gradOK = GradientCheckUtil.checkGradients(mln, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels, null, null, true, 32); assertTrue(gradOK); TestUtils.testModelSerialization(mln); } diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/RnnGradientChecks.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/RnnGradientChecks.java index 9fcc0fe56..5dbf02fee 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/RnnGradientChecks.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/RnnGradientChecks.java @@ -68,6 +68,8 @@ public class RnnGradientChecks extends BaseDL4JTest { for (boolean inputMask : new boolean[]{false, true}) { for (boolean simple : new boolean[]{false, true}) { for(boolean hasLayerNorm: new boolean[]{true, false}) { + if(!simple && hasLayerNorm) + continue; INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); INDArray labels = Nd4j.create(mb, nOut, tsLength); @@ -93,6 +95,11 @@ public class RnnGradientChecks extends BaseDL4JTest { } for (Bidirectional.Mode m : modes) { + //Skip 3 of 4 test cases: from 64 to 16, which still should be good coverage + //Note RNG seed - deterministic run-to-run + if(r.nextInt(4) != 0) + continue; + String name = "mb=" + mb + ", maskType=" + maskType + ", mode=" + m + ", hasLayerNorm=" + hasLayerNorm + ", rnnType=" + (simple ? "SimpleRnn" : "LSTM"); @@ -144,6 +151,9 @@ public class RnnGradientChecks extends BaseDL4JTest { for (boolean inputMask : new boolean[]{false, true}) { for (boolean hasLayerNorm : new boolean[]{true, false}) { for (int l = 0; l < l1s.length; l++) { + //Only run 1 of 5 (on average - note RNG seed for deterministic testing) - 25 of 128 test cases (to minimize test time) + if(r.nextInt(5) != 0) + continue; INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); INDArray labels = Nd4j.create(mb, nOut, tsLength); @@ -217,6 +227,8 @@ public class RnnGradientChecks extends BaseDL4JTest { for (boolean inputMask : new boolean[]{false, true}) { for (boolean simple : new boolean[]{false, true}) { for (boolean hasLayerNorm : new boolean[]{true, false}) { + if(!simple && hasLayerNorm) + continue; INDArray in = Nd4j.rand(new int[]{mb, nIn, tsLength}); @@ -265,7 +277,7 @@ public class RnnGradientChecks extends BaseDL4JTest { net.init(); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, in, labels, inMask, null, true, 16); assertTrue(name, gradOK); TestUtils.testModelSerialization(net); } diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/UtilLayerGradientChecks.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/UtilLayerGradientChecks.java index fc62be1fa..8349b732d 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/UtilLayerGradientChecks.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/gradientcheck/UtilLayerGradientChecks.java @@ -26,6 +26,7 @@ import org.deeplearning4j.nn.conf.distribution.NormalDistribution; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.*; import org.deeplearning4j.nn.conf.layers.misc.FrozenLayerWithBackprop; +import org.deeplearning4j.nn.conf.layers.recurrent.SimpleRnn; import org.deeplearning4j.nn.conf.layers.util.MaskLayer; import org.deeplearning4j.nn.graph.ComputationGraph; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; @@ -60,9 +61,9 @@ public class UtilLayerGradientChecks extends BaseDL4JTest { @Test public void testMaskLayer() { Nd4j.getRandom().setSeed(12345); - int tsLength = 5; + int tsLength = 3; - for(int minibatch : new int[]{1,8}) { + for(int minibatch : new int[]{1,3}) { for (int inputRank : new int[]{2, 3, 4}) { for (boolean inputMask : new boolean[]{false, true}) { String maskType = (inputMask ? "inputMask" : "none"); @@ -74,7 +75,7 @@ public class UtilLayerGradientChecks extends BaseDL4JTest { if(minibatch == 1){ inMask = Nd4j.ones(1,1); } else { - inMask = Nd4j.create(minibatch, 1); + inMask = Nd4j.create(DataType.DOUBLE, minibatch, 1); Nd4j.getExecutioner().exec(new BernoulliDistribution(inMask, 0.5)); int count = inMask.sumNumber().intValue(); assertTrue(count >= 0 && count <= minibatch); //Sanity check on RNG seed @@ -83,16 +84,16 @@ public class UtilLayerGradientChecks extends BaseDL4JTest { case 4: //Per-example mask (broadcast along all channels/x/y) if(minibatch == 1){ - inMask = Nd4j.ones(1,1, 1, 1); + inMask = Nd4j.ones(DataType.DOUBLE, 1,1, 1, 1); } else { - inMask = Nd4j.create(minibatch, 1, 1, 1); + inMask = Nd4j.create(DataType.DOUBLE, minibatch, 1, 1, 1); Nd4j.getExecutioner().exec(new BernoulliDistribution(inMask, 0.5)); int count = inMask.sumNumber().intValue(); assertTrue(count >= 0 && count <= minibatch); //Sanity check on RNG seed } break; case 3: - inMask = Nd4j.ones(minibatch, tsLength); + inMask = Nd4j.ones(DataType.DOUBLE, minibatch, tsLength); for( int i=0; i= n) { - //Example: n=2, m=3... skip on i=2, run test on i=0, i=1 - continue; - } + if(r.nextInt(80) != 0) + continue; //1 of 80 on average - of 3888 possible combinations here -> ~49 tests String msg = "Test " + (count++) + " - minibatch=" + minibatch + ", nIn=" + nIn + ", nOut=" + nOut + ", kernel=" + Arrays.toString(kernel) + ", stride=" @@ -306,7 +301,7 @@ public class TestSameDiffConv extends BaseDL4JTest { log.info("Starting: " + msg); boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, f, l); + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, f, l, null, null, true, 50); //Most of weights are in output layer assertTrue(msg, gradOK); diff --git a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/optimize/solver/TestOptimizers.java b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/optimize/solver/TestOptimizers.java index 45421155d..7aa86c0a2 100644 --- a/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/optimize/solver/TestOptimizers.java +++ b/deeplearning4j/deeplearning4j-core/src/test/java/org/deeplearning4j/optimize/solver/TestOptimizers.java @@ -100,7 +100,7 @@ public class TestOptimizers extends BaseDL4JTest { ds.normalizeZeroMeanZeroUnitVariance(); for (OptimizationAlgorithm oa : toTest) { - int nIter = 10; + int nIter = 5; MultiLayerNetwork network = new MultiLayerNetwork(getMLPConfigIris(oa)); network.init(); double score = network.score(ds); @@ -109,7 +109,7 @@ public class TestOptimizers extends BaseDL4JTest { if (PRINT_OPT_RESULTS) System.out.println("testOptimizersMLP() - " + oa); - int nCallsToOptimizer = 30; + int nCallsToOptimizer = 10; double[] scores = new double[nCallsToOptimizer + 1]; scores[0] = score; for (int i = 0; i < nCallsToOptimizer; i++) { @@ -256,34 +256,6 @@ public class TestOptimizers extends BaseDL4JTest { } } - - @Test - public void testSphereFnOptStochGradDescentMultipleSteps() { - //Earlier tests: only do a single line search, though each line search will do multiple iterations - // of line search algorithm. - //Here, do multiple optimization runs + multiple line search iterations within each run - //i.e., gradient is re-calculated at each step/run - //Single step tests earlier won't test storing of state between iterations - - testSphereFnMultipleStepsHelper(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT, 100, 5); - } - - @Test - public void testSphereFnOptLineGradDescentMultipleSteps() { - testSphereFnMultipleStepsHelper(OptimizationAlgorithm.LINE_GRADIENT_DESCENT, 100, 5); - } - - @Test - public void testSphereFnOptCGMultipleSteps() { - testSphereFnMultipleStepsHelper(OptimizationAlgorithm.CONJUGATE_GRADIENT, 100, 5); - } - - @Test - public void testSphereFnOptLBFGSMultipleSteps() { - testSphereFnMultipleStepsHelper(OptimizationAlgorithm.LBFGS, 100, 5); - } - - private static void testSphereFnMultipleStepsHelper(OptimizationAlgorithm oa, int nOptIter, int maxNumLineSearchIter) { double[] scores = new double[nOptIter + 1]; diff --git a/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/ValidateCuDNN.java b/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/ValidateCuDNN.java index d90f15202..a9e4d185f 100644 --- a/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/ValidateCuDNN.java +++ b/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/ValidateCuDNN.java @@ -58,8 +58,8 @@ public class ValidateCuDNN extends BaseDL4JTest { int numClasses = 10; //imageHeight,imageWidth,channels - int imageHeight = 240; - int imageWidth = 240; + int imageHeight = 64; + int imageWidth = 64; int channels = 3; IActivation activation = new ActivationIdentity(); MultiLayerConfiguration multiLayerConfiguration = new NeuralNetConfiguration.Builder() @@ -68,9 +68,9 @@ public class ValidateCuDNN extends BaseDL4JTest { .activation(new ActivationELU()) .updater(new Nesterovs(1e-3, 0.9)) .list( - new Convolution2D.Builder().nOut(96) - .kernelSize(11, 11).biasInit(0.0) - .stride(4, 4).build(), + new Convolution2D.Builder().nOut(16) + .kernelSize(4, 4).biasInit(0.0) + .stride(2, 2).build(), new ActivationLayer.Builder().activation(activation).build(), new Pooling2D.Builder() .poolingType(SubsamplingLayer.PoolingType.MAX) @@ -85,12 +85,12 @@ public class ValidateCuDNN extends BaseDL4JTest { .poolingType(SubsamplingLayer.PoolingType.MAX) .kernelSize(3, 3).stride(2, 2) .build(), - new Convolution2D.Builder().nOut(384) + new Convolution2D.Builder().nOut(16) .kernelSize(3, 3).padding(1, 1) .biasInit(0.0) .stride(1, 1).build(), new ActivationLayer.Builder().activation(activation).build(), - new Convolution2D.Builder().nOut(256) + new Convolution2D.Builder().nOut(16) .kernelSize(3, 3).padding(1, 1) .stride(1, 1).build(), new ActivationLayer.Builder().activation(activation).build(), @@ -99,7 +99,7 @@ public class ValidateCuDNN extends BaseDL4JTest { .kernelSize(3, 3).stride(2, 2) .build(), new DenseLayer.Builder() - .nOut(4096) + .nOut(64) .biasInit(0.0) .build(), new ActivationLayer.Builder().activation(activation).build(), @@ -114,8 +114,8 @@ public class ValidateCuDNN extends BaseDL4JTest { MultiLayerNetwork net = new MultiLayerNetwork(multiLayerConfiguration); net.init(); - int[] fShape = new int[]{32, channels, imageHeight, imageWidth}; - int[] lShape = new int[]{32, numClasses}; + int[] fShape = new int[]{8, channels, imageHeight, imageWidth}; + int[] lShape = new int[]{8, numClasses}; List> classesToTest = new ArrayList<>(); classesToTest.add(ConvolutionLayer.class); diff --git a/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java b/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java index ede6bb276..2f4532823 100644 --- a/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java +++ b/deeplearning4j/deeplearning4j-cuda/src/test/java/org/deeplearning4j/gradientcheck/CNNGradientCheckTest.java @@ -144,12 +144,6 @@ public class CNNGradientCheckTest extends BaseDL4JTest { // (a) activation function // (b) Whether to test at random initialization, or after some learning (i.e., 'characteristic mode of operation') // (c) Loss function (with specified output activations) - Activation[] activFns = {Activation.SIGMOID, Activation.TANH}; - boolean[] characteristic = {false, true}; //If true: run some backprop steps first - - LossFunctions.LossFunction[] lossFunctions = - {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; - Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH}; //i.e., lossFunctions[i] used with outputActivations[i] here DataSet ds = new IrisDataSetIterator(150, 150).next(); ds.normalizeZeroMeanZeroUnitVariance(); @@ -161,73 +155,74 @@ public class CNNGradientCheckTest extends BaseDL4JTest { double[] l1vals = {0.0, 0.0, 0.5, 0.0}; double[] biasL2 = {0.0, 0.0, 0.0, 0.2}; double[] biasL1 = {0.0, 0.0, 0.6, 0.0}; + Activation[] activFns = {Activation.SIGMOID, Activation.TANH, Activation.ELU, Activation.SOFTPLUS}; + boolean[] characteristic = {false, true, false, true}; //If true: run some backprop steps first - for (Activation afn : activFns) { - for (boolean doLearningFirst : characteristic) { - for (int i = 0; i < lossFunctions.length; i++) { - for (int k = 0; k < l2vals.length; k++) { - LossFunctions.LossFunction lf = lossFunctions[i]; - Activation outputActivation = outputActivations[i]; - double l2 = l2vals[k]; - double l1 = l1vals[k]; + LossFunctions.LossFunction[] lossFunctions = + {LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE, LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD, LossFunctions.LossFunction.MSE}; + Activation[] outputActivations = {Activation.SOFTMAX, Activation.TANH, Activation.SOFTMAX, Activation.IDENTITY}; //i.e., lossFunctions[i] used with outputActivations[i] here - MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder() - .dataType(DataType.DOUBLE) - .l2(l2).l1(l1).l2Bias(biasL2[k]).l1Bias(biasL1[k]) - .optimizationAlgo( - OptimizationAlgorithm.CONJUGATE_GRADIENT) - .seed(12345L).list() - .layer(0, new ConvolutionLayer.Builder(new int[]{1, 1}).nIn(1).nOut(6) - .cudnnAllowFallback(false) - .weightInit(WeightInit.XAVIER).activation(afn) - .updater(new NoOp()).build()) - .layer(1, new OutputLayer.Builder(lf).activation(outputActivation).nOut(3) - .weightInit(WeightInit.XAVIER).updater(new NoOp()).build()) + for( int i=0; i 8x8x3 + .layer(new OutputLayer.Builder(LossFunctions.LossFunction.MCXENT) + .activation(Activation.SOFTMAX).nIn(8 * 8 * 3) + .nOut(4).build()) + .setInputType(InputType.convolutionalFlat(height, width, + inputDepth)) + .build(); - MultiLayerConfiguration conf = - new NeuralNetConfiguration.Builder() - .dataType(DataType.DOUBLE) - .updater(new NoOp()) - .dist(new NormalDistribution(0, 1)) - .list().layer(new ConvolutionLayer.Builder(kernel, - stride, padding).nIn(inputDepth) - .cudnnAllowFallback(false) - .nOut(3).build())//output: (5-2+0)/1+1 = 4 - .layer(new Upsampling2D.Builder().size(size).build()) //output: 4*2 =8 -> 8x8x3 - .layer(new OutputLayer.Builder(LossFunctions.LossFunction.MCXENT) - .activation(Activation.SOFTMAX).nIn(8 * 8 * 3) - .nOut(4).build()) - .setInputType(InputType.convolutionalFlat(height, width, - inputDepth)) - .build(); + MultiLayerNetwork net = new MultiLayerNetwork(conf); + net.init(); - MultiLayerNetwork net = new MultiLayerNetwork(conf); - net.init(); + String msg = "Upsampling - minibatch=" + minibatchSize; - String msg = "PoolingType=" + poolingType + ", minibatch=" + minibatchSize + ", activationFn=" - + afn; - - if (PRINT_RESULTS) { - System.out.println(msg); - for (int j = 0; j < net.getnLayers(); j++) - System.out.println("Layer " + j + " # params: " + net.getLayer(j).numParams()); - } - - boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, - DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); - - assertTrue(msg, gradOK); - - TestUtils.testModelSerialization(net); - } + if (PRINT_RESULTS) { + System.out.println(msg); + for (int j = 0; j < net.getnLayers(); j++) + System.out.println("Layer " + j + " # params: " + net.getLayer(j).numParams()); } + + boolean gradOK = GradientCheckUtil.checkGradients(net, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR, + DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels); + + assertTrue(msg, gradOK); + + TestUtils.testModelSerialization(net); } } @@ -646,63 +627,56 @@ public class CNNGradientCheckTest extends BaseDL4JTest { public void testCnnSamePaddingMode() { int nOut = 2; - int[] minibatchSizes = {1, 3}; + int[] minibatchSizes = {1, 3, 3, 2, 1, 2}; + int[] heights = new int[]{4, 5, 6, 5, 4, 4}; //Same padding mode: insensitive to exact input size... + int[] kernelSizes = new int[]{2, 3, 2, 3, 2, 3}; + int[] inputDepths = {1, 2, 4, 3, 2, 3}; + int width = 5; - int[] heights = new int[]{4, 5, 6}; //Same padding mode: insensitive to exact input size... - int[] kernelSizes = new int[]{2, 3}; - int[] inputDepths = {1, 2, 4}; Nd4j.getRandom().setSeed(12345); - for (int inputDepth : inputDepths) { - for (int minibatchSize : minibatchSizes) { - for (int height : heights) { - for (int k : kernelSizes) { + for( int i=0; i").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoading.java b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoading.java index d458bb000..551750f7c 100644 --- a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoading.java +++ b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoading.java @@ -17,6 +17,7 @@ package org.deeplearning4j.graph.data; import org.apache.commons.lang3.ArrayUtils; +import org.deeplearning4j.graph.BaseDL4JTest; import org.deeplearning4j.graph.api.Edge; import org.deeplearning4j.graph.api.IGraph; import org.deeplearning4j.graph.data.impl.DelimitedEdgeLineProcessor; @@ -32,7 +33,7 @@ import java.util.List; import static org.junit.Assert.*; -public class TestGraphLoading { +public class TestGraphLoading extends BaseDL4JTest { @Test(timeout = 10000L) public void testEdgeListGraphLoading() throws IOException { diff --git a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoadingWeighted.java b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoadingWeighted.java index 9844883f2..a06f40248 100644 --- a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoadingWeighted.java +++ b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/data/TestGraphLoadingWeighted.java @@ -17,6 +17,7 @@ package org.deeplearning4j.graph.data; import org.apache.commons.lang3.ArrayUtils; +import org.deeplearning4j.graph.BaseDL4JTest; import org.deeplearning4j.graph.api.Edge; import org.deeplearning4j.graph.api.IGraph; import org.deeplearning4j.graph.data.impl.WeightedEdgeLineProcessor; @@ -32,7 +33,7 @@ import java.util.List; import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.assertEquals; -public class TestGraphLoadingWeighted { +public class TestGraphLoadingWeighted extends BaseDL4JTest { @Test(timeout = 10000L) public void testWeightedDirected() throws IOException { diff --git a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/graph/TestGraph.java b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/graph/TestGraph.java index d3067b515..74c7f7dc2 100644 --- a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/graph/TestGraph.java +++ b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/graph/TestGraph.java @@ -17,6 +17,7 @@ package org.deeplearning4j.graph.graph; import org.apache.commons.lang3.ArrayUtils; +import org.deeplearning4j.graph.BaseDL4JTest; import org.deeplearning4j.graph.api.*; import org.deeplearning4j.graph.data.GraphLoader; import org.deeplearning4j.graph.iterator.RandomWalkIterator; @@ -34,7 +35,7 @@ import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.*; -public class TestGraph { +public class TestGraph extends BaseDL4JTest { @Test(timeout = 10000L) public void testSimpleGraph() { diff --git a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/DeepWalkGradientCheck.java b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/DeepWalkGradientCheck.java index 871178f9c..951a4c50b 100644 --- a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/DeepWalkGradientCheck.java +++ b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/DeepWalkGradientCheck.java @@ -16,6 +16,7 @@ package org.deeplearning4j.graph.models.deepwalk; +import org.deeplearning4j.graph.BaseDL4JTest; import org.deeplearning4j.graph.data.GraphLoader; import org.deeplearning4j.graph.graph.Graph; import org.deeplearning4j.graph.iterator.GraphWalkIterator; @@ -35,7 +36,7 @@ import java.util.Arrays; import static org.junit.Assert.*; -public class DeepWalkGradientCheck { +public class DeepWalkGradientCheck extends BaseDL4JTest { public static final double epsilon = 1e-8; public static final double MAX_REL_ERROR = 1e-3; diff --git a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestDeepWalk.java b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestDeepWalk.java index f9f7967e5..82d94fc46 100644 --- a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestDeepWalk.java +++ b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestDeepWalk.java @@ -17,6 +17,7 @@ package org.deeplearning4j.graph.models.deepwalk; import org.apache.commons.io.FilenameUtils; +import org.deeplearning4j.graph.BaseDL4JTest; import org.deeplearning4j.graph.api.Edge; import org.deeplearning4j.graph.api.IGraph; import org.deeplearning4j.graph.data.GraphLoader; @@ -42,7 +43,7 @@ import java.util.Random; import static org.junit.Assert.*; -public class TestDeepWalk { +public class TestDeepWalk extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); @@ -214,7 +215,7 @@ public class TestDeepWalk { Nd4j.getRandom().setSeed(12345); - int nEpochs = 50; + int nEpochs = 5; //Set up network DeepWalk deepWalk = diff --git a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestGraphHuffman.java b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestGraphHuffman.java index d894f09a7..5651eec2e 100644 --- a/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestGraphHuffman.java +++ b/deeplearning4j/deeplearning4j-graph/src/test/java/org/deeplearning4j/graph/models/deepwalk/TestGraphHuffman.java @@ -16,6 +16,7 @@ package org.deeplearning4j.graph.models.deepwalk; +import org.deeplearning4j.graph.BaseDL4JTest; import org.junit.Test; import java.util.Arrays; @@ -24,7 +25,7 @@ import java.util.Set; import static org.junit.Assert.*; -public class TestGraphHuffman { +public class TestGraphHuffman extends BaseDL4JTest { @Test(timeout = 10000L) public void testGraphHuffman() { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/BaseDL4JTest.java new file mode 100644 index 000000000..d7ae7e2ca --- /dev/null +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j.nn.modelimport.keras; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/MiscTests.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/MiscTests.java index 872116dbd..5c288b21c 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/MiscTests.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/MiscTests.java @@ -38,7 +38,7 @@ import java.util.concurrent.atomic.AtomicInteger; import static org.junit.Assert.*; -public class MiscTests { +public class MiscTests extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/FullModelComparisons.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/FullModelComparisons.java index 9e74e61f9..f0dfb3694 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/FullModelComparisons.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/FullModelComparisons.java @@ -24,6 +24,7 @@ import org.deeplearning4j.datasets.datavec.SequenceRecordReaderDataSetIterator; import org.deeplearning4j.nn.layers.recurrent.LSTM; import org.deeplearning4j.nn.layers.recurrent.LastTimeStepLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel; import org.deeplearning4j.nn.modelimport.keras.exceptions.InvalidKerasConfigurationException; @@ -54,7 +55,7 @@ import java.util.List; import static junit.framework.TestCase.assertTrue; @Ignore("AB - 2019/05/27 - NPE on CUDA only. Ignored to get all passing baseline on master; see issue 7657") -public class FullModelComparisons { +public class FullModelComparisons extends BaseDL4JTest { ClassLoader classLoader = FullModelComparisons.class.getClassLoader(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/JsonTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/JsonTest.java index 5714f07c7..20b80d30f 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/JsonTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/JsonTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.configurations; import org.deeplearning4j.nn.conf.InputPreProcessor; import org.deeplearning4j.nn.conf.NeuralNetConfiguration; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.preprocessors.KerasFlattenRnnPreprocessor; import org.deeplearning4j.nn.modelimport.keras.preprocessors.PermutePreprocessor; import org.deeplearning4j.nn.modelimport.keras.preprocessors.ReshapePreprocessor; @@ -26,7 +27,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; -public class JsonTest { +public class JsonTest extends BaseDL4JTest { @Test public void testJsonPreprocessors() throws Exception { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras1ModelConfigurationTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras1ModelConfigurationTest.java index 954fe0450..6dce1b714 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras1ModelConfigurationTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras1ModelConfigurationTest.java @@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.deeplearning4j.nn.conf.ComputationGraphConfiguration; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; import org.junit.Test; @@ -36,7 +37,7 @@ import java.io.InputStream; */ @Slf4j -public class Keras1ModelConfigurationTest { +public class Keras1ModelConfigurationTest extends BaseDL4JTest { private ClassLoader classLoader = getClass().getClassLoader(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras2ModelConfigurationTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras2ModelConfigurationTest.java index d6212f6b1..162dc235a 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras2ModelConfigurationTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/Keras2ModelConfigurationTest.java @@ -21,6 +21,7 @@ import lombok.val; import org.deeplearning4j.nn.conf.ComputationGraphConfiguration; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.KerasModelImport; @@ -49,7 +50,7 @@ import static org.junit.Assert.assertArrayEquals; */ @Slf4j -public class Keras2ModelConfigurationTest { +public class Keras2ModelConfigurationTest extends BaseDL4JTest { ClassLoader classLoader = getClass().getClassLoader(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasInitilizationTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasInitilizationTest.java index a3f90b2f1..7072f1956 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasInitilizationTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasInitilizationTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.configurations; import org.deeplearning4j.nn.conf.distribution.*; import org.deeplearning4j.nn.conf.layers.DenseLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; -public class KerasInitilizationTest { +public class KerasInitilizationTest extends BaseDL4JTest { private double minValue = -0.2; private double maxValue = 0.2; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasModelImportTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasModelImportTest.java index 94109d887..a015dc24f 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasModelImportTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/configurations/KerasModelImportTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.configurations; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasModelImport; import org.deeplearning4j.nn.modelimport.keras.exceptions.InvalidKerasConfigurationException; import org.deeplearning4j.nn.modelimport.keras.exceptions.UnsupportedKerasConfigurationException; @@ -38,10 +39,7 @@ import static org.junit.Assert.assertNotNull; * Test import of Keras models. */ @Slf4j -public class KerasModelImportTest { - - ClassLoader classLoader = KerasModelImportTest.class.getClassLoader(); - +public class KerasModelImportTest extends BaseDL4JTest { @Test public void testH5WithoutTensorflowScope() throws Exception { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasCustomLayerTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasCustomLayerTest.java index 74514bbc2..c14377b31 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasCustomLayerTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasCustomLayerTest.java @@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.deeplearning4j.common.resources.DL4JResources; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasModelImport; import org.deeplearning4j.nn.modelimport.keras.layers.custom.KerasLRN; @@ -41,7 +42,7 @@ import java.net.URL; * @author Justin Long (crockpotveggies) */ @Slf4j -public class KerasCustomLayerTest { +public class KerasCustomLayerTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasLambdaTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasLambdaTest.java index 3c70765ab..31611283f 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasLambdaTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasLambdaTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.e2e; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.samediff.SameDiffLambdaLayer; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel; @@ -44,7 +45,7 @@ import java.nio.file.StandardCopyOption; * * @author Max Pumperla */ -public class KerasLambdaTest { +public class KerasLambdaTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasModelEndToEndTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasModelEndToEndTest.java index 966c1020b..e5caa3e3a 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasModelEndToEndTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasModelEndToEndTest.java @@ -32,10 +32,7 @@ import org.deeplearning4j.nn.graph.ComputationGraph; import org.deeplearning4j.nn.layers.recurrent.LSTM; import org.deeplearning4j.nn.layers.recurrent.LastTimeStepLayer; import org.deeplearning4j.nn.layers.wrapper.BaseWrapperLayer; -import org.deeplearning4j.nn.modelimport.keras.Hdf5Archive; -import org.deeplearning4j.nn.modelimport.keras.KerasModel; -import org.deeplearning4j.nn.modelimport.keras.KerasModelImport; -import org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel; +import org.deeplearning4j.nn.modelimport.keras.*; import org.deeplearning4j.nn.modelimport.keras.utils.KerasModelBuilder; import org.deeplearning4j.nn.modelimport.keras.utils.KerasModelUtils; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; @@ -78,7 +75,7 @@ import static org.junit.Assert.assertTrue; * @author dave@skymind.io, Max Pumperla */ @Slf4j -public class KerasModelEndToEndTest { +public class KerasModelEndToEndTest extends BaseDL4JTest { private static final String GROUP_ATTR_INPUTS = "inputs"; private static final String GROUP_ATTR_OUTPUTS = "outputs"; private static final String GROUP_PREDICTIONS = "predictions"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000PredictTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000PredictTest.java index a30f30ec8..f1fcc3ded 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000PredictTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000PredictTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.e2e; import lombok.extern.slf4j.Slf4j; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.KerasModelImport; @@ -50,7 +51,7 @@ import java.nio.file.StandardCopyOption; * @author Max Pumperla */ @Slf4j -public class KerasYolo9000PredictTest { +public class KerasYolo9000PredictTest extends BaseDL4JTest { private static final String DL4J_MODEL_FILE_NAME = "."; private static ImagePreProcessingScaler IMAGE_PREPROCESSING_SCALER = new ImagePreProcessingScaler(0, 1); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000Test.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000Test.java index 8b16f2cfc..403610c10 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000Test.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/e2e/KerasYolo9000Test.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.e2e; import lombok.extern.slf4j.Slf4j; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.layers.convolutional.KerasSpaceToDepth; @@ -47,7 +48,7 @@ import java.nio.file.StandardCopyOption; * @author Max Pumperla */ @Slf4j -public class KerasYolo9000Test { +public class KerasYolo9000Test extends BaseDL4JTest { private static final String TEMP_MODEL_FILENAME = "tempModel"; private static final String H5_EXTENSION = ".h5"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasLeakyReLUTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasLeakyReLUTest.java index 72ce7af44..7770e7816 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasLeakyReLUTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasLeakyReLUTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.advanced.activation; import org.deeplearning4j.nn.conf.layers.ActivationLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasLeakyReLUTest { +public class KerasLeakyReLUTest extends BaseDL4JTest { private Keras1LayerConfiguration conf1 = new Keras1LayerConfiguration(); private Keras2LayerConfiguration conf2 = new Keras2LayerConfiguration(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasPReLUTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasPReLUTest.java index 649f59343..b22963e2a 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasPReLUTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasPReLUTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.advanced.activation; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.PReLULayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -35,7 +36,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasPReLUTest { +public class KerasPReLUTest extends BaseDL4JTest { private Keras1LayerConfiguration conf1 = new Keras1LayerConfiguration(); private Keras2LayerConfiguration conf2 = new Keras2LayerConfiguration(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasThresholdedReLUTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasThresholdedReLUTest.java index 50fd4feaa..02bf24e1d 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasThresholdedReLUTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/advanced/activation/KerasThresholdedReLUTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.advanced.activation; import org.deeplearning4j.nn.conf.layers.ActivationLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasThresholdedReLUTest { +public class KerasThresholdedReLUTest extends BaseDL4JTest { private Keras1LayerConfiguration conf1 = new Keras1LayerConfiguration(); private Keras2LayerConfiguration conf2 = new Keras2LayerConfiguration(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution1DTest.java index 62d2d4f66..0a408ac83 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution1DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.Convolution1DLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -40,7 +41,7 @@ import static org.junit.Assert.assertNotNull; /** * @author Max Pumperla */ -public class KerasAtrousConvolution1DTest { +public class KerasAtrousConvolution1DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution2DTest.java index 488932bd7..2a01a1d8b 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasAtrousConvolution2DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.ConvolutionLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -38,7 +39,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasAtrousConvolution2DTest { +public class KerasAtrousConvolution2DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution1DTest.java index 307bf8284..449dc10cc 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution1DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.Convolution1DLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -37,7 +38,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasConvolution1DTest { +public class KerasConvolution1DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution2DTest.java index 879ae274f..bd0d6e012 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution2DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.ConvolutionLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasConvolution2DTest { +public class KerasConvolution2DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution3DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution3DTest.java index b9364fb6a..4737ec128 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution3DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasConvolution3DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.ConvolutionLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -43,7 +44,7 @@ import static org.junit.Assert.assertNotNull; /** * @author Max Pumperla */ -public class KerasConvolution3DTest { +public class KerasConvolution3DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping1DTest.java index 26a016f48..f356f674f 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping1DTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.convolutional.Cropping1D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -32,7 +33,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasCropping1DTest { +public class KerasCropping1DTest extends BaseDL4JTest { private final String LAYER_NAME = "cropping_1D_layer"; private final int CROPPING = 2; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping2DTest.java index 7d077b9d5..95f5d7485 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping2DTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.convolutional.Cropping2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -32,7 +33,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasCropping2DTest { +public class KerasCropping2DTest extends BaseDL4JTest { private final String LAYER_NAME = "cropping_2D_layer"; private final int[] CROPPING = new int[]{2, 3}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping3DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping3DTest.java index d3c4ab053..1a6f564b4 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping3DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasCropping3DTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.convolutional.Cropping2D; import org.deeplearning4j.nn.conf.layers.convolutional.Cropping3D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -34,7 +35,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasCropping3DTest { +public class KerasCropping3DTest extends BaseDL4JTest { private final String LAYER_NAME = "cropping_3D_layer"; private final int[] CROPPING = new int[]{2, 3, 5}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDeconvolution2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDeconvolution2DTest.java index e907ea03c..3675d46a8 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDeconvolution2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDeconvolution2DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.Deconvolution2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasDeconvolution2DTest { +public class KerasDeconvolution2DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDepthwiseConvolution2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDepthwiseConvolution2DTest.java index 7bed7e93d..a79fab8da 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDepthwiseConvolution2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasDepthwiseConvolution2DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.DepthwiseConvolution2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -42,7 +43,7 @@ import static org.junit.Assert.assertNotNull; /** * @author Max Pumperla */ -public class KerasDepthwiseConvolution2DTest { +public class KerasDepthwiseConvolution2DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasSeparableConvolution2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasSeparableConvolution2DTest.java index e9fb01a70..7d05a1b67 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasSeparableConvolution2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasSeparableConvolution2DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.SeparableConvolution2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasSeparableConvolution2DTest { +public class KerasSeparableConvolution2DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling1DTest.java index 69a9945f5..182054900 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling1DTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.Upsampling1D; import org.deeplearning4j.nn.conf.layers.Upsampling2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -35,7 +36,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasUpsampling1DTest { +public class KerasUpsampling1DTest extends BaseDL4JTest { private final String LAYER_NAME = "upsampling_1D_layer"; private int size = 4; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling2DTest.java index 40a64dc18..3c7b30b57 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling2DTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.Upsampling2D; import org.deeplearning4j.nn.conf.layers.ZeroPadding1DLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -35,7 +36,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasUpsampling2DTest { +public class KerasUpsampling2DTest extends BaseDL4JTest { private final String LAYER_NAME = "upsampling_2D_layer"; private int[] size = new int[]{2, 2}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling3DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling3DTest.java index 5f252031b..a8e564340 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling3DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasUpsampling3DTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.Upsampling3D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasUpsampling3DTest { +public class KerasUpsampling3DTest extends BaseDL4JTest { private final String LAYER_NAME = "upsampling_3D_layer"; private int[] size = new int[]{2, 2, 2}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding1DTest.java index aa99f62e6..4cc9cc2cb 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding1DTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.ZeroPadding1DLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasZeroPadding1DTest { +public class KerasZeroPadding1DTest extends BaseDL4JTest { private Keras1LayerConfiguration conf1 = new Keras1LayerConfiguration(); private Keras2LayerConfiguration conf2 = new Keras2LayerConfiguration(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding2DTest.java index 28a7fdf00..5f72cbcf2 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding2DTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.ZeroPaddingLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -32,7 +33,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasZeroPadding2DTest { +public class KerasZeroPadding2DTest extends BaseDL4JTest { private final String LAYER_NAME = "zero_padding_2D_layer"; private final int[] ZERO_PADDING = new int[]{2, 3}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding3DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding3DTest.java index 4b978c048..779d9ce51 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding3DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/convolution/KerasZeroPadding3DTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.convolution; import org.deeplearning4j.nn.conf.layers.ZeroPadding3DLayer; import org.deeplearning4j.nn.conf.layers.ZeroPaddingLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -34,7 +35,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasZeroPadding3DTest { +public class KerasZeroPadding3DTest extends BaseDL4JTest { private final String LAYER_NAME = "zero_padding_3D_layer"; private final int[] ZERO_PADDING = new int[]{2, 3, 4}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasActivationLayer.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasActivationLayer.java index 83b576552..d7f4d8ad9 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasActivationLayer.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasActivationLayer.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.layers.ActivationLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -27,7 +28,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; -public class KerasActivationLayer { +public class KerasActivationLayer extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDenseTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDenseTest.java index 646ea813c..334ab96d3 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDenseTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDenseTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.DenseLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertNotNull; /** * @author Max Pumperla */ -public class KerasDenseTest { +public class KerasDenseTest extends BaseDL4JTest { private Integer keras1 = 1; private Integer keras2 = 2; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDropoutTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDropoutTest.java index 74e94d2d6..ff5c49cc5 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDropoutTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasDropoutTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.DropoutLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasDropoutTest { +public class KerasDropoutTest extends BaseDL4JTest { String LAYER_NAME = "dropout"; private final double DROPOUT_KERAS = 0.3; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasMaskingTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasMaskingTest.java index d2cd4508c..144d24ab8 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasMaskingTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasMaskingTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.layers.util.MaskZeroLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasMaskingTest { +public class KerasMaskingTest extends BaseDL4JTest { private Keras1LayerConfiguration conf1 = new Keras1LayerConfiguration(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasPermuteTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasPermuteTest.java index e7437234e..42cb79cfb 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasPermuteTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasPermuteTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.inputs.InputType; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasPermuteTest { +public class KerasPermuteTest extends BaseDL4JTest { private Integer keras1 = 1; private Integer keras2 = 2; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasRepeatVectorTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasRepeatVectorTest.java index d850dbb8f..6c439fb95 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasRepeatVectorTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasRepeatVectorTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.layers.misc.RepeatVector; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -30,7 +31,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasRepeatVectorTest { +public class KerasRepeatVectorTest extends BaseDL4JTest { String LAYER_NAME = "repeat"; private int REPEAT = 4; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasReshapeTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasReshapeTest.java index 433dc8b73..dafafea1d 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasReshapeTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasReshapeTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.inputs.InputType; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -36,7 +37,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasReshapeTest { +public class KerasReshapeTest extends BaseDL4JTest { private Integer keras1 = 1; private Integer keras2 = 2; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasSpatialDropout2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasSpatialDropout2DTest.java index 3c4cdff59..71ec2f468 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasSpatialDropout2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/core/KerasSpatialDropout2DTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.core; import org.deeplearning4j.nn.conf.dropout.SpatialDropout; import org.deeplearning4j.nn.conf.layers.DropoutLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasSpatialDropout2DTest { +public class KerasSpatialDropout2DTest extends BaseDL4JTest { String LAYER_NAME = "spatial_dropout_2d"; private final double RATE_KERAS = 0.3; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/embeddings/KerasEmbeddingTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/embeddings/KerasEmbeddingTest.java index da1f0a0a3..abeba3da7 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/embeddings/KerasEmbeddingTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/embeddings/KerasEmbeddingTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.embeddings; import org.deeplearning4j.nn.conf.layers.EmbeddingSequenceLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -36,7 +37,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasEmbeddingTest { +public class KerasEmbeddingTest extends BaseDL4JTest { private final String LAYER_NAME = "embedding_sequence_layer"; private final String INIT_KERAS = "glorot_normal"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected1DTest.java index a5c3a5025..f8dc975ea 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected1DTest.java @@ -21,6 +21,7 @@ import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.LocallyConnected1D; import org.deeplearning4j.nn.conf.layers.LocallyConnected2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasLocallyConnected1DTest { +public class KerasLocallyConnected1DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected2DTest.java index 0f0076068..b38b8f783 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/local/KerasLocallyConnected2DTest.java @@ -20,6 +20,7 @@ import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.LocallyConnected2D; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertNotNull; /** * @author Max Pumperla */ -public class KerasLocallyConnected2DTest { +public class KerasLocallyConnected2DTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasAlphaDropoutTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasAlphaDropoutTest.java index 1e7c7218b..6f34e1684 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasAlphaDropoutTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasAlphaDropoutTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.noise; import org.deeplearning4j.nn.conf.dropout.AlphaDropout; import org.deeplearning4j.nn.conf.layers.DropoutLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasAlphaDropoutTest { +public class KerasAlphaDropoutTest extends BaseDL4JTest { String LAYER_NAME = "alpha_dropout"; private final double RATE_KERAS = 0.3; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianDropoutTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianDropoutTest.java index 965beaf13..7ca51b37d 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianDropoutTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianDropoutTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.noise; import org.deeplearning4j.nn.conf.dropout.GaussianDropout; import org.deeplearning4j.nn.conf.layers.DropoutLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasGaussianDropoutTest { +public class KerasGaussianDropoutTest extends BaseDL4JTest { String LAYER_NAME = "gaussian_dropout"; private final double RATE_KERAS = 0.3; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianNoiseTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianNoiseTest.java index 17df71635..58abe77a4 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianNoiseTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/noise/KerasGaussianNoiseTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.noise; import org.deeplearning4j.nn.conf.dropout.GaussianNoise; import org.deeplearning4j.nn.conf.layers.DropoutLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasGaussianNoiseTest { +public class KerasGaussianNoiseTest extends BaseDL4JTest { String LAYER_NAME = "gaussian_noise"; private final double STDDEV = 0.3; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/normalization/KerasBatchNormalizationTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/normalization/KerasBatchNormalizationTest.java index 47caa087e..6fbf9ec43 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/normalization/KerasBatchNormalizationTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/normalization/KerasBatchNormalizationTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.normalization; import org.deeplearning4j.nn.conf.layers.BatchNormalization; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -32,7 +33,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasBatchNormalizationTest { +public class KerasBatchNormalizationTest extends BaseDL4JTest { public static final String PARAM_NAME_BETA = "beta"; private final String LAYER_NAME = "batch_norm_layer"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling1DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling1DTest.java index c72a47b38..3b2716cd8 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling1DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling1DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.pooling; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.layers.PoolingType; import org.deeplearning4j.nn.conf.layers.Subsampling1DLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasPooling1DTest { +public class KerasPooling1DTest extends BaseDL4JTest { private final String LAYER_NAME = "test_layer"; private final int[] KERNEL_SIZE = new int[]{2}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling2DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling2DTest.java index dd5126525..f4852d89a 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling2DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling2DTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.pooling; import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.layers.PoolingType; import org.deeplearning4j.nn.conf.layers.SubsamplingLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -35,7 +36,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasPooling2DTest { +public class KerasPooling2DTest extends BaseDL4JTest { private final String LAYER_NAME = "test_layer"; private final int[] KERNEL_SIZE = new int[]{1, 2}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling3DTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling3DTest.java index a8a020d96..cb6a66155 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling3DTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/pooling/KerasPooling3DTest.java @@ -20,6 +20,7 @@ import org.deeplearning4j.nn.conf.ConvolutionMode; import org.deeplearning4j.nn.conf.layers.PoolingType; import org.deeplearning4j.nn.conf.layers.Subsampling3DLayer; import org.deeplearning4j.nn.conf.layers.SubsamplingLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -36,7 +37,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasPooling3DTest { +public class KerasPooling3DTest extends BaseDL4JTest { private final String LAYER_NAME = "pooling_3d"; private final int[] KERNEL_SIZE = new int[]{2, 2, 2}; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasLSTMTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasLSTMTest.java index 483ec91c4..e2d0b7a03 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasLSTMTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasLSTMTest.java @@ -21,6 +21,7 @@ import org.deeplearning4j.nn.conf.inputs.InputType; import org.deeplearning4j.nn.conf.layers.LSTM; import org.deeplearning4j.nn.conf.layers.recurrent.LastTimeStep; import org.deeplearning4j.nn.conf.layers.util.MaskZeroLayer; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -44,7 +45,7 @@ import static org.junit.Assert.assertNotNull; /** * @author Max Pumperla */ -public class KerasLSTMTest { +public class KerasLSTMTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasSimpleRnnTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasSimpleRnnTest.java index a8d223b86..b760a90e1 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasSimpleRnnTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/recurrent/KerasSimpleRnnTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.recurrent; import org.deeplearning4j.nn.conf.dropout.Dropout; import org.deeplearning4j.nn.conf.layers.recurrent.LastTimeStep; import org.deeplearning4j.nn.conf.layers.recurrent.SimpleRnn; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasTestUtils; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; @@ -35,7 +36,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasSimpleRnnTest { +public class KerasSimpleRnnTest extends BaseDL4JTest { private final String ACTIVATION = "sigmoid"; private final String LAYER_NAME = "simple_rnn_layer"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/wrappers/KerasBidirectionalTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/wrappers/KerasBidirectionalTest.java index 92403411a..91969bc09 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/wrappers/KerasBidirectionalTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/layers/wrappers/KerasBidirectionalTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelimport.keras.layers.wrappers; import org.deeplearning4j.nn.conf.layers.LSTM; import org.deeplearning4j.nn.conf.layers.recurrent.Bidirectional; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.config.Keras1LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.Keras2LayerConfiguration; import org.deeplearning4j.nn.modelimport.keras.config.KerasLayerConfiguration; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals; /** * @author Max Pumperla */ -public class KerasBidirectionalTest { +public class KerasBidirectionalTest extends BaseDL4JTest { private final String ACTIVATION_KERAS = "linear"; private final String ACTIVATION_DL4J = "identity"; diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/optimizers/OptimizerImport.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/optimizers/OptimizerImport.java index c697971e6..8819ca9b9 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/optimizers/OptimizerImport.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/optimizers/OptimizerImport.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.modelimport.keras.optimizers; import org.deeplearning4j.config.DL4JSystemProperties; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel; import org.deeplearning4j.nn.modelimport.keras.e2e.KerasModelEndToEndTest; @@ -33,7 +34,7 @@ import java.nio.file.StandardCopyOption; import static java.io.File.createTempFile; -public class OptimizerImport { +public class OptimizerImport extends BaseDL4JTest { @Test public void importAdam() throws Exception { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorImportTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorImportTest.java index 6bf6718c4..8753f772c 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorImportTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorImportTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.nn.modelimport.keras.preprocessing.sequence; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.exceptions.InvalidKerasConfigurationException; import org.deeplearning4j.nn.modelimport.keras.preprocessing.text.KerasTokenizer; import org.junit.Test; @@ -29,7 +30,7 @@ import java.io.IOException; * * @author Max Pumperla */ -public class TimeSeriesGeneratorImportTest { +public class TimeSeriesGeneratorImportTest extends BaseDL4JTest { @Test public void importTimeSeriesTest() throws IOException, InvalidKerasConfigurationException { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorTest.java index 1130a3b46..3a2da91a9 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/sequence/TimeSeriesGeneratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.nn.modelimport.keras.preprocessing.sequence; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.exceptions.InvalidKerasConfigurationException; import org.junit.Test; import org.nd4j.linalg.api.ndarray.INDArray; @@ -24,7 +25,7 @@ import org.nd4j.linalg.primitives.Pair; import static org.junit.Assert.assertEquals; -public class TimeSeriesGeneratorTest { +public class TimeSeriesGeneratorTest extends BaseDL4JTest { @Test public void tsGeneratorTest() throws InvalidKerasConfigurationException { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerImportTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerImportTest.java index 7e7e5219d..f229ec813 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerImportTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerImportTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.nn.modelimport.keras.preprocessing.text; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.exceptions.InvalidKerasConfigurationException; import org.junit.Test; import org.nd4j.linalg.io.ClassPathResource; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertTrue; * * @author Max Pumperla */ -public class TokenizerImportTest { +public class TokenizerImportTest extends BaseDL4JTest { ClassLoader classLoader = getClass().getClassLoader(); diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerTest.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerTest.java index e2d0aac79..bbcd00372 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerTest.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/TokenizerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.nn.modelimport.keras.preprocessing.text; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.junit.Test; import org.nd4j.linalg.api.ndarray.INDArray; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals; * * @author Max Pumperla */ -public class TokenizerTest { +public class TokenizerTest extends BaseDL4JTest { @Test public void tokenizerBasics() { diff --git a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/weights/KerasWeightSettingTests.java b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/weights/KerasWeightSettingTests.java index 2e40f9e67..18cf3305d 100644 --- a/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/weights/KerasWeightSettingTests.java +++ b/deeplearning4j/deeplearning4j-modelimport/src/test/java/org/deeplearning4j/nn/modelimport/keras/weights/KerasWeightSettingTests.java @@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelimport.keras.weights; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.deeplearning4j.nn.graph.ComputationGraph; +import org.deeplearning4j.nn.modelimport.keras.BaseDL4JTest; import org.deeplearning4j.nn.modelimport.keras.KerasLayer; import org.deeplearning4j.nn.modelimport.keras.KerasModel; import org.deeplearning4j.nn.modelimport.keras.layers.convolutional.KerasSpaceToDepth; @@ -42,7 +43,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @Slf4j -public class KerasWeightSettingTests { +public class KerasWeightSettingTests extends BaseDL4JTest { @Rule public final TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/BaseDL4JTest.java new file mode 100644 index 000000000..41107decf --- /dev/null +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j.nearestneighbor.server; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/NearestNeighborTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/NearestNeighborTest.java index 990a72ff3..9f8fd7241 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/NearestNeighborTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/deeplearning4j-nearestneighbor-server/src/test/java/org/deeplearning4j/nearestneighbor/server/NearestNeighborTest.java @@ -44,7 +44,7 @@ import static org.junit.Assert.assertEquals; /** * Created by agibsonccc on 4/27/17. */ -public class NearestNeighborTest { +public class NearestNeighborTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/main/java/org/deeplearning4j/clustering/kdtree/KDTree.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/main/java/org/deeplearning4j/clustering/kdtree/KDTree.java index f42e970c2..c5e2452f3 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/main/java/org/deeplearning4j/clustering/kdtree/KDTree.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/main/java/org/deeplearning4j/clustering/kdtree/KDTree.java @@ -175,7 +175,7 @@ public class KDTree implements Serializable { return Pair.of(Double.POSITIVE_INFINITY, null); int _discNext = (_disc + 1) % dims; - double dist2 = Nd4j.getExecutioner().execAndReturn(new EuclideanDistance(point, Nd4j.zeros(point.shape()))).getFinalResult().doubleValue(); + double dist2 = Nd4j.getExecutioner().execAndReturn(new EuclideanDistance(point, Nd4j.zeros(point.dataType(), point.shape()))).getFinalResult().doubleValue(); if (dist2 < dist) { best = node.getPoint(); dist = dist2; diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/BaseDL4JTest.java new file mode 100644 index 000000000..8b57f5dc0 --- /dev/null +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j.clustering; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kdtree/KDTreeTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kdtree/KDTreeTest.java index 1309389f7..4b7b8e567 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kdtree/KDTreeTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kdtree/KDTreeTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.clustering.kdtree; import com.google.common.primitives.Doubles; import lombok.val; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.joda.time.Duration; import org.junit.Before; import org.junit.BeforeClass; @@ -40,7 +41,7 @@ import static org.junit.Assert.assertTrue; /** * Created by agibsonccc on 1/1/15. */ -public class KDTreeTest { +public class KDTreeTest extends BaseDL4JTest { private KDTree kdTree; diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kmeans/KMeansTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kmeans/KMeansTest.java index df6dd4aa8..b023dfd15 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kmeans/KMeansTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/kmeans/KMeansTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.clustering.kmeans; import org.apache.commons.lang3.time.StopWatch; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.deeplearning4j.clustering.algorithm.Distance; import org.deeplearning4j.clustering.cluster.*; import org.junit.Ignore; @@ -33,7 +34,7 @@ import static org.junit.Assert.fail; /** * Created by agibsonccc on 7/2/17. */ -public class KMeansTest { +public class KMeansTest extends BaseDL4JTest { @Test public void testKMeans() { diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/lsh/RandomProjectionLSHTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/lsh/RandomProjectionLSHTest.java index 771fd2e8f..be148c699 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/lsh/RandomProjectionLSHTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/lsh/RandomProjectionLSHTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.clustering.lsh; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.junit.After; import org.junit.Before; import org.junit.Ignore; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class RandomProjectionLSHTest { +public class RandomProjectionLSHTest extends BaseDL4JTest { int hashLength = 31; int numTables = 2; diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/quadtree/QuadTreeTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/quadtree/QuadTreeTest.java index cf193246f..aa0e4db40 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/quadtree/QuadTreeTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/quadtree/QuadTreeTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.clustering.quadtree; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.junit.Test; import org.nd4j.linalg.api.ndarray.INDArray; import org.nd4j.linalg.factory.Nd4j; @@ -26,7 +27,7 @@ import static org.junit.Assert.assertTrue; /** * Created by agibsonccc on 1/2/15. */ -public class QuadTreeTest { +public class QuadTreeTest extends BaseDL4JTest { @Test public void testQuadTree() { diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPTreeTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPTreeTest.java index 61a78efeb..30f4a841e 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPTreeTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPTreeTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.clustering.randomprojection; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.deeplearning4j.datasets.iterator.impl.MnistDataSetIterator; import org.junit.Before; import org.junit.Test; @@ -31,7 +32,7 @@ import java.util.List; import static org.junit.Assert.*; -public class RPTreeTest { +public class RPTreeTest extends BaseDL4JTest { @Before public void setUp() { diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPUtilsTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPUtilsTest.java index 35be3538c..96fbabd41 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPUtilsTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/randomprojection/RPUtilsTest.java @@ -16,13 +16,14 @@ package org.deeplearning4j.clustering.randomprojection; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.junit.Test; import org.nd4j.linalg.api.ndarray.INDArray; import org.nd4j.linalg.factory.Nd4j; import static org.junit.Assert.assertEquals; -public class RPUtilsTest { +public class RPUtilsTest extends BaseDL4JTest { @Test public void testDistanceComputeBatch() { diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/sptree/SPTreeTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/sptree/SPTreeTest.java index 0bd895224..03ad90748 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/sptree/SPTreeTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/sptree/SPTreeTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.clustering.sptree; import com.google.common.util.concurrent.AtomicDouble; import org.apache.commons.lang3.time.StopWatch; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -33,7 +34,7 @@ import static org.junit.Assert.*; /** * @author Adam Gibson */ -public class SPTreeTest { +public class SPTreeTest extends BaseDL4JTest { @Before public void setUp() { diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VPTreeSerializationTests.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VPTreeSerializationTests.java index 6354779ed..12180a978 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VPTreeSerializationTests.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VPTreeSerializationTests.java @@ -19,6 +19,7 @@ package org.deeplearning4j.clustering.vptree; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.apache.commons.lang3.SerializationUtils; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.deeplearning4j.clustering.sptree.DataPoint; import org.junit.Ignore; import org.junit.Test; @@ -36,7 +37,7 @@ import static org.junit.Assert.assertTrue; * @author raver119@gmail.com */ @Slf4j -public class VPTreeSerializationTests { +public class VPTreeSerializationTests extends BaseDL4JTest { @Test public void testSerialization_1() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VpTreeNodeTest.java b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VpTreeNodeTest.java index 94444c219..76658438a 100644 --- a/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VpTreeNodeTest.java +++ b/deeplearning4j/deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/test/java/org/deeplearning4j/clustering/vptree/VpTreeNodeTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.clustering.vptree; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.apache.commons.lang3.ArrayUtils; +import org.deeplearning4j.clustering.BaseDL4JTest; import org.deeplearning4j.clustering.sptree.DataPoint; import org.joda.time.Duration; import org.junit.BeforeClass; @@ -40,7 +41,7 @@ import static org.junit.Assert.*; * @author Anatoly Borisov */ @Slf4j -public class VpTreeNodeTest { +public class VpTreeNodeTest extends BaseDL4JTest { private static class DistIndex implements Comparable { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/BaseDL4JTest.java new file mode 100644 index 000000000..05d0957fb --- /dev/null +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/UITest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/UITest.java index d90742f9e..54dd0f1cd 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/UITest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/UITest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer; import org.deeplearning4j.models.embeddings.wordvectors.WordVectors; import org.deeplearning4j.models.word2vec.Word2Vec; @@ -38,7 +39,7 @@ import java.util.ArrayList; * Created by Alex on 10/01/2017. */ @Ignore -public class UITest { +public class UITest extends BaseDL4JTest { @Test public void testPosting() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/WordVectorSerializerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/WordVectorSerializerTest.java index 89cb64fef..4064c7b80 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/WordVectorSerializerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/WordVectorSerializerTest.java @@ -22,6 +22,7 @@ import lombok.val; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang3.RandomUtils; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -67,7 +68,7 @@ import static org.junit.Assert.*; * @author jeffreytang * @author raver119@gmail.com */ -public class WordVectorSerializerTest { +public class WordVectorSerializerTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/embeddings/loader/VectorsConfigurationTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/embeddings/loader/VectorsConfigurationTest.java index 1d744c23e..1546ead8f 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/embeddings/loader/VectorsConfigurationTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/embeddings/loader/VectorsConfigurationTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.embeddings.loader; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.models.word2vec.Word2Vec; import org.deeplearning4j.text.sentenceiterator.SentenceIterator; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals; /** * Created by fartovii on 21.11.15. */ -public class VectorsConfigurationTest { +public class VectorsConfigurationTest extends BaseDL4JTest { protected static final Logger log = LoggerFactory.getLogger(VectorsConfigurationTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTests.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTests.java index 3908817c2..61e31b3c7 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTests.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTests.java @@ -21,6 +21,7 @@ import com.google.common.primitives.Ints; import lombok.val; import net.didion.jwnl.data.Word; import org.apache.commons.io.FileUtils; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.inmemory.InMemoryLookupTable; import org.deeplearning4j.models.embeddings.loader.VectorsConfiguration; import org.deeplearning4j.models.word2vec.wordstore.inmemory.AbstractCache; @@ -57,7 +58,7 @@ import static org.junit.Assert.*; /** * @author jeffreytang */ -public class Word2VecTests { +public class Word2VecTests extends BaseDL4JTest { private static final Logger log = LoggerFactory.getLogger(Word2VecTests.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecIteratorTest.java index ace0a59cb..f4f00ff70 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.word2vec.iterator; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -39,7 +40,7 @@ import static org.junit.Assert.assertNotEquals; /** * Created by agibsonccc on 3/5/15. */ -public class Word2VecIteratorTest { +public class Word2VecIteratorTest extends BaseDL4JTest { private Word2Vec vec; @Rule diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/SentenceIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/SentenceIteratorTest.java index dde11299c..b58788804 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/SentenceIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/SentenceIteratorTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.text.sentenceiterator; import org.apache.commons.io.FileUtils; +import org.deeplearning4j.BaseDL4JTest; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -33,7 +34,7 @@ import static org.junit.Assert.*; /** * Created by agibsonccc on 9/9/14. */ -public class SentenceIteratorTest { +public class SentenceIteratorTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/UimaResultSetIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/UimaResultSetIteratorTest.java index 45008108e..cc192061d 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/UimaResultSetIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/sentenceiterator/UimaResultSetIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Before; import org.junit.Test; @@ -28,7 +29,7 @@ import static org.mockito.Mockito.when; /** * @author Brad Heap nzv8fan@gmail.com */ -public class UimaResultSetIteratorTest { +public class UimaResultSetIteratorTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/preprocessor/StemmingPreprocessorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/preprocessor/StemmingPreprocessorTest.java index 6d26a92a9..ebb275165 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/preprocessor/StemmingPreprocessorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/preprocessor/StemmingPreprocessorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.tokenization.tokenizer.preprocessor; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -23,7 +24,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class StemmingPreprocessorTest { +public class StemmingPreprocessorTest extends BaseDL4JTest { @Test public void testPreProcess() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/PosUimaTokenizerFactoryTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/PosUimaTokenizerFactoryTest.java index 333bf6457..289811a67 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/PosUimaTokenizerFactoryTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/PosUimaTokenizerFactoryTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.tokenization.tokenizerfactory; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.tokenization.tokenizer.Tokenizer; import org.junit.Assert; import org.junit.Before; @@ -28,7 +29,7 @@ import java.util.List; /** * @author raver119@gmail.com */ -public class PosUimaTokenizerFactoryTest { +public class PosUimaTokenizerFactoryTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeParserTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeParserTest.java index 31a06afc7..d89848219 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeParserTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeParserTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.text.treeparser; import org.cleartk.syntax.constituent.type.TreebankNode; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.nn.layers.feedforward.autoencoder.recursive.Tree; import org.deeplearning4j.text.corpora.treeparser.TreeParser; import org.junit.Before; @@ -32,8 +33,7 @@ import static org.junit.Assert.assertEquals; * Basic Tree parser tests * @author Adam Gibson */ -public class TreeParserTest { - private static final Logger log = LoggerFactory.getLogger(TreeParserTest.class); +public class TreeParserTest extends BaseDL4JTest { private TreeParser parser; @Before diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeTransformerTests.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeTransformerTests.java index 480a51fc8..241a02127 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeTransformerTests.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/text/treeparser/TreeTransformerTests.java @@ -17,6 +17,7 @@ package org.deeplearning4j.text.treeparser; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.nn.layers.feedforward.autoencoder.recursive.Tree; import org.deeplearning4j.text.corpora.treeparser.BinarizeTreeTransformer; import org.deeplearning4j.text.corpora.treeparser.CollapseUnaries; @@ -34,7 +35,7 @@ import static org.junit.Assert.assertEquals; /** * Created by agibsonccc on 7/1/14. */ -public class TreeTransformerTests { +public class TreeTransformerTests extends BaseDL4JTest { private static final Logger log = LoggerFactory.getLogger(TreeTransformerTests.class); private TreeParser parser; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/util/ContextLabelTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/util/ContextLabelTest.java index 64c53b7ef..639c2b583 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/util/ContextLabelTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp-uima/src/test/java/org/deeplearning4j/util/ContextLabelTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.util; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.movingwindow.ContextLabelRetriever; import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory; import org.deeplearning4j.text.tokenization.tokenizerfactory.UimaTokenizerFactory; @@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals; /** * Basic test case for the context label test */ -public class ContextLabelTest { +public class ContextLabelTest extends BaseDL4JTest { private static final Logger log = LoggerFactory.getLogger(ContextLabelTest.class); private TokenizerFactory tokenizerFactory; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/BaseDL4JTest.java new file mode 100644 index 000000000..05d0957fb --- /dev/null +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/TsneTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/TsneTest.java index 4dc214a17..613090d8a 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/TsneTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/TsneTest.java @@ -44,7 +44,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; @Slf4j -public class TsneTest { +public class TsneTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/BagOfWordsVectorizerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/BagOfWordsVectorizerTest.java index 4e78bf0b3..2dd630171 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/BagOfWordsVectorizerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/BagOfWordsVectorizerTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.bagofwords.vectorizer; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -52,7 +53,7 @@ import static org.junit.Assume.assumeNotNull; *@author Adam Gibson */ @Slf4j -public class BagOfWordsVectorizerTest { +public class BagOfWordsVectorizerTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/TfidfVectorizerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/TfidfVectorizerTest.java index 1d65ce461..37b07d412 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/TfidfVectorizerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/bagofwords/vectorizer/TfidfVectorizerTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.bagofwords.vectorizer; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -48,7 +49,7 @@ import static org.junit.Assume.assumeNotNull; * @author Adam Gibson */ @Slf4j -public class TfidfVectorizerTest { +public class TfidfVectorizerTest extends BaseDL4JTest { @Rule public final TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestBertIterator.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestBertIterator.java index c8bc6167b..e85a60563 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestBertIterator.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestBertIterator.java @@ -16,6 +16,7 @@ package org.deeplearning4j.iterator; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.iterator.bert.BertMaskedLMMasker; import org.deeplearning4j.text.tokenization.tokenizerfactory.BertWordPieceTokenizerFactory; import org.junit.Test; @@ -41,7 +42,7 @@ import java.util.Random; import static org.junit.Assert.*; -public class TestBertIterator { +public class TestBertIterator extends BaseDL4JTest { private File pathToVocab = Resources.asFile("other/vocab.txt"); private static Charset c = StandardCharsets.UTF_8; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestCnnSentenceDataSetIterator.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestCnnSentenceDataSetIterator.java index 4a6a7ceba..4b01cdac4 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestCnnSentenceDataSetIterator.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/iterator/TestCnnSentenceDataSetIterator.java @@ -16,6 +16,7 @@ package org.deeplearning4j.iterator; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Before; import org.nd4j.linalg.api.buffer.DataType; import org.nd4j.linalg.io.ClassPathResource; @@ -37,7 +38,7 @@ import static org.junit.Assert.*; /** * Created by Alex on 28/01/2017. */ -public class TestCnnSentenceDataSetIterator { +public class TestCnnSentenceDataSetIterator extends BaseDL4JTest { @Before public void before(){ diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/inmemory/InMemoryLookupTableTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/inmemory/InMemoryLookupTableTest.java index 9340ec3da..d7a0b7934 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/inmemory/InMemoryLookupTableTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/inmemory/InMemoryLookupTableTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.models.embeddings.inmemory; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -41,7 +42,7 @@ import static org.junit.Assert.*; /** * @author raver119@gmail.com */ -public class InMemoryLookupTableTest { +public class InMemoryLookupTableTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/learner/elements/BatchSequenceTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/learner/elements/BatchSequenceTest.java deleted file mode 100644 index 036214af0..000000000 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/learner/elements/BatchSequenceTest.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015-2019 Skymind, Inc. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ******************************************************************************/ - -package org.deeplearning4j.models.embeddings.learner.elements; - -public class BatchSequenceTest { -} diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/reader/impl/FlatModelUtilsTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/reader/impl/FlatModelUtilsTest.java index 8d83cd360..620ad2c72 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/reader/impl/FlatModelUtilsTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/reader/impl/FlatModelUtilsTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.embeddings.reader.impl; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer; import org.deeplearning4j.models.embeddings.wordvectors.WordVectors; import org.deeplearning4j.models.word2vec.VocabWord; @@ -40,7 +41,7 @@ import static org.junit.Assert.assertEquals; * @author raver119@gmail.com */ @Ignore -public class FlatModelUtilsTest { +public class FlatModelUtilsTest extends BaseDL4JTest { private Word2Vec vec; private static final Logger log = LoggerFactory.getLogger(FlatModelUtilsTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/wordvectors/WordVectorsImplTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/wordvectors/WordVectorsImplTest.java index 60454763a..41536ff70 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/wordvectors/WordVectorsImplTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/embeddings/wordvectors/WordVectorsImplTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.models.embeddings.wordvectors; import com.google.common.collect.Lists; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.WeightLookupTable; import org.deeplearning4j.models.sequencevectors.sequence.SequenceElement; import org.deeplearning4j.models.word2vec.wordstore.VocabCache; @@ -29,7 +30,7 @@ import org.nd4j.linalg.factory.Nd4j; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; -public class WordVectorsImplTest { +public class WordVectorsImplTest extends BaseDL4JTest { private VocabCache vocabCache; private WeightLookupTable weightLookupTable; private WordVectorsImpl wordVectors; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/fasttext/FastTextTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/fasttext/FastTextTest.java index d9986165c..f13d5dea0 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/fasttext/FastTextTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/fasttext/FastTextTest.java @@ -1,6 +1,7 @@ package org.deeplearning4j.models.fasttext; import lombok.extern.slf4j.Slf4j; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.sentenceiterator.BasicLineIterator; import org.deeplearning4j.text.sentenceiterator.SentenceIterator; import org.junit.Ignore; @@ -19,7 +20,7 @@ import static org.junit.Assert.assertEquals; @Slf4j -public class FastTextTest { +public class FastTextTest extends BaseDL4JTest { private File inputFile = Resources.asFile("models/fasttext/data/labeled_data.txt"); private File modelFile = Resources.asFile("models/fasttext/supervised.model.bin"); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/AbstractCoOccurrencesTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/AbstractCoOccurrencesTest.java index a44cb4f32..b5f6be9a1 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/AbstractCoOccurrencesTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/AbstractCoOccurrencesTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.glove; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.models.sequencevectors.iterators.AbstractSequenceIterator; import org.deeplearning4j.models.sequencevectors.transformers.impl.SentenceTransformer; @@ -43,7 +44,7 @@ import static org.junit.Assert.assertNotEquals; /** * @author raver119@gmail.com */ -public class AbstractCoOccurrencesTest { +public class AbstractCoOccurrencesTest extends BaseDL4JTest { private static final Logger log = LoggerFactory.getLogger(AbstractCoOccurrencesTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/GloveTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/GloveTest.java index ab6625ce4..70aa916dc 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/GloveTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/GloveTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.glove; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer; import org.deeplearning4j.models.embeddings.wordvectors.WordVectors; @@ -43,7 +44,7 @@ import static org.junit.Assert.assertTrue; /** * Created by agibsonccc on 12/3/14. */ -public class GloveTest { +public class GloveTest extends BaseDL4JTest { private static final Logger log = LoggerFactory.getLogger(GloveTest.class); private Glove glove; private SentenceIterator iter; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/BinaryCoOccurrenceReaderTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/BinaryCoOccurrenceReaderTest.java index 1133cef23..7f357a901 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/BinaryCoOccurrenceReaderTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/BinaryCoOccurrenceReaderTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.glove.count; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.word2vec.Huffman; import org.deeplearning4j.models.word2vec.VocabWord; import org.deeplearning4j.models.word2vec.wordstore.VocabCache; @@ -32,7 +33,7 @@ import static org.junit.Assert.assertNotEquals; /** * Created by fartovii on 25.12.15. */ -public class BinaryCoOccurrenceReaderTest { +public class BinaryCoOccurrenceReaderTest extends BaseDL4JTest { private static final Logger log = LoggerFactory.getLogger(BinaryCoOccurrenceReaderTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/RoundCountTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/RoundCountTest.java index 77ae2313c..737533648 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/RoundCountTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/glove/count/RoundCountTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.glove.count; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Before; import org.junit.Test; @@ -24,7 +25,7 @@ import static org.junit.Assert.assertEquals; /** * Created by fartovii on 23.12.15. */ -public class RoundCountTest { +public class RoundCountTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/paragraphvectors/ParagraphVectorsTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/paragraphvectors/ParagraphVectorsTest.java index bd3933e40..4750e8bfb 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/paragraphvectors/ParagraphVectorsTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/paragraphvectors/ParagraphVectorsTest.java @@ -20,6 +20,7 @@ package org.deeplearning4j.models.paragraphvectors; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.learning.impl.elements.CBOW; import org.deeplearning4j.models.embeddings.reader.impl.FlatModelUtils; import org.deeplearning4j.models.sequencevectors.sequence.Sequence; @@ -76,7 +77,7 @@ import static org.junit.Assert.*; * Created by agibsonccc on 12/3/14. */ @Slf4j -public class ParagraphVectorsTest { +public class ParagraphVectorsTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/SequenceVectorsTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/SequenceVectorsTest.java index e32e10a36..06b66d812 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/SequenceVectorsTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/SequenceVectorsTest.java @@ -22,6 +22,7 @@ import lombok.Setter; import lombok.val; import org.datavec.api.records.reader.impl.csv.CSVRecordReader; import org.datavec.api.split.FileSplit; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.datavec.api.writable.Writable; import org.deeplearning4j.models.embeddings.WeightLookupTable; @@ -73,7 +74,7 @@ import static org.junit.Assert.*; * @author raver119@gmail.com */ @Ignore -public class SequenceVectorsTest { +public class SequenceVectorsTest extends BaseDL4JTest { protected static final Logger logger = LoggerFactory.getLogger(SequenceVectorsTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/PopularityWalkerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/PopularityWalkerTest.java index b59bbfd0e..b6ab0e6e8 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/PopularityWalkerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/PopularityWalkerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.sequencevectors.graph.walkers.impl; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.sequencevectors.graph.enums.NoEdgeHandling; import org.deeplearning4j.models.sequencevectors.graph.enums.PopularityMode; import org.deeplearning4j.models.sequencevectors.graph.enums.SpreadSpectrum; @@ -36,7 +37,7 @@ import static org.junit.Assert.assertTrue; /** * @author raver119@gmail.com */ -public class PopularityWalkerTest { +public class PopularityWalkerTest extends BaseDL4JTest { private static Graph graph; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/RandomWalkerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/RandomWalkerTest.java index 7e3e77629..1bfe47c41 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/RandomWalkerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/RandomWalkerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.sequencevectors.graph.walkers.impl; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.sequencevectors.graph.enums.NoEdgeHandling; import org.deeplearning4j.models.sequencevectors.graph.enums.WalkDirection; import org.deeplearning4j.models.sequencevectors.graph.exception.NoEdgesException; @@ -36,7 +37,7 @@ import static org.junit.Assert.*; /** * @author raver119@gmail.com */ -public class RandomWalkerTest { +public class RandomWalkerTest extends BaseDL4JTest { private static IGraph graph; private static IGraph graphBig; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/WeightedWalkerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/WeightedWalkerTest.java index 2eef6119b..47b63ea0a 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/WeightedWalkerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/graph/walkers/impl/WeightedWalkerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.sequencevectors.graph.walkers.impl; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.sequencevectors.graph.enums.NoEdgeHandling; import org.deeplearning4j.models.sequencevectors.graph.enums.WalkDirection; import org.deeplearning4j.models.sequencevectors.graph.primitives.Graph; @@ -32,7 +33,7 @@ import static org.junit.Assert.assertNotEquals; /** * @author raver119@gmail.com */ -public class WeightedWalkerTest { +public class WeightedWalkerTest extends BaseDL4JTest { private static Graph basicGraph; @Before diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/AbstractElementFactoryTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/AbstractElementFactoryTest.java index a432da8d9..5e00353d0 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/AbstractElementFactoryTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/AbstractElementFactoryTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.sequencevectors.serialization; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.word2vec.VocabWord; import org.junit.Before; import org.junit.Test; @@ -25,7 +26,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class AbstractElementFactoryTest { +public class AbstractElementFactoryTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/VocabWordFactoryTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/VocabWordFactoryTest.java index b5b912aef..f50297d92 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/VocabWordFactoryTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/VocabWordFactoryTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.sequencevectors.serialization; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.word2vec.VocabWord; import org.junit.Before; import org.junit.Test; @@ -25,7 +26,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class VocabWordFactoryTest { +public class VocabWordFactoryTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/WordVectorSerializerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/WordVectorSerializerTest.java index 2459b0739..8a39a7fe3 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/WordVectorSerializerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/serialization/WordVectorSerializerTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.models.sequencevectors.serialization; import lombok.val; import org.apache.commons.lang.StringUtils; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.WeightLookupTable; import org.deeplearning4j.models.embeddings.inmemory.InMemoryLookupTable; import org.deeplearning4j.models.embeddings.learning.impl.elements.CBOW; @@ -45,7 +46,7 @@ import java.util.Collections; import static org.junit.Assert.*; -public class WordVectorSerializerTest { +public class WordVectorSerializerTest extends BaseDL4JTest { private AbstractCache cache; @Rule diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/GraphTransformerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/GraphTransformerTest.java index f2df1bc73..5f84d819e 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/GraphTransformerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/GraphTransformerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.sequencevectors.transformers.impl; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.sequencevectors.graph.enums.NoEdgeHandling; import org.deeplearning4j.models.sequencevectors.graph.primitives.Graph; import org.deeplearning4j.models.sequencevectors.graph.primitives.IGraph; @@ -34,7 +35,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class GraphTransformerTest { +public class GraphTransformerTest extends BaseDL4JTest { private static IGraph graph; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/iterables/ParallelTransformerIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/iterables/ParallelTransformerIteratorTest.java index 79bf42487..c8674e630 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/iterables/ParallelTransformerIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/sequencevectors/transformers/impl/iterables/ParallelTransformerIteratorTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.models.sequencevectors.transformers.impl.iterables; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Ignore; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.models.sequencevectors.sequence.Sequence; @@ -46,7 +47,7 @@ import static org.junit.Assert.assertNotEquals; * @author raver119@gmail.com */ @Slf4j -public class ParallelTransformerIteratorTest { +public class ParallelTransformerIteratorTest extends BaseDL4JTest { private TokenizerFactory factory = new DefaultTokenizerFactory(); @Before diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTestsSmall.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTestsSmall.java index 0b5db821e..fc10a592a 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTestsSmall.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecTestsSmall.java @@ -18,6 +18,7 @@ package org.deeplearning4j.models.word2vec; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.conf.NeuralNetConfiguration; import org.deeplearning4j.nn.conf.layers.DenseLayer; @@ -52,7 +53,7 @@ import static org.junit.Assert.assertEquals; @Slf4j -public class Word2VecTestsSmall { +public class Word2VecTestsSmall extends BaseDL4JTest { WordVectors word2vec; @Before diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecVisualizationTests.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecVisualizationTests.java index 99ff58872..70eb46274 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecVisualizationTests.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/Word2VecVisualizationTests.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.word2vec; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer; import org.deeplearning4j.models.embeddings.wordvectors.WordVectors; import org.deeplearning4j.plot.BarnesHutTsne; @@ -30,7 +31,7 @@ import org.junit.Test; * @author raver119@gmail.com */ @Ignore -public class Word2VecVisualizationTests { +public class Word2VecVisualizationTests extends BaseDL4JTest { private static WordVectors vectors; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecDataSetIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecDataSetIteratorTest.java index 8486300cf..4a77d6807 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecDataSetIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/iterator/Word2VecDataSetIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.word2vec.iterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.models.embeddings.learning.impl.elements.CBOW; import org.deeplearning4j.models.embeddings.reader.impl.BasicModelUtils; @@ -44,7 +45,7 @@ import static org.junit.Assert.assertArrayEquals; /** * @author raver119@gmail.com */ -public class Word2VecDataSetIteratorTest { +public class Word2VecDataSetIteratorTest extends BaseDL4JTest { /** * Basically all we want from this test - being able to finish without exceptions. diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabConstructorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabConstructorTest.java index e79b91797..84b8d3c38 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabConstructorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabConstructorTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.models.word2vec.wordstore; import lombok.Getter; import lombok.Setter; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -50,7 +51,7 @@ import static org.junit.Assert.*; /** * @author raver119@gmail.com */ -public class VocabConstructorTest { +public class VocabConstructorTest extends BaseDL4JTest { protected static final Logger log = LoggerFactory.getLogger(VocabConstructorTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabularyHolderTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabularyHolderTest.java index 44797e4a2..55d993f5e 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabularyHolderTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/VocabularyHolderTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.models.word2vec.wordstore; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.word2vec.wordstore.inmemory.InMemoryLookupCache; import org.junit.Test; @@ -24,7 +25,7 @@ import static org.junit.Assert.assertEquals; /** * Created by fartovii on 08.11.15. */ -public class VocabularyHolderTest { +public class VocabularyHolderTest extends BaseDL4JTest { @Test public void testTransferBackToVocabCache() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/inmemory/AbstractCacheTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/inmemory/AbstractCacheTest.java index 995736848..8e434644f 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/inmemory/AbstractCacheTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/models/word2vec/wordstore/inmemory/AbstractCacheTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.models.word2vec.wordstore.inmemory; import com.google.gson.JsonObject; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.sequencevectors.serialization.ExtVocabWord; import org.deeplearning4j.models.word2vec.Huffman; import org.deeplearning4j.models.word2vec.VocabWord; @@ -33,7 +34,7 @@ import static org.junit.Assert.*; * Created by fartovii on 10.12.15. */ @Slf4j -public class AbstractCacheTest { +public class AbstractCacheTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/AsyncLabelAwareIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/AsyncLabelAwareIteratorTest.java index 838cd51b8..7c8ea3ba7 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/AsyncLabelAwareIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/AsyncLabelAwareIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.documentiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.text.sentenceiterator.BasicLineIterator; import org.deeplearning4j.text.sentenceiterator.SentenceIterator; @@ -27,7 +28,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class AsyncLabelAwareIteratorTest { +public class AsyncLabelAwareIteratorTest extends BaseDL4JTest { @Test public void nextDocument() throws Exception { SentenceIterator sentence = new BasicLineIterator(Resources.asFile("big/raw_sentences.txt")); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/BasicLabelAwareIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/BasicLabelAwareIteratorTest.java index 67ab54ed0..1696226d3 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/BasicLabelAwareIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/BasicLabelAwareIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.documentiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.text.sentenceiterator.BasicLineIterator; import org.deeplearning4j.text.sentenceiterator.SentenceIterator; @@ -30,7 +31,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class BasicLabelAwareIteratorTest { +public class BasicLabelAwareIteratorTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/DefaultDocumentIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/DefaultDocumentIteratorTest.java index 5aa3c892e..13070b790 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/DefaultDocumentIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/DefaultDocumentIteratorTest.java @@ -16,13 +16,12 @@ package org.deeplearning4j.text.documentiterator; -import org.nd4j.linalg.io.ClassPathResource; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.tokenization.tokenizer.Tokenizer; import org.deeplearning4j.text.tokenization.tokenizerfactory.DefaultTokenizerFactory; import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory; import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.nd4j.linalg.io.ClassPathResource; import java.io.File; import java.io.InputStream; @@ -32,9 +31,7 @@ import static org.junit.Assert.assertEquals; /** * Created by agibsonccc on 9/29/14. */ -public class DefaultDocumentIteratorTest { - - private static final Logger log = LoggerFactory.getLogger(DefaultDocumentIteratorTest.class); +public class DefaultDocumentIteratorTest extends BaseDL4JTest { @Test public void testDocumentIterator() throws Exception { @@ -57,9 +54,5 @@ public class DefaultDocumentIteratorTest { doc.close(); - - - } - } diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileDocumentIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileDocumentIteratorTest.java index 1bd2a10d8..ae7bd1271 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileDocumentIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileDocumentIteratorTest.java @@ -20,6 +20,7 @@ package org.deeplearning4j.text.documentiterator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -44,7 +45,7 @@ import static org.junit.Assert.assertTrue; */ @Slf4j @Ignore -public class FileDocumentIteratorTest { +public class FileDocumentIteratorTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileLabelAwareIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileLabelAwareIteratorTest.java index a17a1ddc2..228a5eaaf 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileLabelAwareIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FileLabelAwareIteratorTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.text.documentiterator; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -30,7 +31,7 @@ import static org.junit.Assert.*; /** * Created by raver119 on 03.01.16. */ -public class FileLabelAwareIteratorTest { +public class FileLabelAwareIteratorTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FilenamesLabelAwareIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FilenamesLabelAwareIteratorTest.java index 01c386362..c0a962c8f 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FilenamesLabelAwareIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/FilenamesLabelAwareIteratorTest.java @@ -17,6 +17,7 @@ package org.deeplearning4j.text.documentiterator; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.nd4j.linalg.io.ClassPathResource; @@ -34,7 +35,7 @@ import static org.junit.Assert.assertTrue; /** * @author raver119@gmail.com */ -public class FilenamesLabelAwareIteratorTest { +public class FilenamesLabelAwareIteratorTest extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/LabelsSourceTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/LabelsSourceTest.java index 1f8200afe..54d03a69d 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/LabelsSourceTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/documentiterator/LabelsSourceTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.documentiterator; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Before; import org.junit.Test; @@ -27,7 +28,7 @@ import static org.junit.Assert.assertEquals; /** * Created by raver on 26.11.2015. */ -public class LabelsSourceTest { +public class LabelsSourceTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/AggregatingSentenceIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/AggregatingSentenceIteratorTest.java index c884f3a40..cd6fe3449 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/AggregatingSentenceIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/AggregatingSentenceIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.junit.Test; import org.nd4j.resources.Resources; @@ -27,7 +28,7 @@ import static org.junit.Assert.assertEquals; /** * Created by fartovii on 01.12.15. */ -public class AggregatingSentenceIteratorTest { +public class AggregatingSentenceIteratorTest extends BaseDL4JTest { @Test public void testHasNext() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicLineIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicLineIteratorTest.java index 5334e9140..e6aaa338e 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicLineIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicLineIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.junit.Before; import org.junit.Test; @@ -29,7 +30,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class BasicLineIteratorTest { +public class BasicLineIteratorTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicResultSetIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicResultSetIteratorTest.java index 0b4d2735e..f170858c5 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicResultSetIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/BasicResultSetIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; @@ -27,7 +28,7 @@ import static org.junit.Assert.assertEquals; /** * @author Brad Heap nzv8fan@gmail.com */ -public class BasicResultSetIteratorTest { +public class BasicResultSetIteratorTest extends BaseDL4JTest { @Before public void setUp() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/MutipleEpochsSentenceIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/MutipleEpochsSentenceIteratorTest.java index fc842e12a..b187caf8d 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/MutipleEpochsSentenceIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/MutipleEpochsSentenceIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.junit.Test; import org.nd4j.resources.Resources; @@ -25,7 +26,7 @@ import static org.junit.Assert.assertEquals; /** * @author raver119@gmail.com */ -public class MutipleEpochsSentenceIteratorTest { +public class MutipleEpochsSentenceIteratorTest extends BaseDL4JTest { @Test public void hasNext() throws Exception { SentenceIterator iterator = new MutipleEpochsSentenceIterator( diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/PrefetchingSentenceIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/PrefetchingSentenceIteratorTest.java index 2619cdd69..414f1454b 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/PrefetchingSentenceIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/PrefetchingSentenceIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.junit.Test; import org.nd4j.resources.Resources; @@ -30,7 +31,7 @@ import static org.junit.Assert.assertTrue; /** * @author raver119@gmail.com */ -public class PrefetchingSentenceIteratorTest { +public class PrefetchingSentenceIteratorTest extends BaseDL4JTest { protected static final Logger log = LoggerFactory.getLogger(PrefetchingSentenceIteratorTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/StreamLineIteratorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/StreamLineIteratorTest.java index 8fa0bca52..954519ce6 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/StreamLineIteratorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/sentenceiterator/StreamLineIteratorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.sentenceiterator; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.junit.Test; import org.slf4j.Logger; @@ -30,7 +31,7 @@ import static org.junit.Assert.assertNotEquals; /** * Created by fartovii on 09.11.15. */ -public class StreamLineIteratorTest { +public class StreamLineIteratorTest extends BaseDL4JTest { protected Logger logger = LoggerFactory.getLogger(StreamLineIteratorTest.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/BertWordPieceTokenizerTests.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/BertWordPieceTokenizerTests.java index fb7cd684e..e531f9a0a 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/BertWordPieceTokenizerTests.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/BertWordPieceTokenizerTests.java @@ -18,6 +18,7 @@ package org.deeplearning4j.text.tokenization.tokenizer; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.tokenization.tokenizer.preprocessor.LowCasePreProcessor; import org.deeplearning4j.text.tokenization.tokenizerfactory.BertWordPieceTokenizerFactory; import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory; @@ -39,7 +40,7 @@ import java.util.List; import static org.junit.Assert.*; @Slf4j -public class BertWordPieceTokenizerTests { +public class BertWordPieceTokenizerTests extends BaseDL4JTest { private File pathToVocab = Resources.asFile("other/vocab.txt"); private Charset c = StandardCharsets.UTF_8; diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/DefaulTokenizerTests.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/DefaulTokenizerTests.java index bc1fbf047..ecd64df36 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/DefaulTokenizerTests.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/DefaulTokenizerTests.java @@ -17,6 +17,7 @@ package org.deeplearning4j.text.tokenization.tokenizer; import org.apache.commons.io.FileUtils; +import org.deeplearning4j.BaseDL4JTest; import org.nd4j.linalg.io.ClassPathResource; import org.deeplearning4j.text.tokenization.tokenizerfactory.DefaultTokenizerFactory; import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory; @@ -29,7 +30,7 @@ import java.io.ByteArrayInputStream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class DefaulTokenizerTests { +public class DefaulTokenizerTests extends BaseDL4JTest { protected static final Logger log = LoggerFactory.getLogger(DefaulTokenizerTests.class); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/NGramTokenizerTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/NGramTokenizerTest.java index d650bb93d..6b1ad92ec 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/NGramTokenizerTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/NGramTokenizerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.tokenization.tokenizer; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.tokenization.tokenizerfactory.DefaultTokenizerFactory; import org.deeplearning4j.text.tokenization.tokenizerfactory.NGramTokenizerFactory; import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory; @@ -30,7 +31,7 @@ import static org.junit.Assert.assertTrue; /** * @author sonali */ -public class NGramTokenizerTest { +public class NGramTokenizerTest extends BaseDL4JTest { @Test public void testNGramTokenizer() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/tokenprepreprocessor/EndingPreProcessorTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/tokenprepreprocessor/EndingPreProcessorTest.java index 7e346f435..f58637b0a 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/tokenprepreprocessor/EndingPreProcessorTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizer/tokenprepreprocessor/EndingPreProcessorTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.text.tokenization.tokenizer.tokenprepreprocessor; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.tokenization.tokenizer.TokenPreProcess; import org.deeplearning4j.text.tokenization.tokenizer.preprocessor.EndingPreProcessor; import org.junit.Test; @@ -25,7 +26,7 @@ import static org.junit.Assert.assertEquals; /** * Created by agibsonccc on 10/18/14. */ -public class EndingPreProcessorTest { +public class EndingPreProcessorTest extends BaseDL4JTest { @Test public void testPreProcessor() { TokenPreProcess preProcess = new EndingPreProcessor(); diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/NGramTokenizerFactoryTest.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/NGramTokenizerFactoryTest.java index 1fe9cc746..c43c98825 100644 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/NGramTokenizerFactoryTest.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/text/tokenization/tokenizerfactory/NGramTokenizerFactoryTest.java @@ -18,13 +18,14 @@ package org.deeplearning4j.text.tokenization.tokenizerfactory; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.text.tokenization.tokenizer.preprocessor.CommonPreprocessor; import org.junit.Test; import static org.junit.Assert.*; @Slf4j -public class NGramTokenizerFactoryTest { +public class NGramTokenizerFactoryTest extends BaseDL4JTest { @Test public void testEmptyLines_1() throws Exception { diff --git a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/wordstore/InMemoryVocabStoreTests.java b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/wordstore/InMemoryVocabStoreTests.java index 296a5d04a..7068d9f4d 100755 --- a/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/wordstore/InMemoryVocabStoreTests.java +++ b/deeplearning4j/deeplearning4j-nlp-parent/deeplearning4j-nlp/src/test/java/org/deeplearning4j/wordstore/InMemoryVocabStoreTests.java @@ -16,6 +16,7 @@ package org.deeplearning4j.wordstore; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.models.word2vec.VocabWord; import org.deeplearning4j.models.word2vec.wordstore.VocabCache; import org.deeplearning4j.models.word2vec.wordstore.inmemory.InMemoryLookupCache; @@ -28,8 +29,7 @@ import static org.junit.Assert.*; /** * Created by agibsonccc on 8/31/14. */ -public class InMemoryVocabStoreTests { - private static final Logger log = LoggerFactory.getLogger(InMemoryVocabStoreTests.class); +public class InMemoryVocabStoreTests extends BaseDL4JTest { @Test public void testStorePut() { @@ -40,7 +40,4 @@ public class InMemoryVocabStoreTests { assertEquals(1, cache.numWords()); assertEquals("hello", cache.wordAtIndex(0)); } - - - } diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/ArgmaxAdapterTest.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/ArgmaxAdapterTest.java index d1808ad63..8c7f20cd2 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/ArgmaxAdapterTest.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/ArgmaxAdapterTest.java @@ -17,12 +17,13 @@ package org.deeplearning4j.nn.adapters; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Test; import org.nd4j.linalg.factory.Nd4j; import static org.junit.Assert.*; -public class ArgmaxAdapterTest { +public class ArgmaxAdapterTest extends BaseDL4JTest { @Test public void testSoftmax_2D_1() { val in = new double[][] {{1, 3, 2}, { 4, 5, 6}}; diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/Regression2dAdapterTest.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/Regression2dAdapterTest.java index 25352ac5a..ab81aceb1 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/Regression2dAdapterTest.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/adapters/Regression2dAdapterTest.java @@ -17,13 +17,14 @@ package org.deeplearning4j.nn.adapters; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Test; import org.nd4j.linalg.factory.Nd4j; import org.nd4j.linalg.util.ArrayUtil; import static org.junit.Assert.*; -public class Regression2dAdapterTest { +public class Regression2dAdapterTest extends BaseDL4JTest { @Test public void testRegressionAdapter_2D_1() throws Exception { val in = new double[][] {{1, 2, 3}, { 4, 5, 6}}; diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/recurrent/MaskZeroLayerTest.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/recurrent/MaskZeroLayerTest.java index 40310d58d..d13545694 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/recurrent/MaskZeroLayerTest.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/recurrent/MaskZeroLayerTest.java @@ -16,6 +16,7 @@ package org.deeplearning4j.nn.layers.recurrent; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.TestUtils; import org.deeplearning4j.nn.api.Layer; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; @@ -36,7 +37,7 @@ import java.util.Collections; import static org.junit.Assert.assertEquals; -public class MaskZeroLayerTest { +public class MaskZeroLayerTest extends BaseDL4JTest { @Test public void activate() { diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/samediff/SameDiffCustomLayerTests.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/samediff/SameDiffCustomLayerTests.java index b00a0db3a..e672c3b0d 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/samediff/SameDiffCustomLayerTests.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/nn/layers/samediff/SameDiffCustomLayerTests.java @@ -17,6 +17,7 @@ package org.deeplearning4j.nn.layers.samediff; import lombok.extern.slf4j.Slf4j; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.nn.conf.ComputationGraphConfiguration; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.conf.NeuralNetConfiguration; @@ -46,7 +47,7 @@ import org.nd4j.nativeblas.NativeOpsHolder; import java.util.Map; @Slf4j -public class SameDiffCustomLayerTests { +public class SameDiffCustomLayerTests extends BaseDL4JTest { private DataType initialType; @Rule diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/EncodedGradientsAccumulatorTest.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/EncodedGradientsAccumulatorTest.java index c6d995410..a501d4e1f 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/EncodedGradientsAccumulatorTest.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/EncodedGradientsAccumulatorTest.java @@ -18,6 +18,7 @@ package org.deeplearning4j.optimize.solvers.accumulation; import lombok.extern.slf4j.Slf4j; import lombok.val; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.optimize.solvers.accumulation.encoding.threshold.FixedThresholdAlgorithm; import org.junit.Test; import org.nd4j.linalg.api.ndarray.INDArray; @@ -31,7 +32,7 @@ import static org.junit.Assert.assertTrue; * @author raver119@gmail.com */ @Slf4j -public class EncodedGradientsAccumulatorTest { +public class EncodedGradientsAccumulatorTest extends BaseDL4JTest { /** * This test ensures, that memory amount assigned to buffer is enough for any number of updates diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/IndexedTailTest.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/IndexedTailTest.java index b1898f234..68de05ce5 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/IndexedTailTest.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/IndexedTailTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.optimize.solvers.accumulation; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.apache.commons.lang3.RandomUtils; +import org.deeplearning4j.BaseDL4JTest; import org.junit.Ignore; import org.junit.Test; import org.nd4j.linalg.factory.Nd4j; @@ -29,7 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger; import static org.junit.Assert.*; @Slf4j -public class IndexedTailTest { +public class IndexedTailTest extends BaseDL4JTest { @Test public void testDeltas_1() throws Exception { @@ -238,7 +239,7 @@ public class IndexedTailTest { val numReaders = 4; final val tail = new IndexedTail(numReaders); - val sums = new long[numReaders]; + final long[] sums = new long[numReaders]; val readers = new ArrayList(); for (int e = 0; e < numReaders; e++) { val f = e; @@ -293,7 +294,7 @@ public class IndexedTailTest { val numWriters = 4; final val tail = new IndexedTail(numReaders); - val sums = new long[numReaders]; + final long[] sums = new long[numReaders]; val readers = new ArrayList(); for (int e = 0; e < numReaders; e++) { val f = e; @@ -367,7 +368,7 @@ public class IndexedTailTest { val numWriters = 4; final val tail = new IndexedTail(numReaders, true, new long[]{5, 5}); - val sums = new long[numReaders]; + final long[] sums = new long[numReaders]; val readers = new ArrayList(); for (int e = 0; e < numReaders; e++) { val f = e; @@ -391,7 +392,7 @@ public class IndexedTailTest { readers.add(t); } - val sum = new AtomicInteger(0); + final AtomicInteger sum = new AtomicInteger(0); val writers = new ArrayList(); for (int e = 0; e < numWriters; e++) { val f = e; diff --git a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/SmartFancyBlockingQueueTest.java b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/SmartFancyBlockingQueueTest.java index fe3e96414..725a9db8a 100644 --- a/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/SmartFancyBlockingQueueTest.java +++ b/deeplearning4j/deeplearning4j-nn/src/test/java/org/deeplearning4j/optimize/solvers/accumulation/SmartFancyBlockingQueueTest.java @@ -19,6 +19,7 @@ package org.deeplearning4j.optimize.solvers.accumulation; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.apache.commons.lang3.RandomUtils; +import org.deeplearning4j.BaseDL4JTest; import org.deeplearning4j.util.ThreadUtils; import org.junit.Ignore; import org.junit.Test; @@ -33,7 +34,7 @@ import java.util.concurrent.LinkedBlockingQueue; import static org.junit.Assert.*; @Slf4j @Ignore("AB 2019/05/21 - Failing (stuck, causing timeouts) - Issue #7657") -public class SmartFancyBlockingQueueTest { +public class SmartFancyBlockingQueueTest extends BaseDL4JTest { @Test(timeout = 120000L) public void testSFBQ_1() throws Exception { val queue = new SmartFancyBlockingQueue(8, Nd4j.create(5, 5)); diff --git a/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/BaseDL4JTest.java new file mode 100644 index 000000000..8e087cc2f --- /dev/null +++ b/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j.parallelism.parameterserver; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/ParameterServerParallelWrapperTest.java b/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/ParameterServerParallelWrapperTest.java index f402c094b..07b5b41a7 100644 --- a/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/ParameterServerParallelWrapperTest.java +++ b/deeplearning4j/deeplearning4j-scaleout/deeplearning4j-scaleout-parallelwrapper-parameter-server/src/test/java/org/deeplearning4j/parallelism/parameterserver/ParameterServerParallelWrapperTest.java @@ -38,7 +38,7 @@ import org.nd4j.linalg.lossfunctions.LossFunctions; * Created by agibsonccc on 12/17/16. */ @Slf4j -public class ParameterServerParallelWrapperTest { +public class ParameterServerParallelWrapperTest extends BaseDL4JTest { @Test public void testWrapper() throws Exception { diff --git a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/BaseDL4JTest.java b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/BaseDL4JTest.java new file mode 100644 index 000000000..a0559f50e --- /dev/null +++ b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j.ui; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/TestStorageMetaData.java b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/TestStorageMetaData.java index 92fd2c3ab..9e51f59d0 100644 --- a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/TestStorageMetaData.java +++ b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/TestStorageMetaData.java @@ -27,7 +27,7 @@ import static org.junit.Assert.*; /** * Created by Alex on 07/10/2016. */ -public class TestStorageMetaData { +public class TestStorageMetaData extends BaseDL4JTest { @Test public void testStorageMetaData() { diff --git a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsClasses.java b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsClasses.java index 9616822df..8441fe2b7 100644 --- a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsClasses.java +++ b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsClasses.java @@ -16,6 +16,7 @@ package org.deeplearning4j.ui.stats; +import org.deeplearning4j.ui.BaseDL4JTest; import org.deeplearning4j.ui.stats.api.*; import org.deeplearning4j.ui.stats.impl.SbeStatsInitializationReport; import org.deeplearning4j.ui.stats.impl.SbeStatsReport; @@ -35,7 +36,7 @@ import static org.junit.Assert.*; /** * Created by Alex on 01/10/2016. */ -public class TestStatsClasses { +public class TestStatsClasses extends BaseDL4JTest { @Test public void testStatsInitializationReport() throws Exception { diff --git a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsListener.java b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsListener.java index 2bf9a80db..bd8f7128e 100644 --- a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsListener.java +++ b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestStatsListener.java @@ -24,6 +24,7 @@ import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.conf.NeuralNetConfiguration; import org.deeplearning4j.nn.conf.layers.OutputLayer; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; +import org.deeplearning4j.ui.BaseDL4JTest; import org.deeplearning4j.ui.storage.mapdb.MapDBStatsStorage; import org.junit.Test; import org.nd4j.linalg.activations.Activation; @@ -38,7 +39,7 @@ import static org.junit.Assert.assertNotNull; /** * Created by Alex on 07/10/2016. */ -public class TestStatsListener { +public class TestStatsListener extends BaseDL4JTest { @Test public void testListenerBasic() { diff --git a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestTransferStatsCollection.java b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestTransferStatsCollection.java index 9988c8126..09687b75a 100644 --- a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestTransferStatsCollection.java +++ b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/stats/TestTransferStatsCollection.java @@ -23,6 +23,7 @@ import org.deeplearning4j.nn.conf.layers.OutputLayer; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; import org.deeplearning4j.nn.transferlearning.FineTuneConfiguration; import org.deeplearning4j.nn.transferlearning.TransferLearning; +import org.deeplearning4j.ui.BaseDL4JTest; import org.deeplearning4j.ui.storage.FileStatsStorage; import org.junit.Rule; import org.junit.Test; @@ -39,7 +40,7 @@ import java.nio.file.Files; /** * Created by Alex on 07/04/2017. */ -public class TestTransferStatsCollection { +public class TestTransferStatsCollection extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/storage/TestStatsStorage.java b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/storage/TestStatsStorage.java index 052a8bc1a..1430e0c1b 100644 --- a/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/storage/TestStatsStorage.java +++ b/deeplearning4j/deeplearning4j-ui-parent/deeplearning4j-ui-model/src/test/java/org/deeplearning4j/ui/storage/TestStatsStorage.java @@ -23,6 +23,7 @@ import org.deeplearning4j.api.storage.Persistable; import org.deeplearning4j.api.storage.StatsStorage; import org.deeplearning4j.api.storage.StatsStorageEvent; import org.deeplearning4j.api.storage.StatsStorageListener; +import org.deeplearning4j.ui.BaseDL4JTest; import org.deeplearning4j.ui.stats.api.StatsInitializationReport; import org.deeplearning4j.ui.stats.api.StatsReport; import org.deeplearning4j.ui.stats.impl.SbeStatsInitializationReport; @@ -46,7 +47,7 @@ import static org.junit.Assert.*; /** * Created by Alex on 03/10/2016. */ -public class TestStatsStorage { +public class TestStatsStorage extends BaseDL4JTest { @Rule public final TemporaryFolder testDir = new TemporaryFolder(); diff --git a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/BaseDL4JTest.java b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/BaseDL4JTest.java new file mode 100644 index 000000000..9ead56a7e --- /dev/null +++ b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/BaseDL4JTest.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * Copyright (c) 2015-2018 Skymind, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package org.deeplearning4j.perf.listener; + +import lombok.extern.slf4j.Slf4j; +import org.bytedeco.javacpp.Pointer; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.nd4j.linalg.api.buffer.DataType; +import org.nd4j.linalg.api.memory.MemoryWorkspace; +import org.nd4j.linalg.api.ops.executioner.OpExecutioner; +import org.nd4j.linalg.factory.Nd4j; +import org.nd4j.linalg.profiler.ProfilerConfig; + +import java.lang.management.ManagementFactory; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +@Slf4j +public class BaseDL4JTest { + + @Rule + public TestName name = new TestName(); + + protected long startTime; + protected int threadCountBefore; + + /** + * Override this to set the profiling mode for the tests defined in the child class + */ + public OpExecutioner.ProfilingMode getProfilingMode(){ + return OpExecutioner.ProfilingMode.SCOPE_PANIC; + } + + /** + * Override this to set the datatype of the tests defined in the child class + */ + public DataType getDataType(){ + return DataType.DOUBLE; + } + + public DataType getDefaultFPDataType(){ + return getDataType(); + } + + @Before + public void beforeTest(){ + log.info("{}.{}", getClass().getSimpleName(), name.getMethodName()); + Nd4j.getExecutioner().setProfilingMode(getProfilingMode()); + Nd4j.getExecutioner().setProfilingConfig(ProfilerConfig.builder().build()); + Nd4j.setDefaultDataTypes(getDataType(), getDefaultFPDataType()); + startTime = System.currentTimeMillis(); + threadCountBefore = ManagementFactory.getThreadMXBean().getThreadCount(); + } + + @After + public void afterTest(){ + //Attempt to keep workspaces isolated between tests + Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); + MemoryWorkspace currWS = Nd4j.getMemoryManager().getCurrentWorkspace(); + Nd4j.getMemoryManager().setCurrentWorkspace(null); + if(currWS != null){ + //Not really safe to continue testing under this situation... other tests will likely fail with obscure + // errors that are hard to track back to this + log.error("Open workspace leaked from test! Exiting - {}, isOpen = {} - {}", currWS.getId(), currWS.isScopeActive(), currWS); + System.exit(1); + } + + StringBuilder sb = new StringBuilder(); + long maxPhys = Pointer.maxPhysicalBytes(); + long maxBytes = Pointer.maxBytes(); + long currPhys = Pointer.physicalBytes(); + long currBytes = Pointer.totalBytes(); + + long jvmTotal = Runtime.getRuntime().totalMemory(); + long jvmMax = Runtime.getRuntime().maxMemory(); + + int threadsAfter = ManagementFactory.getThreadMXBean().getThreadCount(); + + long duration = System.currentTimeMillis() - startTime; + sb.append(getClass().getSimpleName()).append(".").append(name.getMethodName()) + .append(": ").append(duration).append(" ms") + .append(", threadCount: (").append(threadCountBefore).append("->").append(threadsAfter).append(")") + .append(", jvmTotal=").append(jvmTotal) + .append(", jvmMax=").append(jvmMax) + .append(", totalBytes=").append(currBytes).append(", maxBytes=").append(maxBytes) + .append(", currPhys=").append(currPhys).append(", maxPhys=").append(maxPhys); + + List ws = Nd4j.getWorkspaceManager().getAllWorkspacesForCurrentThread(); + if(ws != null && ws.size() > 0){ + long currSize = 0; + for(MemoryWorkspace w : ws){ + currSize += w.getCurrentSize(); + } + if(currSize > 0){ + sb.append(", threadWSSize=").append(currSize) + .append(" (").append(ws.size()).append(" WSs)"); + } + } + + + Properties p = Nd4j.getExecutioner().getEnvironmentInformation(); + Object o = p.get("cuda.devicesInformation"); + if(o instanceof List){ + List> l = (List>) o; + if(l.size() > 0) { + + sb.append(" [").append(l.size()) + .append(" GPUs: "); + + for (int i = 0; i < l.size(); i++) { + Map m = l.get(i); + if(i > 0) + sb.append(","); + sb.append("(").append(m.get("cuda.freeMemory")).append(" free, ") + .append(m.get("cuda.totalMemory")).append(" total)"); + } + sb.append("]"); + } + } + log.info(sb.toString()); + } +} diff --git a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/SystemPollingTest.java b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/SystemPollingTest.java index 3da5ce5f9..f781914ec 100644 --- a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/SystemPollingTest.java +++ b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/SystemPollingTest.java @@ -30,7 +30,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @Ignore("AB 2019/05/24 - Failing on CI - \"Could not initialize class oshi.jna.platform.linux.Libc\" - Issue #7657") -public class SystemPollingTest { +public class SystemPollingTest extends BaseDL4JTest { @Rule public TemporaryFolder tempDir = new TemporaryFolder(); diff --git a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestHardWareMetric.java b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestHardWareMetric.java index 17de883e1..19436ce9d 100644 --- a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestHardWareMetric.java +++ b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestHardWareMetric.java @@ -24,7 +24,7 @@ import static junit.framework.TestCase.assertNotNull; import static org.junit.Assert.assertEquals; @Ignore("AB 2019/05/24 - Failing on CI - \"Could not initialize class oshi.jna.platform.linux.Libc\" - Issue #7657") -public class TestHardWareMetric { +public class TestHardWareMetric extends BaseDL4JTest { @Test public void testHardwareMetric() { diff --git a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestSystemInfoPrintListener.java b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestSystemInfoPrintListener.java index 638cf3697..69edb363b 100644 --- a/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestSystemInfoPrintListener.java +++ b/deeplearning4j/dl4j-perf/src/test/java/org/deeplearning4j/perf/listener/TestSystemInfoPrintListener.java @@ -33,7 +33,7 @@ import java.io.File; import static org.junit.Assert.assertEquals; @Ignore("AB 2019/05/24 - Failing on CI - \"Could not initialize class oshi.jna.platform.linux.Libc\" - Issue #7657") -public class TestSystemInfoPrintListener { +public class TestSystemInfoPrintListener extends BaseDL4JTest { @Rule public TemporaryFolder testDir = new TemporaryFolder(); diff --git a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/opvalidation/LayerOpValidation.java b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/opvalidation/LayerOpValidation.java index b2974e854..c3c356d14 100644 --- a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/opvalidation/LayerOpValidation.java +++ b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/opvalidation/LayerOpValidation.java @@ -867,9 +867,9 @@ public class LayerOpValidation extends BaseOpValidation { int kD = 2; int mb = 3; - int imgH = 8; - int imgW = 8; - int imgD = 8; + int imgH = 5; + int imgW = 5; + int imgD = 5; SameDiff sd = SameDiff.create(); INDArray inArr = Nd4j.rand(new long[]{mb, nIn, imgD, imgH, imgW}); @@ -891,7 +891,7 @@ public class LayerOpValidation extends BaseOpValidation { INDArray outArr = sd.execAndEndResult(); val outShape = outArr.shape(); // oH = (iH - (kH + (kH-1)*(dH-1)) + 2*pH)/sH + 1; - assertArrayEquals(new long[]{mb, nIn, 7, 7, 7}, outShape); + assertArrayEquals(new long[]{mb, nIn, 4, 4, 4}, outShape); SDVariable loss = out.std(true); //Gradient check: @@ -976,9 +976,9 @@ public class LayerOpValidation extends BaseOpValidation { int kD = 2; int mb = 3; - int imgH = 8; - int imgW = 8; - int imgT = 8; + int imgH = 5; + int imgW = 5; + int imgT = 5; SameDiff sd = SameDiff.create(); INDArray wArr = Nd4j.rand(new int[]{kD, kH, kW, nIn, nOut}); @@ -1005,7 +1005,7 @@ public class LayerOpValidation extends BaseOpValidation { //Expected output size, NOT same mode: out = (in - k)/d + 1 = (28-2+0)/1+1 = 27 //Expected output size, WITH same mode: out = in/stride val outShape = outArr.shape(); - assertArrayEquals(new long[]{mb, nOut, 8, 8, 8}, outShape); + assertArrayEquals(new long[]{mb, nOut, 5, 5, 5}, outShape); SDVariable loss = out.std(true); //Gradient check: diff --git a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/samediff/SameDiffTrainingTest.java b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/samediff/SameDiffTrainingTest.java index 1526381f2..04d6e9551 100644 --- a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/samediff/SameDiffTrainingTest.java +++ b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/samediff/SameDiffTrainingTest.java @@ -54,8 +54,7 @@ public class SameDiffTrainingTest extends BaseNd4jTest { std.fit(iter); iter.setPreProcessor(std); -// for (String u : new String[]{"sgd", "adam", "nesterov", "adamax", "amsgrad"}) { - for (String u : new String[]{"adam", "nesterov", "adamax", "amsgrad"}) { + for (String u : new String[]{"adam", "nesterov"}) { Nd4j.getRandom().setSeed(12345); log.info("Starting: " + u); SameDiff sd = SameDiff.create(); @@ -88,12 +87,6 @@ public class SameDiffTrainingTest extends BaseNd4jTest { case "nesterov": updater = new Nesterovs(1e-1); break; - case "adamax": - updater = new AdaMax(1e-2); - break; - case "amsgrad": - updater = new AMSGrad(1e-2); - break; default: throw new RuntimeException(); } @@ -109,7 +102,7 @@ public class SameDiffTrainingTest extends BaseNd4jTest { sd.setListeners(new ScoreListener(1)); - sd.fit(iter, 100); + sd.fit(iter, 50); Evaluation e = new Evaluation(); Map> evalMap = new HashMap<>(); @@ -120,7 +113,7 @@ public class SameDiffTrainingTest extends BaseNd4jTest { System.out.println(e.stats()); double acc = e.accuracy(); - assertTrue(u + " - " + acc, acc >= 0.8); + assertTrue(u + " - " + acc, acc >= 0.75); } } diff --git a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/Nd4jTestsC.java b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/Nd4jTestsC.java index f1b6fc61e..076eec784 100644 --- a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/Nd4jTestsC.java +++ b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/Nd4jTestsC.java @@ -7376,7 +7376,7 @@ public class Nd4jTestsC extends BaseNd4jTest { } } - int iterations = 100; + int iterations = 20; val timeStart = System.nanoTime(); for (int e = 0; e < iterations; e++) { try (val ws = Nd4j.getWorkspaceManager().getAndActivateWorkspace(wsconf, wsName)) { diff --git a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/api/indexing/IndexingTestsC.java b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/api/indexing/IndexingTestsC.java index 77a7cd681..d80d46d48 100644 --- a/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/api/indexing/IndexingTestsC.java +++ b/nd4j/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/linalg/api/indexing/IndexingTestsC.java @@ -350,7 +350,7 @@ public class IndexingTestsC extends BaseNd4jTest { //Note: 888,880 total test cases here - randomly run a fraction of the tests to minimize runtime // whilst still maintaining good coverage Random r = new Random(12345); - double fractionRun = 0.2; + double fractionRun = 0.01; long totalTestCaseCount = 0; for( int rank=1; rank<=5; rank++ ){