Skip to content

Commit 19df668

Browse files
author
lukas.molzberger
committed
- init/connect the synapseBias from within the SynapseSlots
- TopicModel instantiation fixes
1 parent 419d1e7 commit 19df668

File tree

11 files changed

+42
-36
lines changed

11 files changed

+42
-36
lines changed

core/src/main/java/network/aika/elements/activations/ConjunctiveActivation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ protected void connectWeightUpdate() {
9999
protected void initBiases() {
100100
neuron.getSynapseBiasSynapses()
101101
.forEach(s ->
102-
s.initBiasInput(this)
102+
s.initSlots(this)
103103
);
104104

105105
super.initBiases();

core/src/main/java/network/aika/elements/links/ConjunctiveLink.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,13 @@ protected void initWeightInput() {
106106
);
107107

108108
if(synapse.isOptional())
109-
synapse.initBiasInput(output);
109+
synapse.initSlots(output);
110110
}
111111

112112
public void initFromTemplate(Link template) {
113113
super.initFromTemplate(template);
114114

115-
synapse.initBiasInput(output);
115+
synapse.initSlots(output);
116116
}
117117

118118
@Override

core/src/main/java/network/aika/elements/synapses/ConjunctiveCategoryInputSynapse.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,4 @@ public abstract class ConjunctiveCategoryInputSynapse<
4242
public SynapseSlot createOutputSlot(OA oAct) {
4343
return new AnnealingSynapseOutputSlot(oAct, this, AnnealingType.CATEGORY_INPUT);
4444
}
45-
46-
@Override
47-
public void initBiasInput(OA act) {
48-
super.initBiasInput(act);
49-
50-
act.registerInputSlot(this);
51-
}
5245
}

core/src/main/java/network/aika/elements/synapses/ConjunctiveSynapse.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import network.aika.elements.synapses.slots.SynapseInputSlot;
2222
import network.aika.elements.synapses.slots.SynapseOutputSlot;
2323
import network.aika.elements.synapses.slots.SynapseSlot;
24-
import network.aika.enums.direction.Direction;
2524
import network.aika.elements.neurons.Neuron;
2625
import network.aika.elements.neurons.ConjunctiveNeuron;
2726
import network.aika.elements.activations.Activation;
@@ -35,7 +34,6 @@
3534
import java.io.DataOutput;
3635
import java.io.IOException;
3736

38-
import static network.aika.enums.direction.Direction.OUTPUT;
3937
import static network.aika.fields.link.FieldLink.linkAndConnect;
4038
import static network.aika.queue.Phase.TRAINING;
4139
import static network.aika.utils.Utils.TOLERANCE;
@@ -88,7 +86,11 @@ public SynapseSlot createAndInitOutputSlot(OA oAct) {
8886
return slot;
8987
}
9088

