Skip to content

Instantly share code, notes, and snippets.

@sato-cloudian
Last active December 29, 2015 13:54
Show Gist options
  • Select an option

  • Save sato-cloudian/45f106770051c3872778 to your computer and use it in GitHub Desktop.

Select an option

Save sato-cloudian/45f106770051c3872778 to your computer and use it in GitHub Desktop.
MyCNNMnistExample experiments
package org.deeplearning4j.examples.convolution;
import org.deeplearning4j.datasets.iterator.impl.MnistDataSetIterator;
import org.deeplearning4j.eval.Evaluation;
import org.deeplearning4j.nn.api.OptimizationAlgorithm;
import org.deeplearning4j.nn.conf.GradientNormalization;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.Updater;
import org.deeplearning4j.nn.conf.layers.ConvolutionLayer;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.conf.layers.SubsamplingLayer;
import org.deeplearning4j.nn.conf.layers.setup.ConvolutionLayerSetup;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.optimize.api.IterationListener;
import org.deeplearning4j.optimize.listeners.ScoreIterationListener;
import org.deeplearning4j.ui.weights.HistogramIterationListener;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.dataset.DataSet;
import org.nd4j.linalg.dataset.SplitTestAndTrain;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.lossfunctions.LossFunctions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
/**
* Created by willow on 5/11/15.
*/
public class MyCNNMnistExample {
private static final Logger log = LoggerFactory.getLogger(MyCNNMnistExample.class);
public static void main(String[] args) throws Exception {
int numRows = 28;
int numColumns = 28;
int nChannels = 1;
int outputNum = 10;
int numSamples = 10000;
int batchSize = 100;
int iterations = 1;
int splitTrainNum = (int) (batchSize*.8);
int seed = 123;
int listenerFreq = Math.max(iterations/10, 1);
DataSet mnist;
SplitTestAndTrain trainTest;
DataSet trainInput;
List<INDArray> testInput = new ArrayList<>();
List<INDArray> testLabels = new ArrayList<>();
log.info("Load data....");
DataSetIterator mnistIter = new MnistDataSetIterator(batchSize,numSamples, true);
log.info("Build model....");
MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder()
.seed(seed)
.iterations(iterations)
//.gradientNormalization(GradientNormalization.RenormalizeL2PerLayer)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.learningRate(0.01) // default
.regularization(true)
.list(6)
.layer(0, new ConvolutionLayer.Builder(3, 3) // 28*28*1 => 28*28*10
.nIn(nChannels)
.nOut(10)
.padding(1, 1)
.stride(1, 1)
.weightInit(WeightInit.RELU)
.activation("relu")
.build())
.layer(1, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX, new int[] {2,2}) // 28*28*10 => 14*14*10
.stride(2, 2)
.build())
.layer(2, new ConvolutionLayer.Builder(3, 3) // 14*14*10 => 14*14*20
.nIn(10)
.nOut(20)
.padding(1, 1)
.stride(1, 1)
.weightInit(WeightInit.RELU)
.activation("relu")
.build())
.layer(3, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX, new int[] {2,2}) // 14*14*20 => 7*7*20
.stride(2, 2)
.build())
.layer(4, new DenseLayer.Builder().activation("tanh")
.nOut(200).build())
.layer(5, new OutputLayer.Builder(LossFunctions.LossFunction.RMSE_XENT) // 7*7*20 => 1*1*10
.nOut(outputNum)
.weightInit(WeightInit.RELU)
.activation("softmax")
.updater(Updater.SGD)
.build())
.backprop(true).pretrain(false);
new ConvolutionLayerSetup(builder,numRows,numColumns,nChannels);
MultiLayerConfiguration conf = builder.build();
MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
log.info("Train model....");
model.setListeners(Arrays.asList((IterationListener) new ScoreIterationListener(listenerFreq), new HistogramIterationListener(listenerFreq)));
while(mnistIter.hasNext()) {
mnist = mnistIter.next();
trainTest = mnist.splitTestAndTrain(splitTrainNum, new Random(seed)); // train set that is the result
trainInput = trainTest.getTrain(); // get feature matrix and labels for training
testInput.add(trainTest.getTest().getFeatureMatrix());
testLabels.add(trainTest.getTest().getLabels());
model.fit(trainInput);
}
log.info("Evaluate weights....");
log.info("Evaluate model....");
Evaluation eval = new Evaluation(outputNum);
for(int i = 0; i < testInput.size(); i++) {
INDArray output = model.output(testInput.get(i));
eval.eval(testLabels.get(i), output);
}
INDArray output = model.output(testInput.get(0));
eval.eval(testLabels.get(0), output);
log.info(eval.stats());
log.info("****************Example finished********************");
}
}
Examples labeled as 0 classified by model as 0: 191 times
Examples labeled as 0 classified by model as 3: 1 times
Examples labeled as 0 classified by model as 4: 1 times
Examples labeled as 0 classified by model as 6: 3 times
Examples labeled as 0 classified by model as 8: 6 times
Examples labeled as 1 classified by model as 1: 203 times
Examples labeled as 1 classified by model as 2: 1 times
Examples labeled as 1 classified by model as 3: 1 times
Examples labeled as 1 classified by model as 4: 1 times
Examples labeled as 1 classified by model as 6: 1 times
Examples labeled as 1 classified by model as 8: 4 times
Examples labeled as 2 classified by model as 0: 7 times
Examples labeled as 2 classified by model as 1: 4 times
Examples labeled as 2 classified by model as 2: 151 times
Examples labeled as 2 classified by model as 3: 1 times
Examples labeled as 2 classified by model as 4: 3 times
Examples labeled as 2 classified by model as 6: 8 times
Examples labeled as 2 classified by model as 7: 1 times
Examples labeled as 2 classified by model as 8: 11 times
Examples labeled as 2 classified by model as 9: 2 times
Examples labeled as 3 classified by model as 0: 4 times
Examples labeled as 3 classified by model as 1: 9 times
Examples labeled as 3 classified by model as 2: 9 times
Examples labeled as 3 classified by model as 3: 171 times
Examples labeled as 3 classified by model as 4: 2 times
Examples labeled as 3 classified by model as 5: 2 times
Examples labeled as 3 classified by model as 6: 2 times
Examples labeled as 3 classified by model as 7: 3 times
Examples labeled as 3 classified by model as 8: 10 times
Examples labeled as 3 classified by model as 9: 5 times
Examples labeled as 4 classified by model as 0: 2 times
Examples labeled as 4 classified by model as 2: 1 times
Examples labeled as 4 classified by model as 4: 153 times
Examples labeled as 4 classified by model as 6: 6 times
Examples labeled as 4 classified by model as 8: 4 times
Examples labeled as 4 classified by model as 9: 41 times
Examples labeled as 5 classified by model as 0: 18 times
Examples labeled as 5 classified by model as 1: 3 times
Examples labeled as 5 classified by model as 3: 26 times
Examples labeled as 5 classified by model as 4: 4 times
Examples labeled as 5 classified by model as 5: 74 times
Examples labeled as 5 classified by model as 6: 7 times
Examples labeled as 5 classified by model as 7: 1 times
Examples labeled as 5 classified by model as 8: 21 times
Examples labeled as 5 classified by model as 9: 8 times
Examples labeled as 6 classified by model as 0: 5 times
Examples labeled as 6 classified by model as 1: 1 times
Examples labeled as 6 classified by model as 2: 2 times
Examples labeled as 6 classified by model as 4: 3 times
Examples labeled as 6 classified by model as 5: 1 times
Examples labeled as 6 classified by model as 6: 205 times
Examples labeled as 6 classified by model as 8: 4 times
Examples labeled as 7 classified by model as 0: 2 times
Examples labeled as 7 classified by model as 1: 6 times
Examples labeled as 7 classified by model as 2: 3 times
Examples labeled as 7 classified by model as 4: 3 times
Examples labeled as 7 classified by model as 7: 190 times
Examples labeled as 7 classified by model as 8: 5 times
Examples labeled as 7 classified by model as 9: 16 times
Examples labeled as 8 classified by model as 0: 5 times
Examples labeled as 8 classified by model as 1: 4 times
Examples labeled as 8 classified by model as 2: 2 times
Examples labeled as 8 classified by model as 3: 6 times
Examples labeled as 8 classified by model as 6: 5 times
Examples labeled as 8 classified by model as 7: 1 times
Examples labeled as 8 classified by model as 8: 169 times
Examples labeled as 8 classified by model as 9: 6 times
Examples labeled as 9 classified by model as 0: 8 times
Examples labeled as 9 classified by model as 1: 1 times
Examples labeled as 9 classified by model as 2: 1 times
Examples labeled as 9 classified by model as 3: 2 times
Examples labeled as 9 classified by model as 4: 4 times
Examples labeled as 9 classified by model as 6: 1 times
Examples labeled as 9 classified by model as 7: 5 times
Examples labeled as 9 classified by model as 8: 12 times
Examples labeled as 9 classified by model as 9: 155 times
==========================Scores========================================
Accuracy: 0.8228
Precision: 0.8378
Recall: 0.814
F1 Score: 0.8257316686373841
===========================================================================
Examples labeled as 0 classified by model as 0: 198 times
Examples labeled as 0 classified by model as 6: 1 times
Examples labeled as 0 classified by model as 8: 3 times
Examples labeled as 1 classified by model as 1: 208 times
Examples labeled as 1 classified by model as 8: 3 times
Examples labeled as 2 classified by model as 0: 8 times
Examples labeled as 2 classified by model as 1: 7 times
Examples labeled as 2 classified by model as 2: 164 times
Examples labeled as 2 classified by model as 4: 3 times
Examples labeled as 2 classified by model as 6: 4 times
Examples labeled as 2 classified by model as 8: 2 times
Examples labeled as 3 classified by model as 0: 6 times
Examples labeled as 3 classified by model as 1: 15 times
Examples labeled as 3 classified by model as 2: 8 times
Examples labeled as 3 classified by model as 3: 169 times
Examples labeled as 3 classified by model as 6: 3 times
Examples labeled as 3 classified by model as 7: 4 times
Examples labeled as 3 classified by model as 8: 7 times
Examples labeled as 3 classified by model as 9: 5 times
Examples labeled as 4 classified by model as 1: 2 times
Examples labeled as 4 classified by model as 2: 3 times
Examples labeled as 4 classified by model as 4: 161 times
Examples labeled as 4 classified by model as 6: 7 times
Examples labeled as 4 classified by model as 7: 1 times
Examples labeled as 4 classified by model as 8: 6 times
Examples labeled as 4 classified by model as 9: 27 times
Examples labeled as 5 classified by model as 0: 4 times
Examples labeled as 5 classified by model as 1: 3 times
Examples labeled as 5 classified by model as 3: 20 times
Examples labeled as 5 classified by model as 4: 3 times
Examples labeled as 5 classified by model as 5: 104 times
Examples labeled as 5 classified by model as 6: 14 times
Examples labeled as 5 classified by model as 7: 1 times
Examples labeled as 5 classified by model as 8: 8 times
Examples labeled as 5 classified by model as 9: 5 times
Examples labeled as 6 classified by model as 0: 3 times
Examples labeled as 6 classified by model as 1: 2 times
Examples labeled as 6 classified by model as 2: 2 times
Examples labeled as 6 classified by model as 4: 2 times
Examples labeled as 6 classified by model as 5: 3 times
Examples labeled as 6 classified by model as 6: 209 times
Examples labeled as 7 classified by model as 0: 4 times
Examples labeled as 7 classified by model as 1: 11 times
Examples labeled as 7 classified by model as 2: 2 times
Examples labeled as 7 classified by model as 7: 185 times
Examples labeled as 7 classified by model as 8: 3 times
Examples labeled as 7 classified by model as 9: 20 times
Examples labeled as 8 classified by model as 0: 4 times
Examples labeled as 8 classified by model as 1: 11 times
Examples labeled as 8 classified by model as 2: 1 times
Examples labeled as 8 classified by model as 3: 4 times
Examples labeled as 8 classified by model as 4: 1 times
Examples labeled as 8 classified by model as 5: 2 times
Examples labeled as 8 classified by model as 6: 5 times
Examples labeled as 8 classified by model as 7: 2 times
Examples labeled as 8 classified by model as 8: 159 times
Examples labeled as 8 classified by model as 9: 9 times
Examples labeled as 9 classified by model as 0: 8 times
Examples labeled as 9 classified by model as 1: 10 times
Examples labeled as 9 classified by model as 3: 1 times
Examples labeled as 9 classified by model as 4: 5 times
Examples labeled as 9 classified by model as 5: 1 times
Examples labeled as 9 classified by model as 7: 8 times
Examples labeled as 9 classified by model as 8: 12 times
Examples labeled as 9 classified by model as 9: 144 times
==========================Scores========================================
Accuracy: 0.8421
Precision: 0.8513
Recall: 0.837
F1 Score: 0.8440726148712223
===========================================================================
Examples labeled as 0 classified by model as 0: 188 times
Examples labeled as 0 classified by model as 1: 1 times
Examples labeled as 0 classified by model as 6: 4 times
Examples labeled as 0 classified by model as 8: 9 times
Examples labeled as 1 classified by model as 1: 207 times
Examples labeled as 1 classified by model as 8: 4 times
Examples labeled as 2 classified by model as 0: 4 times
Examples labeled as 2 classified by model as 1: 3 times
Examples labeled as 2 classified by model as 2: 168 times
Examples labeled as 2 classified by model as 3: 1 times
Examples labeled as 2 classified by model as 4: 3 times
Examples labeled as 2 classified by model as 6: 2 times
Examples labeled as 2 classified by model as 8: 7 times
Examples labeled as 3 classified by model as 0: 3 times
Examples labeled as 3 classified by model as 1: 5 times
Examples labeled as 3 classified by model as 2: 13 times
Examples labeled as 3 classified by model as 3: 168 times
Examples labeled as 3 classified by model as 4: 1 times
Examples labeled as 3 classified by model as 6: 3 times
Examples labeled as 3 classified by model as 7: 2 times
Examples labeled as 3 classified by model as 8: 16 times
Examples labeled as 3 classified by model as 9: 6 times
Examples labeled as 4 classified by model as 2: 2 times
Examples labeled as 4 classified by model as 4: 164 times
Examples labeled as 4 classified by model as 5: 1 times
Examples labeled as 4 classified by model as 6: 5 times
Examples labeled as 4 classified by model as 8: 9 times
Examples labeled as 4 classified by model as 9: 26 times
Examples labeled as 5 classified by model as 0: 4 times
Examples labeled as 5 classified by model as 1: 2 times
Examples labeled as 5 classified by model as 3: 21 times
Examples labeled as 5 classified by model as 5: 102 times
Examples labeled as 5 classified by model as 6: 8 times
Examples labeled as 5 classified by model as 8: 20 times
Examples labeled as 5 classified by model as 9: 5 times
Examples labeled as 6 classified by model as 0: 2 times
Examples labeled as 6 classified by model as 1: 2 times
Examples labeled as 6 classified by model as 2: 3 times
Examples labeled as 6 classified by model as 4: 2 times
Examples labeled as 6 classified by model as 5: 3 times
Examples labeled as 6 classified by model as 6: 205 times
Examples labeled as 6 classified by model as 8: 4 times
Examples labeled as 7 classified by model as 0: 5 times
Examples labeled as 7 classified by model as 1: 8 times
Examples labeled as 7 classified by model as 2: 3 times
Examples labeled as 7 classified by model as 3: 1 times
Examples labeled as 7 classified by model as 4: 2 times
Examples labeled as 7 classified by model as 7: 163 times
Examples labeled as 7 classified by model as 8: 14 times
Examples labeled as 7 classified by model as 9: 29 times
Examples labeled as 8 classified by model as 0: 3 times
Examples labeled as 8 classified by model as 1: 2 times
Examples labeled as 8 classified by model as 3: 4 times
Examples labeled as 8 classified by model as 5: 1 times
Examples labeled as 8 classified by model as 6: 1 times
Examples labeled as 8 classified by model as 7: 1 times
Examples labeled as 8 classified by model as 8: 182 times
Examples labeled as 8 classified by model as 9: 4 times
Examples labeled as 9 classified by model as 0: 3 times
Examples labeled as 9 classified by model as 1: 5 times
Examples labeled as 9 classified by model as 2: 1 times
Examples labeled as 9 classified by model as 3: 1 times
Examples labeled as 9 classified by model as 4: 3 times
Examples labeled as 9 classified by model as 7: 6 times
Examples labeled as 9 classified by model as 8: 19 times
Examples labeled as 9 classified by model as 9: 151 times
==========================Scores========================================
Accuracy: 0.8406
Precision: 0.857
Recall: 0.8372
F1 Score: 0.8469803688276908
===========================================================================
Examples labeled as 0 classified by model as 0: 192 times
Examples labeled as 0 classified by model as 4: 1 times
Examples labeled as 0 classified by model as 6: 3 times
Examples labeled as 0 classified by model as 8: 6 times
Examples labeled as 1 classified by model as 1: 207 times
Examples labeled as 1 classified by model as 2: 2 times
Examples labeled as 1 classified by model as 8: 2 times
Examples labeled as 2 classified by model as 0: 2 times
Examples labeled as 2 classified by model as 1: 4 times
Examples labeled as 2 classified by model as 2: 166 times
Examples labeled as 2 classified by model as 3: 1 times
Examples labeled as 2 classified by model as 4: 2 times
Examples labeled as 2 classified by model as 6: 8 times
Examples labeled as 2 classified by model as 8: 5 times
Examples labeled as 3 classified by model as 0: 1 times
Examples labeled as 3 classified by model as 1: 3 times
Examples labeled as 3 classified by model as 2: 14 times
Examples labeled as 3 classified by model as 3: 172 times
Examples labeled as 3 classified by model as 5: 1 times
Examples labeled as 3 classified by model as 6: 2 times
Examples labeled as 3 classified by model as 7: 1 times
Examples labeled as 3 classified by model as 8: 15 times
Examples labeled as 3 classified by model as 9: 8 times
Examples labeled as 4 classified by model as 2: 2 times
Examples labeled as 4 classified by model as 4: 144 times
Examples labeled as 4 classified by model as 5: 1 times
Examples labeled as 4 classified by model as 6: 5 times
Examples labeled as 4 classified by model as 7: 1 times
Examples labeled as 4 classified by model as 8: 4 times
Examples labeled as 4 classified by model as 9: 50 times
Examples labeled as 5 classified by model as 0: 5 times
Examples labeled as 5 classified by model as 1: 2 times
Examples labeled as 5 classified by model as 3: 19 times
Examples labeled as 5 classified by model as 4: 1 times
Examples labeled as 5 classified by model as 5: 99 times
Examples labeled as 5 classified by model as 6: 7 times
Examples labeled as 5 classified by model as 8: 23 times
Examples labeled as 5 classified by model as 9: 6 times
Examples labeled as 6 classified by model as 0: 3 times
Examples labeled as 6 classified by model as 1: 5 times
Examples labeled as 6 classified by model as 2: 3 times
Examples labeled as 6 classified by model as 5: 3 times
Examples labeled as 6 classified by model as 6: 205 times
Examples labeled as 6 classified by model as 8: 2 times
Examples labeled as 7 classified by model as 0: 2 times
Examples labeled as 7 classified by model as 1: 6 times
Examples labeled as 7 classified by model as 2: 5 times
Examples labeled as 7 classified by model as 3: 1 times
Examples labeled as 7 classified by model as 4: 3 times
Examples labeled as 7 classified by model as 7: 178 times
Examples labeled as 7 classified by model as 8: 5 times
Examples labeled as 7 classified by model as 9: 25 times
Examples labeled as 8 classified by model as 0: 3 times
Examples labeled as 8 classified by model as 1: 2 times
Examples labeled as 8 classified by model as 2: 2 times
Examples labeled as 8 classified by model as 3: 5 times
Examples labeled as 8 classified by model as 5: 1 times
Examples labeled as 8 classified by model as 7: 1 times
Examples labeled as 8 classified by model as 8: 176 times
Examples labeled as 8 classified by model as 9: 8 times
Examples labeled as 9 classified by model as 0: 4 times
Examples labeled as 9 classified by model as 1: 2 times
Examples labeled as 9 classified by model as 2: 1 times
Examples labeled as 9 classified by model as 3: 1 times
Examples labeled as 9 classified by model as 7: 4 times
Examples labeled as 9 classified by model as 8: 12 times
Examples labeled as 9 classified by model as 9: 165 times
==========================Scores========================================
Accuracy: 0.8436
Precision: 0.8601
Recall: 0.8395
F1 Score: 0.8496559053798136
===========================================================================
nOut = 10, 10
==========================Scores========================================
Accuracy: 0.7797
Precision: 0.7951
Recall: 0.7715
F1 Score: 0.783115637216925
===========================================================================
nOut = 10, 30
==========================Scores========================================
Accuracy: 0.7678
Precision: 0.8026
Recall: 0.7613
F1 Score: 0.7814140065743387
===========================================================================
nOut = 20, 50, 500, k = 5, 5
==========================Scores========================================
Accuracy: 0.6748
Precision: 0.8005
Recall: 0.6649
F1 Score: 0.7264311037652227
===========================================================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment