From 1100114598c20649f52b69a09b2a49c9db93297e Mon Sep 17 00:00:00 2001 From: Elbez Hammouda <hammoudae@gmail.com> Date: Mon, 7 Sep 2020 10:42:01 +0200 Subject: [PATCH] Update 07-09-2020 Fix cast error in examples --- .../features/builder/NeuronGroupRef.scala | 1 - .../io/input/MnistFileInputStream.scala | 7 +++- .../features/logging/NetworkLoading.scala | 3 +- .../n2s3/apps/ExampleMnistCompression.scala | 39 +++++++++++-------- .../n2s3/apps/ExampleMnistPrune3Epoch.scala | 13 ++++--- .../n2s3/apps/ExampleMnistStaticThres.scala | 6 +-- 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/NeuronGroupRef.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/NeuronGroupRef.scala index 7f0024a..de69d6d 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/NeuronGroupRef.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/NeuronGroupRef.scala @@ -124,7 +124,6 @@ def getIdentifierOf(ref: NeuronRef): Any = this.identifier+":"+ref.getIndex.mkSt ExternalSender.askTo(path, Destroy) neuronRefs = Some(newNeuronList) - } /******************************************************************************************************************** diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/input/MnistFileInputStream.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/input/MnistFileInputStream.scala index 11e569f..e068f13 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/input/MnistFileInputStream.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/input/MnistFileInputStream.scala @@ -232,8 +232,11 @@ class MnistFileInputStreamP(val imageFile: String, val labelFile: String,from:In throw new IOException("Error on magic number for image file: [" + imageFile + "]") //check the number of elements - val numberImage = imagesInputStream.readInt() / 6 - val numberLabel = labelsInputStream.readInt() / 6 + var numberImage = imagesInputStream.readInt() + numberImage = numberImage / (numberImage/sizeOfChunk) + var numberLabel = labelsInputStream.readInt() + numberLabel = numberLabel / (numberLabel/sizeOfChunk) + private var numberOfReadImages: Int = 0 var image : IndexedSeq[IndexedSeq[Float]] = _ diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/logging/NetworkLoading.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/logging/NetworkLoading.scala index f8379c5..6d2f651 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/logging/NetworkLoading.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/logging/NetworkLoading.scala @@ -89,13 +89,12 @@ object NetworkLoading { ExternalConnectionSender.askTo(cnxPath,SetConnectionProperty(SynapticWeightFloat.asInstanceOf[ConnectionProperty[Any]] ,targetSyn._3)) }catch{ case x : NoSuchElementException => { - println("err") nGroup.neurons.head.group.connections.head.disconnectByPath(cnxPath)} } i = i+1 if((i%500) == 0){ - println(i+"/"+x) + println(i) } }) diff --git a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistCompression.scala b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistCompression.scala index 8c87557..7d75da5 100755 --- a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistCompression.scala +++ b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistCompression.scala @@ -14,7 +14,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.{InputNeuronGroupRef import fr.univ_lille.cristal.emeraude.n2s3.features.io.input._ import fr.univ_lille.cristal.emeraude.n2s3.features.io.report.BenchmarkMonitorRef import fr.univ_lille.cristal.emeraude.n2s3.features.logging.graph.{SynapticWeightSelectGraph, SynapticWeightSelectGraphRef} -import fr.univ_lille.cristal.emeraude.n2s3.features.logging.{NetworkSaving, SimMongoLog, NetworkLoading} +import fr.univ_lille.cristal.emeraude.n2s3.features.logging.{NetworkLoading, NetworkSaving, SimMongoLog} import fr.univ_lille.cristal.emeraude.n2s3.models.neurons.LIF import fr.univ_lille.cristal.emeraude.n2s3.models.synapses.{InhibitorySynapse, QBGParameters, SimplifiedSTDP} import fr.univ_lille.cristal.emeraude.n2s3.support.N2S3ResourceManager @@ -45,16 +45,16 @@ object ExampleMnistCompression extends App { var log = false var prune = true var reinforce = true - var globalIteration = 3 - var sizeChunk = 20000 + var globalIteration = 6 + var sizeChunk = 10000 for(x <- 1 to 1) { implicit val timeout = Config.longTimeout alpha = ArrAlpha((x - 1) / 5) beta = ArrBeta((x - 1) % 5) - alpha = 0.05F + alpha = 0.24858284F //0.05F beta = 0.1F - SimName = "100N" + "-" + x + SimName = "1600N" + "-" + x println("a:" + alpha + " b:" + beta) QBGParameters.alf_m = 0.005f QBGParameters.alf_p = 0.01f @@ -89,8 +89,8 @@ object ExampleMnistCompression extends App { //inputStream.append(stream) val unsupervisedLayer = n2s3.createNeuronGroup() - .setIdentifier("OutLayer") - .setNumberOfNeurons(100) + .setIdentifier("Layer1") //Layer1 OutLayer + .setNumberOfNeurons(1600) .setNeuronModel(LIF, Seq( (MembranePotentialThreshold, 35 millivolts))) @@ -98,8 +98,7 @@ object ExampleMnistCompression extends App { unsupervisedLayer.connectTo(unsupervisedLayer, new FullConnection(() => new InhibitorySynapse())) n2s3.create() - - iteration = 1 + iteration = 6 //1 inputLayer.neurons.toList.foreach(n => { CTotal += n.group.connections.length }) @@ -109,12 +108,12 @@ object ExampleMnistCompression extends App { //showHeatMap(inputLayer,unsupervisedLayer) SynapsesIndex(inputLayer, unsupervisedLayer) SimTime = formatter.format(new Date()) - folderName = SimName.split("-")(0) + " [" + x + "] " + SimTime + folderName = SimName.split("-")(0) + " [" + x + "] " + SimTime+ " " //PP & PWSR new File(folderName).mkdir() - println("Start loading "+System.currentTimeMillis()) - NetworkLoading.from(n2s3,"100N-1 Arch 3 cropped") - println("Done loading "+System.currentTimeMillis()) + //println("Start loading "+System.currentTimeMillis()) + NetworkLoading.from(n2s3,"100N") + //println("Done loading "+System.currentTimeMillis()) //NetworkLoading.fromWithDefaultWeights(n2s3,"100N [1] 03-02-2020 23:50:43/100N-1 Archce // 6 cropped","100N [1] 03-02-2020 23:50:43/100N-1 Arch 6 cropped",loadRandomWeights = false,binary = false) saveNeurones(unsupervisedLayer, "Initial") @@ -142,6 +141,7 @@ object ExampleMnistCompression extends App { while (iteration <= globalIteration) { simTime = "" + /* unsupervisedLayer.unfixNeurons() n2s3.first = false stream = InputMnist.DataParts(dataFile, labelFile, sizeChunk*(iteration-1), sizeChunk) @@ -152,13 +152,15 @@ object ExampleMnistCompression extends App { if (iteration == 1 && log) { logger = new SimMongoLog(n2s3, listOfConnexions, SimName.split("-")(0), true, true, true, true, "MNIST", SimTime,SynapseIndex) } + if(iteration != 1) { + duration = System.currentTimeMillis() simTime = "Train " + iteration n2s3.runAndWait() println(System.currentTimeMillis() - duration) simTime = simTime + " | " + (System.currentTimeMillis() - duration) + "\n" - + } if (iteration == globalIteration && log) { logger.storeSimInfoAndDestroy() } @@ -170,7 +172,10 @@ object ExampleMnistCompression extends App { saveNeurones(unsupervisedLayer, "[" + iteration + "]") println("end : " + System.currentTimeMillis()) - /* + + + // Test before pruning + inputStream.append(InputMnist.DataFrom(dataTestFile, labelTestFile)) println("Start Testing " + "[" + iteration + "]") @@ -388,11 +393,11 @@ object ExampleMnistCompression extends App { d += 1 } }else{ if (reinforce) { - if ((Value + beta*Ratio).toFloat<=1.0){ + if ((Value + beta*Ratio).toFloat<=(1.0).toFloat){ ExternalConnectionSender.askTo(cnx,SetConnectionProperty(SynapticWeightFloat.asInstanceOf[ConnectionProperty[Any]] ,(Value + beta*Ratio).toFloat)) SynUpdate += cnx+":"+((Value + beta*Ratio).toFloat)+"\n" }else{ - ExternalConnectionSender.askTo(cnx,SetConnectionProperty(SynapticWeightFloat.asInstanceOf[ConnectionProperty[Any]] ,(1.0))) + ExternalConnectionSender.askTo(cnx,SetConnectionProperty(SynapticWeightFloat.asInstanceOf[ConnectionProperty[Any]] ,(1.0).toFloat)) SynUpdate += cnx+":"+(1.0)+"\n"} } } diff --git a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistPrune3Epoch.scala b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistPrune3Epoch.scala index 3f65e62..a92ccfb 100644 --- a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistPrune3Epoch.scala +++ b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistPrune3Epoch.scala @@ -48,6 +48,7 @@ object ExampleMnistPrune3Epoch extends App { var SimName = "" var NeuroneLabels = List[(Int, String)]() var logger: SimMongoLog = null + var sizeChunk = 30000 for(x <- 1 to 1){ implicit val timeout = Config.longTimeout @@ -55,7 +56,7 @@ object ExampleMnistPrune3Epoch extends App { beta = ArrBeta((x-1) % 5) alpha = 0.05F beta = 0.1F - SimName = "10N"+"-"+x + SimName = "100N"+"-"+x println("a:"+alpha+" b:"+beta) QBGParameters.alf_m = 0.005f QBGParameters.alf_p = 0.01f @@ -89,7 +90,7 @@ object ExampleMnistPrune3Epoch extends App { val unsupervisedLayer = n2s3.createNeuronGroup() .setIdentifier("Layer1") - .setNumberOfNeurons(10) + .setNumberOfNeurons(100) .setNeuronModel(LIF, Seq( (MembranePotentialThreshold, 35 millivolts))) @@ -139,7 +140,7 @@ object ExampleMnistPrune3Epoch extends App { val dataTestFile = N2S3ResourceManager.getByName("mnist-test-images").getAbsolutePath val labelTestFile = N2S3ResourceManager.getByName("mnist-test-labels").getAbsolutePath simTime = "" - for ( epoch <- 1 to 3) { + for ( epoch <- 1 to 2) { iteration = 1 while (iteration <= 2) { @@ -149,7 +150,7 @@ object ExampleMnistPrune3Epoch extends App { // if (iteration != 1) { //n2s3.first = false - stream = InputMnist.DataParts(dataFile, labelFile, (iteration - 1) * 30000) + stream = InputMnist.DataParts(dataFile, labelFile, sizeChunk*(iteration-1), sizeChunk) // stream = InputMnist.DataFrom(dataFile, labelFile) inputStream.append(stream) stream.goto() @@ -173,7 +174,7 @@ object ExampleMnistPrune3Epoch extends App { CropInfo = cropNetwork(inputLayer, Ratio) //cropInput(n2s3.inputLayerRef.get, Ratio) - if(epoch == 3 && iteration == 2) { + // if(epoch == 2 && iteration == 2) { unsupervisedLayer.fixNeurons() inputStream.append(InputMnist.DataFrom(dataTestFile, labelTestFile)) @@ -193,7 +194,7 @@ object ExampleMnistPrune3Epoch extends App { benchmarkMonitor.saveCrops(folderName + "/" + "Sim " + SimName + " info a:" + alpha + "b:" + beta, simTime, CropInfo + " Ratio " + Ratio) - } + // } iteration += 1 }} } diff --git a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistStaticThres.scala b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistStaticThres.scala index 00be9a7..55c86b1 100755 --- a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistStaticThres.scala +++ b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleMnistStaticThres.scala @@ -54,7 +54,7 @@ object ExampleMnistStaticThres extends App { beta = ArrBeta((x - 1) % 5) alpha = 0.05F beta = 0.1F - SimName = "900N" + "-" + x + SimName = "1600N" + "-" + x println("a:" + alpha + " b:" + beta) QBGParameters.alf_m = 0.005f QBGParameters.alf_p = 0.01f @@ -90,7 +90,7 @@ object ExampleMnistStaticThres extends App { val unsupervisedLayer = n2s3.createNeuronGroup() .setIdentifier("Layer1") - .setNumberOfNeurons(900) + .setNumberOfNeurons(1600) .setNeuronModel(LIF, Seq( (MembranePotentialThreshold, 35 millivolts))) @@ -113,7 +113,7 @@ object ExampleMnistStaticThres extends App { new File(folderName).mkdir() println("Start loading "+System.currentTimeMillis()) - NetworkLoading.from(n2s3,"900N-1 Arch 6") + NetworkLoading.from(n2s3,"1600N-1 Arch 6") println("Done loading "+System.currentTimeMillis()) //NetworkLoading.fromWithDefaultWeights(n2s3,"100N [1] 03-02-2020 23:50:43/100N-1 Archce // 6 cropped","100N [1] 03-02-2020 23:50:43/100N-1 Arch 6 cropped",loadRandomWeights = false,binary = false) -- GitLab