Skip to content

Instantly share code, notes, and snippets.

@ramannanda9
Created July 5, 2018 16:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ramannanda9/10b358423a8f5760ea477fe0c6804c6b to your computer and use it in GitHub Desktop.
Save ramannanda9/10b358423a8f5760ea477fe0c6804c6b to your computer and use it in GitHub Desktop.
val conf = new NeuralNetConfiguration.Builder().regularization(true).l2(0.001).weightInit(WeightInit.RELU)
.updater(new Adam(0.01, 0.9, .98, 1e-8)).
optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).
convolutionMode(ConvolutionMode.Strict).list().
layer(0, new ConvolutionLayer.Builder(7, 7).nIn(1).stride(1, 1)
.nOut(25).activation(Activation.IDENTITY).build())
.layer(1, new SubsamplingLayer.Builder(PoolingType.MAX).
kernelSize(2, 2).stride(2, 2).build()).
layer(2, new ConvolutionLayer.Builder(6, 6).stride(1, 1).nOut(64).
activation(Activation.IDENTITY).build()).
layer(3, new SubsamplingLayer.Builder(PoolingType.MAX).
kernelSize(2, 2).stride(2, 2).build()).
layer(4, new ConvolutionLayer.Builder(5, 5).stride(1, 1).nOut(120).
activation(Activation.IDENTITY).build()).
layer(5, new SubsamplingLayer.Builder(PoolingType.MAX).
kernelSize(2, 2).stride(2, 2).build()).
layer(6, new DenseLayer.Builder().activation(Activation.RELU).nOut(1000).build())
.layer(7, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD).
nOut(2).activation(Activation.SOFTMAX).build())
.setInputType(InputType.convolutional(128, 128, 1)).
backprop(true).pretrain(false).build()
val labelGenerator = new ParentPathLabelGenerator()
val imageResizer = new MultiImageTransform(new ScaleImageTransform(128, 128))
val imageRecordReaderTrain = new ImageRecordReader(128, 128, 1, labelGenerator)
imageRecordReaderTrain.initialize(data(0),imageResizer)
val scaler = new ImagePreProcessingScaler(0, 1)
val imageRecordReaderTest = new ImageRecordReader(128, 128, 1, labelGenerator)
imageRecordReaderTest.initialize(data(1),imageResizer)
val trainIter = new RecordReaderDataSetIterator(imageRecordReaderTrain, 10, 1, 2)
scaler.fit(trainIter)
trainIter.setPreProcessor(scaler)
val testIter = new RecordReaderDataSetIterator(imageRecordReaderTest, 10, 1, 2)
testIter.setPreProcessor(scaler)
val esConf = new EarlyStoppingConfiguration.Builder().
epochTerminationConditions(new ScoreImprovementEpochTerminationCondition(10))
.scoreCalculator(new DataSetLossCalculator(testIter, true))
.evaluateEveryNEpochs(1)
.modelSaver(new LocalFileModelSaver(rb.getString("model_loc"))).build()
val model = new MultiLayerNetwork(conf)
model.init()
val uiServer = UIServer.getInstance()
val statsStorage = new InMemoryStatsStorage
uiServer.attach(statsStorage)
model.setListeners(new ScoreIterationListener(10))
model.setListeners(new StatsListener(statsStorage))
val esTrainer = new EarlyStoppingTrainer(esConf, model, trainIter)
val esResult = esTrainer.fit()
logger.info("Termination Reason {}", esResult.getTerminationReason)
logger.info("Termination Details {}", esResult.getTerminationDetails)
logger.info("Epochs{}", esResult.getTotalEpochs)
logger.info("Best Epoch {}", esResult.getBestModelEpoch)
logger.info("Score at best epoch{}", esResult.getBestModelScore)
testIter.reset()
logger.info("Evaluating test score {}",esResult.getBestModel.evaluate(testIter))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment