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 7f0024a4b99154070f5d738f3b75b26bc4138687..de69d6d2eb89d1f9cdc08ea38bee10655047ffd5 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 11e569f256eee658f8300cf2001bdae5226ce69e..e068f13e364949c69eb25b6c008fe0d93a835285 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 f8379c5798ae2e94842b1274548b51c3d82a4279..6d2f651e8c24fea5466f33f01e81eaeb0ba822f7 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 8c87557d2dcf2c1602d7ef38bcdc175e4fb4f119..7d75da5211f5af79f5046ab32901f15561255245 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 3f65e62157385c3ec10b56edf506a12bb26a79ca..a92ccfbbfd8c5b41ac22679d6473c14e292b0f57 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 00be9a7abda06dee923bc3f0a8f6d571cf1ad35f..55c86b1997acb7875572f84afa7bdf985a6ee296 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)