Skip to content

Commit 517250f

Browse files
author
lukas.molzberger
committed
- fixed isPosFeedbackSlotBlocked for primary BindingActivations
1 parent 19df668 commit 517250f

File tree

12 files changed

+61
-51
lines changed

12 files changed

+61
-51
lines changed

core/src/main/java/network/aika/elements/activations/types/BindingActivation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public boolean checkPrimary() {
131131
private boolean isPosFeedbackSlotBlocked() {
132132
SynapseSlot<InnerPositiveFeedbackSynapse, InnerPositiveFeedbackLink> slot = getInputSlotBySynapseType(InnerPositiveFeedbackSynapse.class);
133133

134-
if(slot == null)
134+
if(slot == null || slot.getLinks().count() == 0)
135135
return false;
136136

137137
InnerPositiveFeedbackLink l = slot.getSelectedLink();

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,6 @@ default void instantiateCategoryLink(Activation instanceAct) {
4444
if(categoryAct == null || instanceAct == null)
4545
return;
4646

47-
Link l = categoryAct.getInputLink(instanceAct, getSynapse().getSynapseId());
48-
if(l != null)
49-
return;
50-
5147
CategorySynapse s = createCategorySynapse();
5248
s.initFromTemplate(instanceAct.getNeuron(), categoryAct.getNeuron(), getSynapse());
5349

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public abstract class Neuron<N extends Neuron, A extends Activation> implements
8383

8484
protected boolean allowTraining = true;
8585

86-
private boolean instantiable = true;
86+
private boolean instantiable;
8787

8888
protected InitParams initParams;
8989

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ public abstract class Synapse<S extends Synapse, I extends Neuron, O extends Neu
7777

7878
private Relation relation;
7979

80-
private boolean inputSideInstantiable = true;
81-
private boolean outputSideInstantiable = true;
80+
private boolean inputSideInstantiable;
81+
private boolean outputSideInstantiable;
8282

8383
protected SumField weight = (SumField) new SumField(this, "weight", TOLERANCE)
8484
.setQueued(getQueue(), TRAINING, false)

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

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

19-
import network.aika.elements.activations.Activation;
2019
import network.aika.elements.activations.ConjunctiveActivation;
2120
import network.aika.elements.links.ConjunctiveLink;
2221
import network.aika.elements.synapses.ConjunctiveSynapse;

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

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ public static OuterPositiveFeedbackSynapse addOuterPositiveFeedbackLoop(
9090
PatternNeuron pn,
9191
BindingNeuron bn,
9292
PatternNeuron feedbackPN,
93-
double psWeight
93+
double psWeight,
94+
boolean instantiable
9495
) {
9596
addPositiveFeedbackLoop(
9697
bn,
@@ -99,43 +100,27 @@ public static OuterPositiveFeedbackSynapse addOuterPositiveFeedbackLoop(
99100
0.0,
100101
false,
101102
false,
102-
true
103+
instantiable
103104
).setPropagable(true);
104105

105106
return new OuterPositiveFeedbackSynapse()
106107
.setWeight(getPositiveFeedbackWeight(bn.getTargetNet(), bn.getTargetValue()))
107108
.link(feedbackPN, bn)
109+
.setInstantiable(true, true)
108110
.adjustBias();
109111
}
110112

111-
public static void addInhibitoryLoop(BindingNeuron bn, InhibitoryNeuron in, double weight) {
113+
public static void addInhibitoryLoop(BindingNeuron bn, InhibitoryNeuron in, double weight, boolean instantiable) {
112114
new InhibitorySynapse()
113115
.setWeight(1.0)
114-
.link(bn, in);
116+
.link(bn, in)
117+
.setInstantiable(instantiable, instantiable);
115118

116119
new NegativeFeedbackSynapse()
117120
.setWeight(weight)
118121
.link(in, bn)
119-
.adjustBias();
120-
}
121-
122-
public static InnerPositiveFeedbackSynapse addPositiveFeedbackLoop(
123-
BindingNeuron bn,
124-
PatternNeuron pn,
125-
double weight,
126-
double weakInputMargin,
127-
boolean allowRelaxedMatching,
128-
boolean isOptional
129-
) {
130-
return addPositiveFeedbackLoop(
131-
bn,
132-
pn,
133-
weight,
134-
weakInputMargin,
135-
allowRelaxedMatching,
136-
isOptional,
137-
true
138-
);
122+
.adjustBias()
123+
.setInstantiable(instantiable, instantiable);
139124
}
140125

141126
public static InnerPositiveFeedbackSynapse addPositiveFeedbackLoop(

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

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ public void initTemplateNeurons() {
135135
.adjustBias()
136136
.setInstantiable(true, true)
137137
.getInput()
138-
.setPersistent(true);
138+
.setPersistent(true)
139+
.setInstantiable(true);
139140

140141
addInputObjectSynapse(
141142
entityPattern,
@@ -151,20 +152,24 @@ public void initTemplateNeurons() {
151152
10.0,
152153
BINDING_NET_TARGET,
153154
true
154-
).setTypeDescription("Abstract Phrase -> Entity BN");
155+
)
156+
.setTypeDescription("Abstract Phrase -> Entity BN");
155157

156158
entityBN.makeAbstract()
157159
.setWeight(getDefaultInputCategorySynapseWeight(entityBN.getType()))
158160
.adjustBias()
159-
.setInstantiable(true, true);
161+
.setInstantiable(true, true)
162+
.getInput()
163+
.setInstantiable(true);
160164

161165
addPositiveFeedbackLoop(
162166
entityBN,
163167
entityPattern,
164168
2.5,
165169
0.0,
166170
false,
167-
false
171+
false,
172+
true
168173
);
169174

170175
inhibitoryN = new InhibitoryNeuron(getModel(), TEMPLATE_MODEL)
@@ -174,12 +179,15 @@ public void initTemplateNeurons() {
174179

175180
inhibitoryN.makeAbstract()
176181
.setInstantiable(true, true)
177-
.setWeight(1.0);
182+
.setWeight(1.0)
183+
.getInput()
184+
.setInstantiable(true);
178185

179186
addInhibitoryLoop(
180187
entityBN,
181188
inhibitoryN,
182-
NEG_MARGIN * -entityBN.getTargetNet()
189+
NEG_MARGIN * -entityBN.getTargetNet(),
190+
true
183191
);
184192

185193
topicBN = addBindingNeuron(
@@ -191,7 +199,9 @@ public void initTemplateNeurons() {
191199
topicBN.makeAbstract()
192200
.setWeight(getDefaultInputCategorySynapseWeight(topicBN.getType()))
193201
.adjustBias()
194-
.setInstantiable(true, true);
202+
.setInstantiable(true, true)
203+
.getInput()
204+
.setInstantiable(true);
195205

196206
disable();
197207
}
@@ -202,7 +212,8 @@ public void initOuterSynapses() {
202212
entityPattern,
203213
topicBN,
204214
topicModel.getTopicPatternNeuron(),
205-
2.5
215+
2.5,
216+
true
206217
);
207218
}
208219

@@ -231,19 +242,20 @@ public Neuron resolveInstance(Neuron template, Document doc) {
231242
@Override
232243
public void prepareInstantiation() {
233244
setInstantiable(true);
234-
phraseModel.getEntityBN().setInstantiable(false);
235-
phraseModel.getPatternNeuron().setInstantiable(false);
245+
phraseModel.setInstantiable(false);
236246
}
237247

238248
@Override
239249
public void mapResults(Document doc) {
240250
phraseModel.getEntityBN().setInstantiable(false);
241251
phraseModel.getPatternNeuron().setInstantiable(true);
252+
phraseModel.getInhibitoryNeuron().setInstantiable(false);
242253

243254
entityPattern = lookupInstance(doc, parent.entityPattern);
244255
entityPattern.setPersistent(true);
245256

246257
entityPattern.getOutputSynapseByType(OuterPositiveFeedbackSynapse.class)
258+
.setInstantiable(true, true)
247259
.setOptional(true);
248260

249261
Synapse s = entityPattern.getOutputSynapse(getTopicModel().getTopicBindingNeuron().getProvider());
@@ -294,6 +306,9 @@ public void setInstantiable(boolean instantiable) {
294306

295307
topicBN.setInstantiable(instantiable);
296308
topicBN.setInputSynapsesInstantiable(instantiable, instantiable);
309+
310+
inhibitoryN.setInstantiable(instantiable);
311+
inhibitoryN.setInputSynapsesInstantiable(instantiable, instantiable);
297312
}
298313

299314
public Model getModel() {

text/src/main/java/network/aika/meta/sequences/PhraseModel.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ public BindingNeuron getEntityBN() {
5959
return entityBN;
6060
}
6161

62+
public void setInstantiable(boolean instantiable) {
63+
entityBN.setInstantiable(instantiable);
64+
sequencePatternN.setInstantiable(instantiable);
65+
inhibitoryN.setInstantiable(instantiable);
66+
}
67+
6268
@Override
6369
public String getPatternType() {
6470
return "Phrase";
@@ -78,6 +84,8 @@ public void initStaticNeurons() {
7884
entityBN.makeAbstract()
7985
.setWeight(getDefaultInputCategorySynapseWeight(entityBN.getType()))
8086
.adjustBias();
87+
88+
setInstantiable(true);
8189
}
8290

8391
@Override
@@ -86,7 +94,8 @@ public void initOuterSynapses() {
8694
sequencePatternN,
8795
entityBN,
8896
entityModel.getEntityPattern(),
89-
2.5
97+
2.5,
98+
true
9099
).setOptional(true);
91100
}
92101

text/src/main/java/network/aika/meta/sequences/SequenceModel.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ protected BindingNeuron createSubPhraseBindingNeuron() {
223223
2.5,
224224
0.0,
225225
false,
226+
true,
226227
true
227228
);
228229

@@ -303,7 +304,8 @@ protected BindingNeuron createBindingNeuron(
303304
addInhibitoryLoop(
304305
bn,
305306
inhibitoryN,
306-
getNegMargin(pos) * -bn.getTargetNet()
307+
getNegMargin(pos) * -bn.getTargetNet(),
308+
true
307309
);
308310

309311
addPositiveFeedbackLoop(
@@ -312,7 +314,8 @@ protected BindingNeuron createBindingNeuron(
312314
p.pfWeight,
313315
p.weakInputMargin,
314316
allowRelaxedMatching,
315-
isOptional
317+
isOptional,
318+
true
316319
);
317320

318321
return bn;

text/src/main/java/network/aika/meta/topics/TopicModel.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public void initTemplateNeurons() {
177177
2.5,
178178
0.0,
179179
false,
180+
true,
180181
true
181182
);
182183

@@ -194,7 +195,8 @@ public void initTemplateNeurons() {
194195
addInhibitoryLoop(
195196
topicBN,
196197
inhibitoryN,
197-
NEG_MARGIN * -topicBN.getTargetNet()
198+
NEG_MARGIN * -topicBN.getTargetNet(),
199+
true
198200
);
199201

200202
setInstantiable(false);

0 commit comments

Comments
 (0)