Skip to content

Commit 48ad006

Browse files
author
lukas.molzberger
committed
- Introduced Neuron/Synapse Type Definitions
1 parent 354be3a commit 48ad006

File tree

17 files changed

+64
-44
lines changed

17 files changed

+64
-44
lines changed

core/src/main/java/network/aika/elements/neurons/ConjunctiveNeuron.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
*/
3737
public abstract class ConjunctiveNeuron<N extends ConjunctiveNeuron, A extends ConjunctiveActivation> extends Neuron<N, A> {
3838

39-
private static final Logger log = LoggerFactory.getLogger(ConjunctiveNeuron.class);
39+
private static final Logger LOG = LoggerFactory.getLogger(ConjunctiveNeuron.class);
4040

4141
public ConjunctiveNeuron(NeuronProvider np) {
4242
super(np);
@@ -91,8 +91,4 @@ public void addInactiveLinks(Activation act) {
9191
s.createAndInitLink(null, act)
9292
);
9393
}
94-
95-
public ActivationFunction getActivationFunction() {
96-
return ActivationFunction.RECTIFIED_HYPERBOLIC_TANGENT;
97-
}
9894
}

core/src/main/java/network/aika/elements/neurons/DisjunctiveNeuron.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,4 @@ public DisjunctiveNeuron(Model m, RefType rt) {
3838
@Override
3939
public void addInactiveLinks(Activation act) {
4040
}
41-
42-
public ActivationFunction getActivationFunction() {
43-
return ActivationFunction.LIMITED_RECTIFIED_LINEAR_UNIT;
44-
}
4541
}

core/src/main/java/network/aika/elements/neurons/Neuron.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import network.aika.elements.activations.bsslots.BSSlotDefinition;
2626
import network.aika.elements.synapses.CategoryInputSynapse;
2727
import network.aika.elements.synapses.CategorySynapse;
28+
import network.aika.elements.typedef.NeuronTypeDefinition;
2829
import network.aika.enums.Scope;
2930
import network.aika.enums.Trigger;
3031
import network.aika.exceptions.MissingInputCategoryNeuron;
@@ -47,7 +48,7 @@
4748
import java.util.function.Predicate;
4849
import java.util.stream.Stream;
4950

50-
import static network.aika.elements.neurons.NeuronTypeHolder.getHolder;
51+
import static network.aika.elements.typedef.NeuronTypeDefinition.getDefinition;
5152
import static network.aika.elements.neurons.RefType.*;
5253
import static network.aika.queue.Phase.TRAINING;
5354
import static network.aika.utils.Utils.TOLERANCE;
@@ -64,7 +65,7 @@ public abstract class Neuron<N extends Neuron, A extends Activation> implements
6465

6566
protected static final String CATEGORY_LABEL = " Category";
6667

67-
private final NeuronTypeHolder neuronType = getHolder(getClass());
68+
private final NeuronTypeDefinition neuronType = getDefinition(getClass());
6869

6970
private int synapseIdCounter = 0;
7071

