Skip to content

Commit 930fa08

Browse files
author
Lukas Molzberger
committed
SynEvalResult
1 parent 64e3883 commit 930fa08

File tree

3 files changed

+50
-32
lines changed

3 files changed

+50
-32
lines changed

src/main/java/org/aika/corpus/Document.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,18 @@ public interface SynapseEvaluation {
710710
* @param oAct
711711
* @return
712712
*/
713-
Synapse.Key evaluate(Activation iAct, Activation oAct);
713+
SynEvalResult evaluate(Activation iAct, Activation oAct);
714+
}
715+
716+
717+
public static class SynEvalResult {
718+
public SynEvalResult(Synapse.Key synapseKey, double significance) {
719+
this.synapseKey = synapseKey;
720+
this.significance = significance;
721+
}
722+
723+
public Synapse.Key synapseKey;
724+
public double significance;
714725
}
715726

716727

src/main/java/org/aika/neuron/INeuron.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,9 @@ public void train(Document doc, Activation targetAct, double learnRate, Document
342342
biasDelta += x;
343343
for (INeuron n : doc.finallyActivatedNeurons) {
344344
for(Activation iAct: n.getFinalActivations(doc)) {
345-
Synapse.Key sk = se.evaluate(iAct, targetAct);
346-
if(sk != null) {
347-
trainSynapse(doc, iAct, sk, x, v);
345+
Document.SynEvalResult ser = se.evaluate(iAct, targetAct);
346+
if(ser != null) {
347+
trainSynapse(doc, iAct, ser, x, v);
348348
}
349349
}
350350
}
@@ -353,29 +353,29 @@ public void train(Document doc, Activation targetAct, double learnRate, Document
353353
}
354354

355355

356-
private void trainSynapse(Document doc, Activation iAct, Synapse.Key sk, double x, long v) {
356+
private void trainSynapse(Document doc, Activation iAct, Document.SynEvalResult ser, double x, long v) {
357357
if (iAct.visitedNeuronTrain == v) return;
358358
iAct.visitedNeuronTrain = v;
359359

360360
INeuron inputNeuron = iAct.key.node.neuron.get(doc);
361361
if(inputNeuron == this) {
362362
return;
363363
}
364-
double deltaW = x * iAct.finalState.value;
364+
double deltaW = x * ser.significance * iAct.finalState.value;
365365

366-
Provider<InputNode> inp = inputNeuron.outputNodes.get(sk.createInputNodeKey());
366+
Provider<InputNode> inp = inputNeuron.outputNodes.get(ser.synapseKey.createInputNodeKey());
367367
Synapse synapse = null;
368368
InputNode in = null;
369369
if(inp != null) {
370370
in = inp.get(doc);
371-
synapse = in.getSynapse(sk.relativeRid, provider);
371+
synapse = in.getSynapse(ser.synapseKey.relativeRid, provider);
372372
}
373373

374374
if(synapse == null) {
375-
synapse = new Synapse(provider.model, inputNeuron.provider, provider, sk);
375+
synapse = new Synapse(provider.model, inputNeuron.provider, provider, ser.synapseKey);
376376

377377
if(in == null) {
378-
in = InputNode.add(provider.model, sk.createInputNodeKey(), synapse.input.get(doc));
378+
in = InputNode.add(provider.model, ser.synapseKey.createInputNodeKey(), synapse.input.get(doc));
379379
}
380380
in.setSynapse(synapse);
381381
synapse.link();

src/test/java/org/aika/network/TrainingTest.java

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,19 @@ public void testTraining() {
4848
targetAct.errorSignal = 1.0 - targetAct.finalState.value;
4949

5050
out.get().train(doc, targetAct, 0.01,
51-
(iAct, oAct) -> new Synapse.Key(
52-
false,
53-
0,
54-
null,
55-
Range.Operator.EQUALS,
56-
Range.Mapping.START,
57-
true,
58-
Range.Operator.EQUALS,
59-
Range.Mapping.END,
60-
true
51+
(iAct, oAct) -> new Document.SynEvalResult(
52+
new Synapse.Key(
53+
false,
54+
0,
55+
null,
56+
Range.Operator.EQUALS,
57+
Range.Mapping.START,
58+
true,
59+
Range.Operator.EQUALS,
60+
Range.Mapping.END,
61+
true
62+
)
63+
, 1.0
6164
)
6265
);
6366

@@ -91,20 +94,24 @@ public void testTraining1() {
9194
new Document.TrainConfig()
9295
.setLearnRate(2.0)
9396
.setPerformBackpropagation(false)
94-
.setSynapseEvaluation((iAct, oAct) -> new Synapse.Key(
95-
false,
96-
0,
97-
null,
98-
Range.Operator.EQUALS,
99-
Range.Mapping.START,
100-
true,
101-
Range.Operator.EQUALS,
102-
Range.Mapping.END,
103-
true
104-
))
97+
.setSynapseEvaluation((iAct, oAct) ->
98+
new Document.SynEvalResult(new Synapse.Key(
99+
false,
100+
0,
101+
null,
102+
Range.Operator.EQUALS,
103+
Range.Mapping.START,
104+
true,
105+
Range.Operator.EQUALS,
106+
Range.Mapping.END,
107+
true
108+
),
109+
1.0
110+
)
111+
)
105112
);
106113

107-
doc.adjust();
114+
doc.commit();
108115

109116
doc.clearActivations();
110117
}

0 commit comments

Comments
 (0)