From 6360fb25394f1e9356f3746525e00d76cd2b5a07 Mon Sep 17 00:00:00 2001 From: guille <guillermopolito@gmail.com> Date: Fri, 28 Oct 2016 12:11:47 +0200 Subject: [PATCH] Adding Scaladocs to to all connections. Cancelling wrong generate method in superclass to not force subclasses to use it. --- .../builder/connection/AbstractConnectionPolicy.scala | 6 +++++- .../connection/types/ConvolutionalConnection.scala | 2 +- .../builder/connection/types/FullConnection.scala | 3 +-- .../types/InternalConvolutionCompetition.scala | 1 + .../builder/connection/types/ManualConnection.scala | 11 +---------- .../connection/types/MaxPoolingConnection.scala | 2 +- .../builder/connection/types/OneToOneConnection.scala | 2 +- .../builder/connection/types/RandomConnection.scala | 2 +- .../connection/types/WinnerTakeAllConnection.scala | 2 +- 9 files changed, 13 insertions(+), 18 deletions(-) diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala index e6fde115..018da9c6 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala @@ -56,7 +56,11 @@ trait ConnectionPolicy extends AbstractConnectionPolicy { } def generate(from : NeuronGroupRef, to : NeuronGroupRef) : Traversable[Connection] - def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] + def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] = { + // Throw exception by default + // This is to allow cleaning subclasses from non used behaviour and remove static dependencies + throw new UnsupportedOperationException() + } /******************************************************************************************************************** * Testing diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala index eb45a59a..e0789046 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala @@ -16,7 +16,7 @@ import scala.collection.mutable */ class ConvolutionalConnection[A](filters : Traversable[Filter2D], connectionConstructor : A => SharedNeuronConnection[A], sharedObjConstructor : () => A) extends ConnectionPolicy { - def generate(from: NeuronIterable, to: NeuronIterable): Traversable[Connection] = { + override def generate(from: NeuronIterable, to: NeuronIterable): Traversable[Connection] = { assert(from.shape.dimensionNumber == 2 && to.shape.dimensionNumber == 3) val sharedObj = (for (filter <- filters) yield { diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala index b4ffce30..ec2358ed 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala @@ -24,8 +24,7 @@ class FullConnection(neuronConnectionConstructor : Option[() => NeuronConnection } } - - def generate(from : NeuronIterable, to : NeuronIterable) = { + override def generate(from : NeuronIterable, to : NeuronIterable) = { for { in <- from out <- to diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala index 45697df6..ee1cf88a 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala @@ -7,6 +7,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connecti /** * Created by falezp on 31/05/16. */ +@deprecated("Should be replaced by external connection policies", "4/8/2016") class InternalConvolutionCompetition(inhibitorConnection : () => NeuronConnection) extends InternalConnectionPolicy { def generate(layer: NeuronIterable) = { diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala index a00ea76b..db2db695 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala @@ -1,23 +1,14 @@ package fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.types import fr.univ_lille.cristal.emeraude.n2s3.core.NeuronConnection +import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connection, ConnectionPolicy} import fr.univ_lille.cristal.emeraude.n2s3.features.builder.{NeuronGroupRef, NeuronIterable, NeuronRef} -import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{InternalConnectionPolicy, Connection, ConnectionPolicy} /** * Connects two neuron groups using an explicit list of connections - * @param connections */ class ManualConnection(connections : Traversable[(Int, Int, Option[NeuronConnection])]) extends ConnectionPolicy { - def generate(from : NeuronIterable, to : NeuronIterable) = { - throw new UnsupportedOperationException - /* - connections.map{ case(in, out, connection) => - Connection(from.get(in), to.get(out), connection) - }*/ - } - override def generate(from: NeuronGroupRef, to: NeuronGroupRef): Traversable[Connection] = { connections.map{ case(in, out, connection) => Connection(from.neurons(in).actorPath.get, to.neurons(out).actorPath.get, connection) diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala index 9b810404..be65a371 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala @@ -9,7 +9,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.Shape */ class MaxPoolingConnection(reduceFactors : Int*) extends ConnectionPolicy { - def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] = { + override def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] = { assert(from.shape.dimensionNumber == to.shape.dimensionNumber && to.shape.dimensions.zip(reduceFactors).map(e => e._1*e._2) == from.shape) def innerConnection(remainDim : Shape, fromIndex : Seq[Int], toIndex : Seq[Int], remainReduceFactor : Seq[Int]) : Traversable[Connection] = { diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala index 7fce1516..1c315dd2 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala @@ -8,7 +8,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.{NeuronGroupRef, Neu import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connection, ConnectionPolicy} class OneToOneConnection extends ConnectionPolicy { - def generate(from : NeuronIterable, to : NeuronIterable) = { + override def generate(from : NeuronIterable, to : NeuronIterable) = { assert(from.size == to.size) from.toSeq.zip(to.toSeq).map{ case (in, out) => Connection(in, out)} } diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala index 695ce76f..15199e1f 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala @@ -10,7 +10,7 @@ import scala.util.Random * Created by falezp on 07/07/16. */ class RandomConnection(connectionRate : Float, connectionConstructor : () => NeuronConnection) extends ConnectionPolicy { - def generate(from : NeuronIterable, to : NeuronIterable) = { + override def generate(from : NeuronIterable, to : NeuronIterable) = { for { in <- from out <- to diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala index e012c3cb..de008566 100644 --- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala +++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala @@ -9,7 +9,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connecti */ class WinnerTakeAllConnection(inhibitoryConnection : () => NeuronConnection) extends ConnectionPolicy { - def generate(from : NeuronIterable, to : NeuronIterable) = { + override def generate(from : NeuronIterable, to : NeuronIterable) = { new OneToOneConnection().generate(from, to)++ new FullConnection().generate(to, from).map(co => Connection(co.from, co.to, Some(inhibitoryConnection()))) } -- GitLab