@@ -308,7 +309,9 @@ public boolean isTrainingAllowed() {
308309

309310
public abstract void addInactiveLinks(Activation act);
310311

311-
public abstract ActivationFunction getActivationFunction();
312+
public final ActivationFunction getActivationFunction() {
313+
return neuronType.getActivationFunction();
314+
}
312315

313316
public void count(A act) {
314317
}

core/src/main/java/network/aika/elements/neurons/NeuronType.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package network.aika.elements.neurons;
1818

19+
import network.aika.ActivationFunction;
1920
import network.aika.elements.Type;
2021
import network.aika.elements.activations.bsslots.BSSlotDefinition;
2122

@@ -32,7 +33,9 @@
3233
@Target(ElementType.TYPE)
3334
public @interface NeuronType {
3435

35-
public Type type();
36+
Type type();
3637

37-
public BSSlotDefinition[] bindingSignalSlots();
38+
ActivationFunction activationFunction();
39+
40+
BSSlotDefinition[] bindingSignalSlots();
3841
}

core/src/main/java/network/aika/elements/neurons/types/BindingCategoryNeuron.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import network.aika.elements.neurons.NeuronType;
2626
import network.aika.elements.neurons.RefType;
2727

28+
import static network.aika.ActivationFunction.LIMITED_RECTIFIED_LINEAR_UNIT;
2829
import static network.aika.elements.Type.BINDING;
2930
import static network.aika.elements.activations.bsslots.BSSlotDefinition.SINGLE_INPUT;
3031
import static network.aika.elements.activations.bsslots.BSSlotDefinition.SINGLE_SAME;
@@ -34,6 +35,7 @@
3435
*/
3536
@NeuronType(
3637
type = BINDING,
38+
activationFunction = LIMITED_RECTIFIED_LINEAR_UNIT,
3739
bindingSignalSlots = {SINGLE_INPUT, SINGLE_SAME}
3840
)
3941
public class BindingCategoryNeuron extends CategoryNeuron {

core/src/main/java/network/aika/elements/neurons/types/BindingNeuron.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.io.IOException;
3333
import java.util.Comparator;
3434

35+
import static network.aika.ActivationFunction.RECTIFIED_HYPERBOLIC_TANGENT;
3536
import static network.aika.elements.Type.BINDING;
3637
import static network.aika.elements.activations.bsslots.BSSlotDefinition.*;
3738
import static network.aika.elements.neurons.RefType.CATEGORY;
@@ -42,6 +43,7 @@
4243
*/
4344
@NeuronType(
4445
type = BINDING,
46+
activationFunction = RECTIFIED_HYPERBOLIC_TANGENT,
4547
bindingSignalSlots = {SINGLE_INPUT, SINGLE_SAME_FEEDBACK}
4648
)
4749
public class BindingNeuron extends ConjunctiveNeuron<BindingNeuron, BindingActivation> {

core/src/main/java/network/aika/elements/neurons/types/InhibitoryCategoryNeuron.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import network.aika.elements.neurons.NeuronType;
2626
import network.aika.elements.neurons.RefType;
2727

28+
import static network.aika.ActivationFunction.LIMITED_RECTIFIED_LINEAR_UNIT;
2829
import static network.aika.elements.Type.INHIBITORY;
2930
import static network.aika.elements.activations.bsslots.BSSlotDefinition.SINGLE_INPUT;
3031

@@ -33,6 +34,7 @@
3334
*/
3435
@NeuronType(
3536
type = INHIBITORY,
37+
activationFunction = LIMITED_RECTIFIED_LINEAR_UNIT,
3638
bindingSignalSlots = SINGLE_INPUT
3739
)
3840
public class InhibitoryCategoryNeuron extends CategoryNeuron {

core/src/main/java/network/aika/elements/neurons/types/InhibitoryNeuron.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import network.aika.elements.synapses.types.InhibitoryCategoryInputSynapse;
2929
import network.aika.elements.synapses.types.InhibitoryCategorySynapse;
3030

31+
import static network.aika.ActivationFunction.LIMITED_RECTIFIED_LINEAR_UNIT;
3132
import static network.aika.elements.Type.INHIBITORY;
3233
import static network.aika.elements.activations.bsslots.BSSlotDefinition.SINGLE_INPUT;
3334
import static network.aika.elements.neurons.RefType.CATEGORY;
@@ -39,6 +40,7 @@
3940
*/
4041
@NeuronType(
4142
type = INHIBITORY,
43+
activationFunction = LIMITED_RECTIFIED_LINEAR_UNIT,
4244
bindingSignalSlots = SINGLE_INPUT
4345
)
4446
public class InhibitoryNeuron extends DisjunctiveNeuron<InhibitoryNeuron, InhibitoryActivation> {
@@ -77,11 +79,6 @@ public InhibitoryActivation createActivation(Document doc) {
7779
return new InhibitoryActivation(doc.createActivationId(), doc, this);
7880
}
7981

80-
public ActivationFunction getActivationFunction() {
81-
return ActivationFunction.LIMITED_RECTIFIED_LINEAR_UNIT;
82-
}
83-
84-
8582
@Override
8683
public CategorySynapse createCategorySynapse() {
8784
return new InhibitoryCategorySynapse();

core/src/main/java/network/aika/elements/neurons/types/LatentRelationNeuron.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.io.DataOutput;
3131
import java.io.IOException;
3232

33+
import static network.aika.ActivationFunction.RECTIFIED_HYPERBOLIC_TANGENT;
3334
import static network.aika.elements.Type.BINDING;
3435
import static network.aika.queue.Phase.TRAINING;
3536
import static network.aika.utils.Utils.TOLERANCE;
@@ -40,6 +41,7 @@
4041
*/
4142
@NeuronType(
4243
type = BINDING,
44+
activationFunction = RECTIFIED_HYPERBOLIC_TANGENT,
4345
bindingSignalSlots = {}
4446
)
4547
public class LatentRelationNeuron extends BindingNeuron {

core/src/main/java/network/aika/elements/neurons/types/PatternCategoryNeuron.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import network.aika.elements.neurons.NeuronType;
2626
import network.aika.elements.neurons.RefType;
2727

28+
import static network.aika.ActivationFunction.LIMITED_RECTIFIED_LINEAR_UNIT;
2829
import static network.aika.elements.Type.PATTERN;
2930
import static network.aika.elements.activations.bsslots.BSSlotDefinition.SINGLE_SAME;
3031

@@ -33,6 +34,7 @@
3334
*/
3435
@NeuronType(
3536
type = PATTERN,
37+
activationFunction = LIMITED_RECTIFIED_LINEAR_UNIT,
3638
bindingSignalSlots = SINGLE_SAME
3739
)
3840
public class PatternCategoryNeuron extends CategoryNeuron {

0 commit comments

Comments
 (0)