91-
public void initBiasInput(OA act) {
89+
public void initSlots(OA act) {
90+
act.registerInputSlot(this);
91+
}
92+
93+
public void initSynapseBias(ConjunctiveActivation act) {
9294
linkAndConnect(synapseBias, act.getNet(synapseType.outputState()))
9395
.setPropagateUpdates(false);
9496
}

core/src/main/java/network/aika/elements/synapses/slots/SynapseOutputSlot.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package network.aika.elements.synapses.slots;
1818

1919
import network.aika.elements.activations.Activation;
20+
import network.aika.elements.activations.ConjunctiveActivation;
2021
import network.aika.elements.links.ConjunctiveLink;
2122
import network.aika.elements.synapses.ConjunctiveSynapse;
2223
import network.aika.enums.direction.Direction;
@@ -34,7 +35,7 @@ public class SynapseOutputSlot<S extends ConjunctiveSynapse, L extends Conjuncti
3435

3536
protected Field outputNet;
3637

37-
public SynapseOutputSlot(Activation act, S synapse) {
38+
public SynapseOutputSlot(ConjunctiveActivation act, S synapse) {
3839
super(
3940
act,
4041
synapse,
@@ -56,6 +57,8 @@ public void init() {
5657
),
5758
synapse.getWeight()
5859
);
60+
61+
synapse.initSynapseBias((ConjunctiveActivation) act);
5962
}
6063

6164
public Field getOutputNet() {

core/src/main/java/network/aika/elements/synapses/types/NegativeFeedbackSynapse.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package network.aika.elements.synapses.types;
1818

1919
import network.aika.Model;
20+
import network.aika.elements.activations.ConjunctiveActivation;
2021
import network.aika.elements.activations.types.BindingActivation;
2122
import network.aika.elements.activations.types.InhibitoryActivation;
2223
import network.aika.elements.links.types.NegativeFeedbackLink;
@@ -83,11 +84,9 @@ public Field getWeightForAnnealing() {
8384
}
8485

8586
@Override
86-
public void initBiasInput(BindingActivation act) {
87+
public void initSynapseBias(ConjunctiveActivation act) {
8788
linkAndConnect(weight, act.getNet(synapseType.outputState()))
8889
.setPropagateUpdates(false);
89-
90-
act.registerInputSlot(this);
9190
}
9291

9392
@Override

core/src/main/java/network/aika/elements/synapses/types/OuterPositiveFeedbackSynapse.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,6 @@ public OuterPositiveFeedbackLink createLink(PatternActivation input, BindingActi
6161
return new OuterPositiveFeedbackLink(this, input, output);
6262
}
6363

64-
@Override
65-
public void initBiasInput(BindingActivation act) {
66-
super.initBiasInput(act);
67-
68-
act.registerInputSlot(this);
69-
}
70-
7164
@Override
7265
public SynapseSlot createOutputSlot(BindingActivation oAct) {
7366
return new AnnealingSynapseOutputSlot(oAct, this, AnnealingType.OUTER_FEEDBACK);

text/src/main/java/network/aika/meta/NetworkMotifs.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import network.aika.Model;
2020
import network.aika.elements.Type;
21-
import network.aika.elements.neurons.RefType;
2221
import network.aika.elements.neurons.types.BindingNeuron;
2322
import network.aika.elements.neurons.types.InhibitoryNeuron;
2423
import network.aika.elements.neurons.types.LatentRelationNeuron;
@@ -37,7 +36,7 @@
3736
* @author Lukas Molzberger
3837
*/
3938
public class NetworkMotifs {
40-
private static final Logger log = LoggerFactory.getLogger(NetworkMotifs.class);
39+
private static final Logger LOG = LoggerFactory.getLogger(NetworkMotifs.class);
4140

4241
public static double DEFAULT_BINDING_INPUT_CATEGORY_SYNAPSE_WEIGHT = 5.0;
4342
public static double DEFAULT_PATTERN_INPUT_CATEGORY_SYNAPSE_WEIGHT = 5.0;
@@ -79,8 +78,8 @@ public static BindingNeuron addBindingNeuron(Model m, String label, double netTa
7978
return bn;
8079
}
8180

82-
public static void addInputObjectSynapse(PatternNeuron input, BindingNeuron bn, double weight, boolean propagable) {
83-
new InputObjectSynapse()
81+
public static InputObjectSynapse addInputObjectSynapse(PatternNeuron input, BindingNeuron bn, double weight, boolean propagable) {
82+
return new InputObjectSynapse()
8483
.setWeight(weight)
8584
.link(input, bn)
8685
.setPropagable(propagable)
@@ -156,7 +155,7 @@ public static InnerPositiveFeedbackSynapse addPositiveFeedbackLoop(
156155
.setPropagable(true)
157156
.adjustBias(bn.getTargetValue() + weakInputMargin);
158157

159-
log.info(" " + pSyn + " targetNetContr:" + -pSyn.getSynapseBias().getValue());
158+
LOG.info(" " + pSyn + " targetNetContr:" + -pSyn.getSynapseBias().getValue());
160159

161160
InnerPositiveFeedbackSynapse posFeedSyn = new InnerPositiveFeedbackSynapse()
162161
.setWeight(getPositiveFeedbackWeight(bn.getTargetNet(), pn.getTargetValue()))
@@ -169,7 +168,7 @@ public static InnerPositiveFeedbackSynapse addPositiveFeedbackLoop(
169168
.setInstantiable(instantiable, instantiable)
170169
.adjustBias();
171170

172-
log.info(" " + posFeedSyn + " targetNetContr:" + -posFeedSyn.getSynapseBias().getValue());
171+
LOG.info(" " + posFeedSyn + " targetNetContr:" + -posFeedSyn.getSynapseBias().getValue());
173172

174173
return posFeedSyn;
175174
}
@@ -211,6 +210,6 @@ public static void addRelation(
211210

212211
rel.linkRelation(spSyn, relSyn);
213212

214-
log.info(" " + spSyn + " targetNetContr:" + -spSyn.getSynapseBias().getValue());
213+
LOG.info(" " + spSyn + " targetNetContr:" + -spSyn.getSynapseBias().getValue());
215214
}
216215
}

text/src/main/java/network/aika/meta/TemplateModel.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,18 @@
2525
import network.aika.meta.exceptions.FailedInstantiationException;
2626
import network.aika.queue.steps.InstantiationTrigger;
2727
import network.aika.utils.Writable;
28+
import org.slf4j.Logger;
29+
import org.slf4j.LoggerFactory;
2830

2931
/**
3032
*
3133
* @author Lukas Molzberger
3234
*/
3335
public abstract class TemplateModel<T extends TemplateModel> implements InstantiationCallback, Writable {
3436

37+
private static final Logger LOG = LoggerFactory.getLogger(TemplateModel.class);
38+
39+
3540
protected String label;
3641

3742
protected T parent;
@@ -122,11 +127,17 @@ protected void generateLabel(Activation tAct, Activation iAct, String l) {
122127
protected abstract String getLabelPostfix();
123128

124129
protected static <N extends Neuron<?, ?>> N lookupInstance(Document doc, N templateN) {
125-
return (N) templateN.getActivations(doc)
130+
Activation templateInstance = templateN.getActivations(doc)
126131
.stream()
127132
.findFirst()
128133
.orElse(null)
129-
.getActiveTemplateInstance()
130-
.getNeuron();
134+
.getActiveTemplateInstance();
135+
136+
if(templateInstance == null) {
137+
LOG.warn("Unable to find instance for template Neuron: " + templateN);
138+
return null;
139+
}
140+
141+
return (N) templateInstance.getNeuron();
131142
}
132143
}

text/src/main/java/network/aika/meta/entities/EntityModel.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ public void initTemplateNeurons() {
142142
topicModel.getTopicBindingNeuron(),
143143
10.0,
144144
true
145-
);
145+
)
146+
.setInstantiable(false, false);
146147

147148
entityBN = addBindingNeuron(
148149
phraseModel.getPatternNeuron(),
@@ -256,7 +257,8 @@ public void mapResults(Document doc) {
256257
.setInstantiable(false, true);
257258

258259
topicBN = lookupInstance(doc, parent.topicBN);
259-
topicBN.setPersistent(true);
260+
if(topicBN != null)
261+
topicBN.setPersistent(true);
260262

261263
inhibitoryN = lookupInstance(doc, parent.inhibitoryN);
262264
inhibitoryN.setPersistent(true);

0 commit comments

Comments
 (0)