-
-
Save ramannanda9/10b358423a8f5760ea477fe0c6804c6b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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