org.nd4j.linalg.learning.config.RmsProp Java Examples
The following examples show how to use
org.nd4j.linalg.learning.config.RmsProp.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 6 votes |
@Test public void testSmallAmountOfData() { //Idea: Test spark training where some executors don't get any data //in this case: by having fewer examples (2 DataSets) than executors (local[*]) MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().updater(new RmsProp()) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).list() .layer(0, new org.deeplearning4j.nn.conf.layers.DenseLayer.Builder().nIn(nIn).nOut(3) .activation(Activation.TANH).build()) .layer(1, new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MSE).nIn(3).nOut(nOut).activation(Activation.SOFTMAX) .build()) .build(); SparkDl4jMultiLayer sparkNet = new SparkDl4jMultiLayer(sc, conf, new ParameterAveragingTrainingMaster(true, numExecutors(), 1, 10, 1, 0)); Nd4j.getRandom().setSeed(12345); DataSet d1 = new DataSet(Nd4j.rand(1, nIn), Nd4j.rand(1, nOut)); DataSet d2 = new DataSet(Nd4j.rand(1, nIn), Nd4j.rand(1, nOut)); JavaRDD<DataSet> rddData = sc.parallelize(Arrays.asList(d1, d2)); sparkNet.fit(rddData); }
Example #2
Source File: Gan4Exemple.java From dl4j-tutorials with MIT License | 5 votes |
private static void discInit() throws IOException { discUpdater = new RmsProp(drate); MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() .seed(1234) .updater(new RmsProp(1e-3)) .weightInit(WeightInit.XAVIER) .list() .layer(new DenseLayer.Builder() .nIn(width * height) .nOut(1024) .activation(Activation.RELU) .build()) .layer(new DenseLayer.Builder() .nIn(1024) .nOut(512) .activation(Activation.RELU) .build()) .layer(new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .nIn(512) .nOut(2) .activation(Activation.SOFTMAX) .build()) .setInputType(InputType.feedForward(width * height)) .backprop(true).pretrain(false).build(); discNet = new MultiLayerNetwork(conf); discNet.init(); discNet.setListeners(new ScoreIterationListener(10)); }
Example #3
Source File: RmsPropSpace.java From deeplearning4j with Apache License 2.0 | 5 votes |
@Override public IUpdater getValue(double[] parameterValues) { double lr = learningRate == null ? RmsProp.DEFAULT_RMSPROP_LEARNING_RATE : learningRate.getValue(parameterValues); ISchedule lrS = learningRateSchedule == null ? null : learningRateSchedule.getValue(parameterValues); if(lrS == null){ return new RmsProp(lr); } else { return new RmsProp(lrS); } }
Example #4
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 5 votes |
@Test @Ignore //Ignored 2019/04/09 - low priority: https://github.com/deeplearning4j/deeplearning4j/issues/6656 public void testVaePretrainSimpleCG() { //Simple sanity check on pretraining int nIn = 8; Nd4j.getRandom().setSeed(12345); ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder().seed(12345).updater(new RmsProp()) .weightInit(WeightInit.XAVIER).graphBuilder().addInputs("in") .addLayer("0", new VariationalAutoencoder.Builder().nIn(8).nOut(10).encoderLayerSizes(12) .decoderLayerSizes(13).reconstructionDistribution( new GaussianReconstructionDistribution(Activation.IDENTITY)) .build(), "in") .setOutputs("0").build(); //Do training on Spark with one executor, for 3 separate minibatches int rddDataSetNumExamples = 10; int totalAveragings = 5; int averagingFrequency = 3; ParameterAveragingTrainingMaster tm = new ParameterAveragingTrainingMaster.Builder(rddDataSetNumExamples) .averagingFrequency(averagingFrequency).batchSizePerWorker(rddDataSetNumExamples) .saveUpdater(true).workerPrefetchNumBatches(0).build(); Nd4j.getRandom().setSeed(12345); SparkComputationGraph sparkNet = new SparkComputationGraph(sc, conf.clone(), tm); List<DataSet> trainData = new ArrayList<>(); int nDataSets = numExecutors() * totalAveragings * averagingFrequency; for (int i = 0; i < nDataSets; i++) { trainData.add(new DataSet(Nd4j.rand(rddDataSetNumExamples, nIn), null)); } JavaRDD<DataSet> data = sc.parallelize(trainData); sparkNet.fit(data); }
Example #5
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 5 votes |
@Test @Ignore //Ignored 2019/04/09 - low priority: https://github.com/deeplearning4j/deeplearning4j/issues/6656 public void testVaePretrainSimple() { //Simple sanity check on pretraining int nIn = 8; Nd4j.getRandom().setSeed(12345); MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().seed(12345).updater(new RmsProp()) .weightInit(WeightInit.XAVIER).list() .layer(0, new VariationalAutoencoder.Builder().nIn(8).nOut(10).encoderLayerSizes(12) .decoderLayerSizes(13).reconstructionDistribution( new GaussianReconstructionDistribution(Activation.IDENTITY)) .build()) .build(); //Do training on Spark with one executor, for 3 separate minibatches int rddDataSetNumExamples = 10; int totalAveragings = 5; int averagingFrequency = 3; ParameterAveragingTrainingMaster tm = new ParameterAveragingTrainingMaster.Builder(rddDataSetNumExamples) .averagingFrequency(averagingFrequency).batchSizePerWorker(rddDataSetNumExamples) .saveUpdater(true).workerPrefetchNumBatches(0).build(); Nd4j.getRandom().setSeed(12345); SparkDl4jMultiLayer sparkNet = new SparkDl4jMultiLayer(sc, conf.clone(), tm); List<DataSet> trainData = new ArrayList<>(); int nDataSets = numExecutors() * totalAveragings * averagingFrequency; for (int i = 0; i < nDataSets; i++) { trainData.add(new DataSet(Nd4j.rand(rddDataSetNumExamples, nIn), null)); } JavaRDD<DataSet> data = sc.parallelize(trainData); sparkNet.fit(data); }
Example #6
Source File: RegressionTest050.java From deeplearning4j with Apache License 2.0 | 5 votes |
@Test public void regressionTestMLP2() throws Exception { File f = Resources.asFile("regression_testing/050/050_ModelSerializer_Regression_MLP_2.zip"); MultiLayerNetwork net = ModelSerializer.restoreMultiLayerNetwork(f, true); MultiLayerConfiguration conf = net.getLayerWiseConfigurations(); assertEquals(2, conf.getConfs().size()); DenseLayer l0 = (DenseLayer) conf.getConf(0).getLayer(); assertTrue(l0.getActivationFn() instanceof ActivationLReLU); assertEquals(3, l0.getNIn()); assertEquals(4, l0.getNOut()); assertEquals(new WeightInitDistribution(new NormalDistribution(0.1, 1.2)), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertEquals(new Dropout(0.6), l0.getIDropout()); assertEquals(0.1, TestUtils.getL1(l0), 1e-6); assertEquals(new WeightDecay(0.2, false), TestUtils.getWeightDecayReg(l0)); OutputLayer l1 = (OutputLayer) conf.getConf(1).getLayer(); assertEquals("identity", l1.getActivationFn().toString()); assertTrue(l1.getLossFn() instanceof LossMSE); assertEquals(4, l1.getNIn()); assertEquals(5, l1.getNOut()); assertEquals(new WeightInitDistribution(new NormalDistribution(0.1, 1.2)), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l1.getIUpdater()); assertEquals(0.15, ((RmsProp)l1.getIUpdater()).getLearningRate(), 1e-6); assertEquals(new Dropout(0.6), l1.getIDropout()); assertEquals(0.1, TestUtils.getL1(l1), 1e-6); assertEquals(new WeightDecay(0.2, false), TestUtils.getWeightDecayReg(l1)); int numParams = (int)net.numParams(); assertEquals(Nd4j.linspace(1, numParams, numParams, Nd4j.dataType()).reshape(1,numParams), net.params()); int updaterSize = (int) new RmsProp().stateSize(numParams); assertEquals(Nd4j.linspace(1, updaterSize, updaterSize, Nd4j.dataType()).reshape(1,numParams), net.getUpdater().getStateViewArray()); }
Example #7
Source File: RmsPropLearnerTestCase.java From jstarcraft-ai with Apache License 2.0 | 5 votes |
@Override protected GradientUpdater<?> getOldFunction(long[] shape) { RmsProp configuration = new RmsProp(); GradientUpdater<?> oldFunction = new RmsPropUpdater(configuration); int length = (int) (shape[0] * configuration.stateSize(shape[1])); INDArray view = Nd4j.zeros(length); oldFunction.setStateViewArray(view, shape, 'c', true); return oldFunction; }
Example #8
Source File: TestCompareParameterAveragingSparkVsSingleMachine.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testOneExecutor() { //Idea: single worker/executor on Spark should give identical results to a single machine int miniBatchSize = 10; int nWorkers = 1; for (boolean saveUpdater : new boolean[] {true, false}) { JavaSparkContext sc = getContext(nWorkers); try { //Do training locally, for 3 minibatches int[] seeds = {1, 2, 3}; MultiLayerNetwork net = new MultiLayerNetwork(getConf(12345, new RmsProp(0.5))); net.init(); INDArray initialParams = net.params().dup(); for (int i = 0; i < seeds.length; i++) { DataSet ds = getOneDataSet(miniBatchSize, seeds[i]); if (!saveUpdater) net.setUpdater(null); net.fit(ds); } INDArray finalParams = net.params().dup(); //Do training on Spark with one executor, for 3 separate minibatches TrainingMaster tm = getTrainingMaster(1, miniBatchSize, saveUpdater); SparkDl4jMultiLayer sparkNet = new SparkDl4jMultiLayer(sc, getConf(12345, new RmsProp(0.5)), tm); sparkNet.setCollectTrainingStats(true); INDArray initialSparkParams = sparkNet.getNetwork().params().dup(); for (int i = 0; i < seeds.length; i++) { List<DataSet> list = getOneDataSetAsIndividalExamples(miniBatchSize, seeds[i]); JavaRDD<DataSet> rdd = sc.parallelize(list); sparkNet.fit(rdd); } INDArray finalSparkParams = sparkNet.getNetwork().params().dup(); assertEquals(initialParams, initialSparkParams); assertNotEquals(initialParams, finalParams); assertEquals(finalParams, finalSparkParams); } finally { sc.stop(); } } }
Example #9
Source File: RmsPropUpdater.java From nd4j with Apache License 2.0 | 4 votes |
public RmsPropUpdater(RmsProp config) { this.config = config; }
Example #10
Source File: RmsPropUpdater.java From deeplearning4j with Apache License 2.0 | 4 votes |
public RmsPropUpdater(RmsProp config) { this.config = config; }
Example #11
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testIterationCountsGraph() throws Exception { int dataSetObjSize = 5; int batchSizePerExecutor = 25; List<DataSet> list = new ArrayList<>(); int minibatchesPerWorkerPerEpoch = 10; DataSetIterator iter = new MnistDataSetIterator(dataSetObjSize, batchSizePerExecutor * numExecutors() * minibatchesPerWorkerPerEpoch, false); while (iter.hasNext()) { list.add(iter.next()); } ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder().updater(new RmsProp()) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .graphBuilder().addInputs("in") .addLayer("0", new org.deeplearning4j.nn.conf.layers.DenseLayer.Builder().nIn(28 * 28).nOut(50) .activation(Activation.TANH).build(), "in") .addLayer("1", new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MCXENT).nIn(50).nOut(10) .activation(Activation.SOFTMAX).build(), "0") .setOutputs("1").build(); for (int avgFreq : new int[] {1, 5, 10}) { // System.out.println("--- Avg freq " + avgFreq + " ---"); SparkComputationGraph sparkNet = new SparkComputationGraph(sc, conf.clone(), new ParameterAveragingTrainingMaster.Builder(numExecutors(), dataSetObjSize) .batchSizePerWorker(batchSizePerExecutor).averagingFrequency(avgFreq) .repartionData(Repartition.Always).build()); sparkNet.setListeners(new ScoreIterationListener(5)); JavaRDD<DataSet> rdd = sc.parallelize(list); assertEquals(0, sparkNet.getNetwork().getConfiguration().getIterationCount()); sparkNet.fit(rdd); assertEquals(minibatchesPerWorkerPerEpoch, sparkNet.getNetwork().getConfiguration().getIterationCount()); sparkNet.fit(rdd); assertEquals(2 * minibatchesPerWorkerPerEpoch, sparkNet.getNetwork().getConfiguration().getIterationCount()); sparkNet.getTrainingMaster().deleteTempFiles(sc); } }
Example #12
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testIterationCounts() throws Exception { int dataSetObjSize = 5; int batchSizePerExecutor = 25; List<DataSet> list = new ArrayList<>(); int minibatchesPerWorkerPerEpoch = 10; DataSetIterator iter = new MnistDataSetIterator(dataSetObjSize, batchSizePerExecutor * numExecutors() * minibatchesPerWorkerPerEpoch, false); while (iter.hasNext()) { list.add(iter.next()); } MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().updater(new RmsProp()) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).list() .layer(0, new org.deeplearning4j.nn.conf.layers.DenseLayer.Builder().nIn(28 * 28).nOut(50) .activation(Activation.TANH).build()) .layer(1, new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MCXENT).nIn(50).nOut(10) .activation(Activation.SOFTMAX).build()) .build(); for (int avgFreq : new int[] {1, 5, 10}) { // System.out.println("--- Avg freq " + avgFreq + " ---"); SparkDl4jMultiLayer sparkNet = new SparkDl4jMultiLayer(sc, conf.clone(), new ParameterAveragingTrainingMaster.Builder(numExecutors(), dataSetObjSize) .batchSizePerWorker(batchSizePerExecutor).averagingFrequency(avgFreq) .repartionData(Repartition.Always).build()); sparkNet.setListeners(new ScoreIterationListener(5)); JavaRDD<DataSet> rdd = sc.parallelize(list); assertEquals(0, sparkNet.getNetwork().getLayerWiseConfigurations().getIterationCount()); sparkNet.fit(rdd); assertEquals(minibatchesPerWorkerPerEpoch, sparkNet.getNetwork().getLayerWiseConfigurations().getIterationCount()); sparkNet.fit(rdd); assertEquals(2 * minibatchesPerWorkerPerEpoch, sparkNet.getNetwork().getLayerWiseConfigurations().getIterationCount()); sparkNet.getTrainingMaster().deleteTempFiles(sc); } }
Example #13
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test @Ignore("AB 2019/05/23 - Failing on CI only - passing locally. Possible precision or threading issue") public void testSeedRepeatability() throws Exception { MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().seed(12345).updater(new RmsProp()) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .weightInit(WeightInit.XAVIER).list() .layer(0, new org.deeplearning4j.nn.conf.layers.DenseLayer.Builder().nIn(4).nOut(4) .activation(Activation.TANH).build()) .layer(1, new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MCXENT).nIn(4).nOut(3).activation(Activation.SOFTMAX) .build()) .build(); Nd4j.getRandom().setSeed(12345); MultiLayerNetwork n1 = new MultiLayerNetwork(conf); n1.init(); Nd4j.getRandom().setSeed(12345); MultiLayerNetwork n2 = new MultiLayerNetwork(conf); n2.init(); Nd4j.getRandom().setSeed(12345); MultiLayerNetwork n3 = new MultiLayerNetwork(conf); n3.init(); SparkDl4jMultiLayer sparkNet1 = new SparkDl4jMultiLayer(sc, n1, new ParameterAveragingTrainingMaster.Builder(1).workerPrefetchNumBatches(5) .batchSizePerWorker(5).averagingFrequency(1).repartionData(Repartition.Always) .rngSeed(12345).build()); Thread.sleep(100); //Training master IDs are only unique if they are created at least 1 ms apart... SparkDl4jMultiLayer sparkNet2 = new SparkDl4jMultiLayer(sc, n2, new ParameterAveragingTrainingMaster.Builder(1).workerPrefetchNumBatches(5) .batchSizePerWorker(5).averagingFrequency(1).repartionData(Repartition.Always) .rngSeed(12345).build()); Thread.sleep(100); SparkDl4jMultiLayer sparkNet3 = new SparkDl4jMultiLayer(sc, n3, new ParameterAveragingTrainingMaster.Builder(1).workerPrefetchNumBatches(5) .batchSizePerWorker(5).averagingFrequency(1).repartionData(Repartition.Always) .rngSeed(98765).build()); List<DataSet> data = new ArrayList<>(); DataSetIterator iter = new IrisDataSetIterator(1, 150); while (iter.hasNext()) data.add(iter.next()); JavaRDD<DataSet> rdd = sc.parallelize(data); sparkNet1.fit(rdd); sparkNet2.fit(rdd); sparkNet3.fit(rdd); INDArray p1 = sparkNet1.getNetwork().params(); INDArray p2 = sparkNet2.getNetwork().params(); INDArray p3 = sparkNet3.getNetwork().params(); sparkNet1.getTrainingMaster().deleteTempFiles(sc); sparkNet2.getTrainingMaster().deleteTempFiles(sc); sparkNet3.getTrainingMaster().deleteTempFiles(sc); boolean eq1 = p1.equalsWithEps(p2, 0.01); boolean eq2 = p1.equalsWithEps(p3, 0.01); assertTrue("Model 1 and 2 params should be equal", eq1); assertFalse("Model 1 and 3 params shoud be different", eq2); }
Example #14
Source File: TestSparkMultiLayerParameterAveraging.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testFitViaStringPaths() throws Exception { Path tempDir = testDir.newFolder("DL4J-testFitViaStringPaths").toPath(); File tempDirF = tempDir.toFile(); tempDirF.deleteOnExit(); int dataSetObjSize = 5; int batchSizePerExecutor = 25; DataSetIterator iter = new MnistDataSetIterator(dataSetObjSize, 1000, false); int i = 0; while (iter.hasNext()) { File nextFile = new File(tempDirF, i + ".bin"); DataSet ds = iter.next(); ds.save(nextFile); i++; } System.out.println("Saved to: " + tempDirF.getAbsolutePath()); MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().updater(new RmsProp()) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).list() .layer(0, new org.deeplearning4j.nn.conf.layers.DenseLayer.Builder().nIn(28 * 28).nOut(50) .activation(Activation.TANH).build()) .layer(1, new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MCXENT).nIn(50).nOut(10) .activation(Activation.SOFTMAX).build()) .build(); SparkDl4jMultiLayer sparkNet = new SparkDl4jMultiLayer(sc, conf, new ParameterAveragingTrainingMaster.Builder(numExecutors(), dataSetObjSize) .workerPrefetchNumBatches(5).batchSizePerWorker(batchSizePerExecutor) .averagingFrequency(1).repartionData(Repartition.Always).build()); sparkNet.setCollectTrainingStats(true); //List files: Configuration config = new Configuration(); FileSystem hdfs = FileSystem.get(tempDir.toUri(), config); RemoteIterator<LocatedFileStatus> fileIter = hdfs.listFiles(new org.apache.hadoop.fs.Path(tempDir.toString()), false); List<String> paths = new ArrayList<>(); while (fileIter.hasNext()) { String path = fileIter.next().getPath().toString(); paths.add(path); } INDArray paramsBefore = sparkNet.getNetwork().params().dup(); JavaRDD<String> pathRdd = sc.parallelize(paths); sparkNet.fitPaths(pathRdd); INDArray paramsAfter = sparkNet.getNetwork().params().dup(); assertNotEquals(paramsBefore, paramsAfter); SparkTrainingStats stats = sparkNet.getSparkTrainingStats(); // System.out.println(stats.statsAsString()); stats.statsAsString(); sparkNet.getTrainingMaster().deleteTempFiles(sc); }
Example #15
Source File: RegressionTest100b4.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testCustomLayer() throws Exception { for (DataType dtype : new DataType[]{DataType.DOUBLE, DataType.FLOAT, DataType.HALF}) { String dtypeName = dtype.toString().toLowerCase(); File f = Resources.asFile("regression_testing/100b4/CustomLayerExample_100b4_" + dtypeName + ".bin"); MultiLayerNetwork.load(f, true); MultiLayerNetwork net = MultiLayerNetwork.load(f, true); // net = net.clone(); DenseLayer l0 = (DenseLayer) net.getLayer(0).conf().getLayer(); assertEquals(new ActivationTanH(), l0.getActivationFn()); assertEquals(new L2Regularization(0.03), TestUtils.getL2Reg(l0)); assertEquals(new RmsProp(0.95), l0.getIUpdater()); CustomLayer l1 = (CustomLayer) net.getLayer(1).conf().getLayer(); assertEquals(new ActivationTanH(), l1.getActivationFn()); assertEquals(new ActivationSigmoid(), l1.getSecondActivationFunction()); assertEquals(new RmsProp(0.95), l1.getIUpdater()); INDArray outExp; File f2 = Resources .asFile("regression_testing/100b4/CustomLayerExample_Output_100b4_" + dtypeName + ".bin"); try (DataInputStream dis = new DataInputStream(new FileInputStream(f2))) { outExp = Nd4j.read(dis); } INDArray in; File f3 = Resources.asFile("regression_testing/100b4/CustomLayerExample_Input_100b4_" + dtypeName + ".bin"); try (DataInputStream dis = new DataInputStream(new FileInputStream(f3))) { in = Nd4j.read(dis); } assertEquals(dtype, in.dataType()); assertEquals(dtype, outExp.dataType()); assertEquals(dtype, net.params().dataType()); assertEquals(dtype, net.getFlattenedGradients().dataType()); assertEquals(dtype, net.getUpdater().getStateViewArray().dataType()); //System.out.println(Arrays.toString(net.params().data().asFloat())); INDArray outAct = net.output(in); assertEquals(dtype, outAct.dataType()); assertEquals(dtype, net.getLayerWiseConfigurations().getDataType()); assertEquals(dtype, net.params().dataType()); boolean eq = outExp.equalsWithEps(outAct, 0.01); assertTrue("Test for dtype: " + dtypeName + "\n" + outExp + " vs " + outAct, eq); } }
Example #16
Source File: TestCompareParameterAveragingSparkVsSingleMachine.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testOneExecutorGraph() { //Idea: single worker/executor on Spark should give identical results to a single machine int miniBatchSize = 10; int nWorkers = 1; for (boolean saveUpdater : new boolean[] {true, false}) { JavaSparkContext sc = getContext(nWorkers); try { //Do training locally, for 3 minibatches int[] seeds = {1, 2, 3}; ComputationGraph net = new ComputationGraph(getGraphConf(12345, new RmsProp(0.5))); net.init(); INDArray initialParams = net.params().dup(); for (int i = 0; i < seeds.length; i++) { DataSet ds = getOneDataSet(miniBatchSize, seeds[i]); if (!saveUpdater) net.setUpdater(null); net.fit(ds); } INDArray finalParams = net.params().dup(); //Do training on Spark with one executor, for 3 separate minibatches TrainingMaster tm = getTrainingMaster(1, miniBatchSize, saveUpdater); SparkComputationGraph sparkNet = new SparkComputationGraph(sc, getGraphConf(12345, new RmsProp(0.5)), tm); sparkNet.setCollectTrainingStats(true); INDArray initialSparkParams = sparkNet.getNetwork().params().dup(); for (int i = 0; i < seeds.length; i++) { List<DataSet> list = getOneDataSetAsIndividalExamples(miniBatchSize, seeds[i]); JavaRDD<DataSet> rdd = sc.parallelize(list); sparkNet.fit(rdd); } INDArray finalSparkParams = sparkNet.getNetwork().params().dup(); assertEquals(initialParams, initialSparkParams); assertNotEquals(initialParams, finalParams); assertEquals(finalParams, finalSparkParams); } finally { sc.stop(); } } }
Example #17
Source File: RegressionTest100b3.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testCustomLayer() throws Exception { for( int i=1; i<2; i++ ) { String dtype = (i == 0 ? "float" : "double"); DataType dt = (i == 0 ? DataType.FLOAT : DataType.DOUBLE); File f = Resources.asFile("regression_testing/100b3/CustomLayerExample_100b3_" + dtype + ".bin"); MultiLayerNetwork.load(f, true); MultiLayerNetwork net = MultiLayerNetwork.load(f, true); // net = net.clone(); DenseLayer l0 = (DenseLayer) net.getLayer(0).conf().getLayer(); assertEquals(new ActivationTanH(), l0.getActivationFn()); assertEquals(new WeightDecay(0.03, false), TestUtils.getWeightDecayReg(l0)); assertEquals(new RmsProp(0.95), l0.getIUpdater()); CustomLayer l1 = (CustomLayer) net.getLayer(1).conf().getLayer(); assertEquals(new ActivationTanH(), l1.getActivationFn()); assertEquals(new ActivationSigmoid(), l1.getSecondActivationFunction()); assertEquals(new RmsProp(0.95), l1.getIUpdater()); INDArray outExp; File f2 = Resources.asFile("regression_testing/100b3/CustomLayerExample_Output_100b3_" + dtype + ".bin"); try (DataInputStream dis = new DataInputStream(new FileInputStream(f2))) { outExp = Nd4j.read(dis); } INDArray in; File f3 = Resources.asFile("regression_testing/100b3/CustomLayerExample_Input_100b3_" + dtype + ".bin"); try (DataInputStream dis = new DataInputStream(new FileInputStream(f3))) { in = Nd4j.read(dis); } assertEquals(dt, in.dataType()); assertEquals(dt, outExp.dataType()); assertEquals(dt, net.params().dataType()); assertEquals(dt, net.getFlattenedGradients().dataType()); assertEquals(dt, net.getUpdater().getStateViewArray().dataType()); //System.out.println(Arrays.toString(net.params().data().asFloat())); INDArray outAct = net.output(in); assertEquals(dt, outAct.dataType()); List<INDArray> activations = net.feedForward(in); assertEquals(dt, net.getLayerWiseConfigurations().getDataType()); assertEquals(dt, net.params().dataType()); assertEquals(dtype, outExp, outAct); } }
Example #18
Source File: TestConstraints.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testConstraints(){ double learningRate = 0.001; int nIn = 10; int lstmLayerSize = 32; ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder() .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .weightInit(WeightInit.RELU_UNIFORM) .updater(new RmsProp(learningRate)) .graphBuilder() .addInputs("input_lstm", "input_cpc") .addLayer("first_lstm_layer", new LSTM.Builder() .nIn(nIn) .nOut(lstmLayerSize) .activation(Activation.RELU) .constrainWeights(new NonNegativeConstraint()) .build(), "input_lstm") .addVertex("lastTimeStep", new LastTimeStepVertex("input_lstm"), "first_lstm_layer") .addVertex("merge", new MergeVertex(), "lastTimeStep", "input_cpc") .addLayer("dense", new DenseLayer.Builder() .constrainWeights(new NonNegativeConstraint()) .nIn(lstmLayerSize + 1) .nOut(lstmLayerSize/2) .activation(Activation.RELU) .build(), "merge") .addLayer("second_dense", new DenseLayer.Builder() .constrainWeights(new NonNegativeConstraint()) .nIn(lstmLayerSize/2) .nOut(lstmLayerSize/8) .activation(Activation.RELU) .build(), "dense") .addLayer("output_layer", new OutputLayer.Builder(LossFunctions.LossFunction.MSE) .constrainWeights(new NonNegativeConstraint()) .nIn(lstmLayerSize/8) .nOut(1) .activation(Activation.IDENTITY) .build(), "second_dense") .setOutputs("output_layer") .backpropType(BackpropType.Standard) .build(); ComputationGraph g = new ComputationGraph(conf); g.init(); for( int i=0; i<100; i++ ){ INDArray in1 = Nd4j.rand(new int[]{1, nIn, 5}); INDArray in2 = Nd4j.rand(new int[]{1, 1}); INDArray label = Nd4j.rand(new int[]{1, 1}); g.fit(new INDArray[]{in1, in2}, new INDArray[]{label}); for(Map.Entry<String,INDArray> e : g.paramTable().entrySet()){ if(!e.getKey().contains("W")){ continue; } double min = e.getValue().minNumber().doubleValue(); assertTrue( min >= 0.0); } } }
Example #19
Source File: TransferLearningCompGraphTest.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void simpleFineTune() { long rng = 12345L; DataSet randomData = new DataSet(Nd4j.rand(10, 4), Nd4j.rand(10, 3)); //original conf ComputationGraphConfiguration confToChange = new NeuralNetConfiguration.Builder().seed(rng) .optimizationAlgo(OptimizationAlgorithm.LBFGS).updater(new Nesterovs(0.01, 0.99)) .graphBuilder().addInputs("layer0In").setInputTypes(InputType.feedForward(4)) .addLayer("layer0", new DenseLayer.Builder().nIn(4).nOut(3).build(), "layer0In") .addLayer("layer1", new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MCXENT) .activation(Activation.SOFTMAX).nIn(3).nOut(3) .build(), "layer0") .setOutputs("layer1").build(); //conf with learning parameters changed ComputationGraphConfiguration expectedConf = new NeuralNetConfiguration.Builder().seed(rng) .updater(new RmsProp(0.2)) .graphBuilder().addInputs("layer0In") .setInputTypes(InputType.feedForward(4)) .addLayer("layer0", new DenseLayer.Builder().nIn(4).nOut(3).build(), "layer0In") .addLayer("layer1", new org.deeplearning4j.nn.conf.layers.OutputLayer.Builder( LossFunctions.LossFunction.MCXENT) .activation(Activation.SOFTMAX).nIn(3).nOut(3) .build(), "layer0") .setOutputs("layer1").build(); ComputationGraph expectedModel = new ComputationGraph(expectedConf); expectedModel.init(); ComputationGraph modelToFineTune = new ComputationGraph(expectedConf); modelToFineTune.init(); modelToFineTune.setParams(expectedModel.params()); //model after applying changes with transfer learning ComputationGraph modelNow = new TransferLearning.GraphBuilder(modelToFineTune) .fineTuneConfiguration(new FineTuneConfiguration.Builder().seed(rng) .updater(new RmsProp(0.2)).build()) .build(); //Check json assertEquals(expectedConf.toJson(), modelNow.getConfiguration().toJson()); //Check params after fit modelNow.fit(randomData); expectedModel.fit(randomData); assertEquals(modelNow.score(), expectedModel.score(), 1e-8); assertEquals(modelNow.params(), expectedModel.params()); }
Example #20
Source File: RegressionTest060.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void regressionTestCNN1() throws Exception { File f = Resources.asFile("regression_testing/060/060_ModelSerializer_Regression_CNN_1.zip"); MultiLayerNetwork net = ModelSerializer.restoreMultiLayerNetwork(f, true); MultiLayerConfiguration conf = net.getLayerWiseConfigurations(); assertEquals(3, conf.getConfs().size()); ConvolutionLayer l0 = (ConvolutionLayer) conf.getConf(0).getLayer(); assertEquals("tanh", l0.getActivationFn().toString()); assertEquals(3, l0.getNIn()); assertEquals(3, l0.getNOut()); assertEquals(new WeightInitRelu(), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertArrayEquals(new int[] {2, 2}, l0.getKernelSize()); assertArrayEquals(new int[] {1, 1}, l0.getStride()); assertArrayEquals(new int[] {0, 0}, l0.getPadding()); assertEquals(ConvolutionMode.Truncate, l0.getConvolutionMode()); //Pre-0.7.0: no ConvolutionMode. Want to default to truncate here if not set SubsamplingLayer l1 = (SubsamplingLayer) conf.getConf(1).getLayer(); assertArrayEquals(new int[] {2, 2}, l1.getKernelSize()); assertArrayEquals(new int[] {1, 1}, l1.getStride()); assertArrayEquals(new int[] {0, 0}, l1.getPadding()); assertEquals(PoolingType.MAX, l1.getPoolingType()); assertEquals(ConvolutionMode.Truncate, l1.getConvolutionMode()); //Pre-0.7.0: no ConvolutionMode. Want to default to truncate here if not set OutputLayer l2 = (OutputLayer) conf.getConf(2).getLayer(); assertEquals("sigmoid", l2.getActivationFn().toString()); assertTrue(l2.getLossFn() instanceof LossNegativeLogLikelihood); //TODO assertEquals(26 * 26 * 3, l2.getNIn()); assertEquals(5, l2.getNOut()); assertEquals(new WeightInitRelu(), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertTrue(conf.getInputPreProcess(2) instanceof CnnToFeedForwardPreProcessor); int numParams = (int)net.numParams(); assertEquals(Nd4j.linspace(1, numParams, numParams, Nd4j.dataType()).reshape(1,numParams), net.params()); int updaterSize = (int) new RmsProp().stateSize(numParams); assertEquals(Nd4j.linspace(1, updaterSize, updaterSize, Nd4j.dataType()).reshape(1,numParams), net.getUpdater().getStateViewArray()); }
Example #21
Source File: RegressionTest060.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void regressionTestMLP2() throws Exception { File f = Resources.asFile("regression_testing/060/060_ModelSerializer_Regression_MLP_2.zip"); MultiLayerNetwork net = ModelSerializer.restoreMultiLayerNetwork(f, true); MultiLayerConfiguration conf = net.getLayerWiseConfigurations(); assertEquals(2, conf.getConfs().size()); DenseLayer l0 = (DenseLayer) conf.getConf(0).getLayer(); assertTrue(l0.getActivationFn() instanceof ActivationLReLU); assertEquals(3, l0.getNIn()); assertEquals(4, l0.getNOut()); assertEquals(new WeightInitDistribution(new NormalDistribution(0.1, 1.2)), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertEquals(new Dropout(0.6), l0.getIDropout()); assertEquals(0.1, TestUtils.getL1(l0), 1e-6); assertEquals(new WeightDecay(0.2, false), TestUtils.getWeightDecayReg(l0)); assertEquals(GradientNormalization.ClipElementWiseAbsoluteValue, l0.getGradientNormalization()); assertEquals(1.5, l0.getGradientNormalizationThreshold(), 1e-5); OutputLayer l1 = (OutputLayer) conf.getConf(1).getLayer(); assertEquals("identity", l1.getActivationFn().toString()); assertTrue(l1.getLossFn() instanceof LossMSE); assertEquals(4, l1.getNIn()); assertEquals(5, l1.getNOut()); assertEquals(new WeightInitDistribution(new NormalDistribution(0.1, 1.2)), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l1.getIUpdater()); assertEquals(0.15, ((RmsProp)l1.getIUpdater()).getLearningRate(), 1e-6); assertEquals(new Dropout(0.6), l1.getIDropout()); assertEquals(0.1, TestUtils.getL1(l1), 1e-6); assertEquals(new WeightDecay(0.2,false), TestUtils.getWeightDecayReg(l1)); assertEquals(GradientNormalization.ClipElementWiseAbsoluteValue, l1.getGradientNormalization()); assertEquals(1.5, l1.getGradientNormalizationThreshold(), 1e-5); int numParams = (int)net.numParams(); assertEquals(Nd4j.linspace(1, numParams, numParams, Nd4j.dataType()).reshape(1,numParams), net.params()); int updaterSize = (int) new RmsProp().stateSize(numParams); assertEquals(Nd4j.linspace(1, updaterSize, updaterSize, Nd4j.dataType()).reshape(1,numParams), net.getUpdater().getStateViewArray()); }
Example #22
Source File: RegressionTest071.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void regressionTestCNN1() throws Exception { File f = Resources.asFile("regression_testing/071/071_ModelSerializer_Regression_CNN_1.zip"); MultiLayerNetwork net = ModelSerializer.restoreMultiLayerNetwork(f, true); MultiLayerConfiguration conf = net.getLayerWiseConfigurations(); assertEquals(3, conf.getConfs().size()); ConvolutionLayer l0 = (ConvolutionLayer) conf.getConf(0).getLayer(); assertEquals("tanh", l0.getActivationFn().toString()); assertEquals(3, l0.getNIn()); assertEquals(3, l0.getNOut()); assertEquals(new WeightInitRelu(), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertArrayEquals(new int[] {2, 2}, l0.getKernelSize()); assertArrayEquals(new int[] {1, 1}, l0.getStride()); assertArrayEquals(new int[] {0, 0}, l0.getPadding()); assertEquals(ConvolutionMode.Same, l0.getConvolutionMode()); SubsamplingLayer l1 = (SubsamplingLayer) conf.getConf(1).getLayer(); assertArrayEquals(new int[] {2, 2}, l1.getKernelSize()); assertArrayEquals(new int[] {1, 1}, l1.getStride()); assertArrayEquals(new int[] {0, 0}, l1.getPadding()); assertEquals(PoolingType.MAX, l1.getPoolingType()); assertEquals(l1.getConvolutionMode(), ConvolutionMode.Same); OutputLayer l2 = (OutputLayer) conf.getConf(2).getLayer(); assertEquals("sigmoid", l2.getActivationFn().toString()); assertTrue(l2.getLossFn() instanceof LossNegativeLogLikelihood); //TODO assertEquals(26 * 26 * 3, l2.getNIn()); assertEquals(5, l2.getNOut()); assertEquals(new WeightInitRelu(), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertTrue(conf.getInputPreProcess(2) instanceof CnnToFeedForwardPreProcessor); long numParams = net.numParams(); assertEquals(Nd4j.linspace(1, numParams, numParams).reshape(1,numParams), net.params()); int updaterSize = (int) new RmsProp().stateSize(numParams); assertEquals(Nd4j.linspace(1, updaterSize, updaterSize).reshape(1,numParams), net.getUpdater().getStateViewArray()); }
Example #23
Source File: RegressionTest071.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void regressionTestMLP2() throws Exception { File f = Resources.asFile("regression_testing/071/071_ModelSerializer_Regression_MLP_2.zip"); MultiLayerNetwork net = ModelSerializer.restoreMultiLayerNetwork(f, true); MultiLayerConfiguration conf = net.getLayerWiseConfigurations(); assertEquals(2, conf.getConfs().size()); DenseLayer l0 = (DenseLayer) conf.getConf(0).getLayer(); assertTrue(l0.getActivationFn() instanceof ActivationLReLU); assertEquals(3, l0.getNIn()); assertEquals(4, l0.getNOut()); assertEquals(new WeightInitDistribution(new NormalDistribution(0.1, 1.2)), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertEquals(new Dropout(0.6), l0.getIDropout()); assertEquals(0.1, TestUtils.getL1(l0), 1e-6); assertEquals(new WeightDecay(0.2,false), TestUtils.getWeightDecayReg(l0)); assertEquals(GradientNormalization.ClipElementWiseAbsoluteValue, l0.getGradientNormalization()); assertEquals(1.5, l0.getGradientNormalizationThreshold(), 1e-5); OutputLayer l1 = (OutputLayer) conf.getConf(1).getLayer(); assertTrue(l1.getActivationFn() instanceof ActivationIdentity); assertTrue(l1.getLossFn() instanceof LossMSE); assertEquals(4, l1.getNIn()); assertEquals(5, l1.getNOut()); assertEquals(new WeightInitDistribution(new NormalDistribution(0.1, 1.2)), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l1.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertEquals(new Dropout(0.6), l1.getIDropout()); assertEquals(0.1, TestUtils.getL1(l1), 1e-6); assertEquals(new WeightDecay(0.2,false), TestUtils.getWeightDecayReg(l1)); assertEquals(GradientNormalization.ClipElementWiseAbsoluteValue, l1.getGradientNormalization()); assertEquals(1.5, l1.getGradientNormalizationThreshold(), 1e-5); long numParams = net.numParams(); assertEquals(Nd4j.linspace(1, numParams, numParams).reshape(1,numParams), net.params()); int updaterSize = (int) new RmsProp().stateSize(numParams); assertEquals(Nd4j.linspace(1, updaterSize, updaterSize).reshape(1,numParams), net.getUpdater().getStateViewArray()); }
Example #24
Source File: RegressionTest100a.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testGravesLSTM() throws Exception { File f = Resources.asFile("regression_testing/100a/GravesLSTMCharModelingExample_100a.bin"); MultiLayerNetwork net = MultiLayerNetwork.load(f, true); GravesLSTM l0 = (GravesLSTM) net.getLayer(0).conf().getLayer(); assertEquals(new ActivationTanH(), l0.getActivationFn()); assertEquals(200, l0.getNOut()); assertEquals(new WeightInitXavier(), l0.getWeightInitFn()); assertEquals(new WeightDecay(0.001, false), TestUtils.getWeightDecayReg(l0)); assertEquals(new RmsProp(0.1), l0.getIUpdater()); GravesLSTM l1 = (GravesLSTM) net.getLayer(1).conf().getLayer(); assertEquals(new ActivationTanH(), l1.getActivationFn()); assertEquals(200, l1.getNOut()); assertEquals(new WeightInitXavier(), l1.getWeightInitFn()); assertEquals(new WeightDecay(0.001, false), TestUtils.getWeightDecayReg(l1)); assertEquals(new RmsProp(0.1), l1.getIUpdater()); RnnOutputLayer l2 = (RnnOutputLayer) net.getLayer(2).conf().getLayer(); assertEquals(new ActivationSoftmax(), l2.getActivationFn()); assertEquals(77, l2.getNOut()); assertEquals(new WeightInitXavier(), l2.getWeightInitFn()); assertEquals(new WeightDecay(0.001, false), TestUtils.getWeightDecayReg(l0)); assertEquals(new RmsProp(0.1), l0.getIUpdater()); assertEquals(BackpropType.TruncatedBPTT, net.getLayerWiseConfigurations().getBackpropType()); assertEquals(50, net.getLayerWiseConfigurations().getTbpttBackLength()); assertEquals(50, net.getLayerWiseConfigurations().getTbpttFwdLength()); INDArray outExp; File f2 = Resources.asFile("regression_testing/100a/GravesLSTMCharModelingExample_Output_100a.bin"); try(DataInputStream dis = new DataInputStream(new FileInputStream(f2))){ outExp = Nd4j.read(dis); } INDArray in; File f3 = Resources.asFile("regression_testing/100a/GravesLSTMCharModelingExample_Input_100a.bin"); try(DataInputStream dis = new DataInputStream(new FileInputStream(f3))){ in = Nd4j.read(dis); } INDArray outAct = net.output(in); assertEquals(outExp, outAct); }
Example #25
Source File: RegressionTest100b6.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void testCustomLayer() throws Exception { for (DataType dtype : new DataType[]{DataType.DOUBLE, DataType.FLOAT, DataType.HALF}) { String dtypeName = dtype.toString().toLowerCase(); File f = Resources.asFile("regression_testing/100b6/CustomLayerExample_100b6_" + dtypeName + ".bin"); MultiLayerNetwork.load(f, true); MultiLayerNetwork net = MultiLayerNetwork.load(f, true); // net = net.clone(); DenseLayer l0 = (DenseLayer) net.getLayer(0).conf().getLayer(); assertEquals(new ActivationTanH(), l0.getActivationFn()); assertEquals(new L2Regularization(0.03), TestUtils.getL2Reg(l0)); assertEquals(new RmsProp(0.95), l0.getIUpdater()); CustomLayer l1 = (CustomLayer) net.getLayer(1).conf().getLayer(); assertEquals(new ActivationTanH(), l1.getActivationFn()); assertEquals(new ActivationSigmoid(), l1.getSecondActivationFunction()); assertEquals(new RmsProp(0.95), l1.getIUpdater()); INDArray outExp; File f2 = Resources .asFile("regression_testing/100b6/CustomLayerExample_Output_100b6_" + dtypeName + ".bin"); try (DataInputStream dis = new DataInputStream(new FileInputStream(f2))) { outExp = Nd4j.read(dis); } INDArray in; File f3 = Resources.asFile("regression_testing/100b6/CustomLayerExample_Input_100b6_" + dtypeName + ".bin"); try (DataInputStream dis = new DataInputStream(new FileInputStream(f3))) { in = Nd4j.read(dis); } assertEquals(dtype, in.dataType()); assertEquals(dtype, outExp.dataType()); assertEquals(dtype, net.params().dataType()); assertEquals(dtype, net.getFlattenedGradients().dataType()); assertEquals(dtype, net.getUpdater().getStateViewArray().dataType()); //System.out.println(Arrays.toString(net.params().data().asFloat())); INDArray outAct = net.output(in); assertEquals(dtype, outAct.dataType()); assertEquals(dtype, net.getLayerWiseConfigurations().getDataType()); assertEquals(dtype, net.params().dataType()); boolean eq = outExp.equalsWithEps(outAct, 0.01); assertTrue("Test for dtype: " + dtypeName + " - " + outExp + " vs " + outAct, eq); } }
Example #26
Source File: RegressionTest050.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void regressionTestCNN1() throws Exception { File f = Resources.asFile("regression_testing/050/050_ModelSerializer_Regression_CNN_1.zip"); MultiLayerNetwork net = ModelSerializer.restoreMultiLayerNetwork(f, true); MultiLayerConfiguration conf = net.getLayerWiseConfigurations(); assertEquals(3, conf.getConfs().size()); ConvolutionLayer l0 = (ConvolutionLayer) conf.getConf(0).getLayer(); assertEquals("tanh", l0.getActivationFn().toString()); assertEquals(3, l0.getNIn()); assertEquals(3, l0.getNOut()); assertEquals(new WeightInitRelu(), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); assertArrayEquals(new int[] {2, 2}, l0.getKernelSize()); assertArrayEquals(new int[] {1, 1}, l0.getStride()); assertArrayEquals(new int[] {0, 0}, l0.getPadding()); assertEquals(ConvolutionMode.Truncate, l0.getConvolutionMode()); //Pre-0.7.0: no ConvolutionMode. Want to default to truncate here if not set SubsamplingLayer l1 = (SubsamplingLayer) conf.getConf(1).getLayer(); assertArrayEquals(new int[] {2, 2}, l1.getKernelSize()); assertArrayEquals(new int[] {1, 1}, l1.getStride()); assertArrayEquals(new int[] {0, 0}, l1.getPadding()); assertEquals(PoolingType.MAX, l1.getPoolingType()); assertEquals(ConvolutionMode.Truncate, l1.getConvolutionMode()); //Pre-0.7.0: no ConvolutionMode. Want to default to truncate here if not set OutputLayer l2 = (OutputLayer) conf.getConf(2).getLayer(); assertEquals("sigmoid", l2.getActivationFn().toString()); assertTrue(l2.getLossFn() instanceof LossNegativeLogLikelihood); assertEquals(26 * 26 * 3, l2.getNIn()); assertEquals(5, l2.getNOut()); assertEquals(new WeightInitRelu(), l0.getWeightInitFn()); assertEquals(new RmsProp(0.15, 0.96, RmsProp.DEFAULT_RMSPROP_EPSILON), l0.getIUpdater()); assertEquals(0.15, ((RmsProp)l0.getIUpdater()).getLearningRate(), 1e-6); int numParams = (int)net.numParams(); assertEquals(Nd4j.linspace(1, numParams, numParams, Nd4j.dataType()).reshape(1,numParams), net.params()); int updaterSize = (int) new RmsProp().stateSize(numParams); assertEquals(Nd4j.linspace(1, updaterSize, updaterSize, Nd4j.dataType()).reshape(1,numParams), net.getUpdater().getStateViewArray()); }