Skip to content

Commit eae8f7a

Browse files
author
Lukas Molzberger
committed
Merge remote-tracking branch 'origin/master'
2 parents bd15795 + dd1a94b commit eae8f7a

File tree

4 files changed

+62
-8
lines changed

4 files changed

+62
-8
lines changed

src/main/java/network/aika/Model.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import network.aika.lattice.InputNode;
2121
import network.aika.lattice.Node;
2222
import network.aika.neuron.INeuron;
23+
import network.aika.neuron.INeuron.Type;
2324
import network.aika.neuron.Neuron;
2425
import network.aika.Provider.SuspensionMode;
2526
import network.aika.neuron.activation.Linker;
@@ -159,7 +160,13 @@ public Neuron createNeuron(String label) {
159160

160161

161162
public Neuron createNeuron(String label, String outputText) {
162-
INeuron n = new INeuron(this, label, outputText);
163+
INeuron n = new INeuron(this, label, outputText, null, ActivationFunction.RECTIFIED_HYPERBOLIC_TANGENT);
164+
return n.getProvider();
165+
}
166+
167+
168+
public Neuron createNeuron(String label, String outputText, Type type, ActivationFunction actF) {
169+
INeuron n = new INeuron(this, label, outputText, type, actF);
163170
return n.getProvider();
164171
}
165172

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

+26-2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public class INeuron extends AbstractNode<Neuron> implements Comparable<INeuron>
6464

6565

6666
public enum Type {
67+
INPUT,
6768
EXCITATORY,
6869
INHIBITORY
6970
}
@@ -81,7 +82,7 @@ public enum Type {
8182

8283
private Writable extension;
8384

84-
ActivationFunction activationFunction = ActivationFunction.RECTIFIED_HYPERBOLIC_TANGENT;
85+
ActivationFunction activationFunction;
8586

8687

8788
private volatile int synapseIdCounter = 0;
@@ -176,6 +177,11 @@ public Collection<Synapse> getPassiveInputSynapses() {
176177
}
177178

178179

180+
public void addRequiredSlot(int slot) {
181+
slotRequired.add(slot);
182+
}
183+
184+
179185
public ActivationFunction getActivationFunction() {
180186
return activationFunction;
181187
}
@@ -348,8 +354,11 @@ private INeuron() {
348354
}
349355

350356

351-
public INeuron(Model m, String label, String outputText) {
357+
public INeuron(Model m, String label, String outputText, Type type, ActivationFunction actF) {
352358
this.label = label;
359+
this.type = type;
360+
this.activationFunction = actF;
361+
353362
setOutputText(outputText);
354363

355364
if(m.getNeuronExtensionFactory() != null) {
@@ -747,6 +756,21 @@ public void setBias(double b) {
747756
}
748757

749758

759+
public void updateBiasDelta(double biasDelta) {
760+
this.biasDelta += biasDelta;
761+
}
762+
763+
764+
public double getBias() {
765+
return bias;
766+
}
767+
768+
769+
public double getNewBias() {
770+
return bias + biasDelta;
771+
}
772+
773+
750774
public void register(Activation act) {
751775
Document doc = act.getDocument();
752776

src/main/java/network/aika/neuron/Neuron.java

+27-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import network.aika.neuron.INeuron.Type;
2626

2727
import java.util.*;
28+
import java.util.function.Predicate;
2829
import java.util.stream.Stream;
2930

3031
/**
@@ -296,30 +297,47 @@ public Activation getActivation(Document doc, int begin, int end, boolean onlyFi
296297
}
297298

298299

299-
public void addInMemoryInputSynapse(Synapse s) {
300+
public Synapse selectInputSynapse(Neuron inputNeuron, Predicate<Synapse> filter) {
301+
lock.acquireWriteLock();
302+
Synapse synapse = inMemoryInputSynapses.subMap(
303+
new Synapse(inputNeuron, this, Integer.MIN_VALUE), true,
304+
new Synapse(inputNeuron, this, Integer.MAX_VALUE), true
305+
)
306+
.keySet()
307+
.stream()
308+
.filter(filter)
309+
.findAny()
310+
.orElse(null);
311+
312+
lock.releaseWriteLock();
313+
return synapse;
314+
}
315+
316+
317+
void addInMemoryInputSynapse(Synapse s) {
300318
lock.acquireWriteLock();
301319
inMemoryInputSynapses.put(s, s);
302320
inputSynapsesById.put(s.getId(), s);
303321
lock.releaseWriteLock();
304322
}
305323

306324

307-
public void removeInMemoryInputSynapse(Synapse s) {
325+
void removeInMemoryInputSynapse(Synapse s) {
308326
lock.acquireWriteLock();
309327
inMemoryInputSynapses.remove(s);
310328
inputSynapsesById.remove(s.getId());
311329
lock.releaseWriteLock();
312330
}
313331

314332

315-
public void addInMemoryOutputSynapse(Synapse s) {
333+
void addInMemoryOutputSynapse(Synapse s) {
316334
lock.acquireWriteLock();
317335
inMemoryOutputSynapses.put(s, s);
318336
lock.releaseWriteLock();
319337
}
320338

321339

322-
public void removeInMemoryOutputSynapse(Synapse s) {
340+
void removeInMemoryOutputSynapse(Synapse s) {
323341
lock.acquireWriteLock();
324342
inMemoryOutputSynapses.remove(s);
325343
lock.releaseWriteLock();
@@ -349,6 +367,11 @@ public Collection<Synapse> getInMemoryInputSynapses() {
349367
}
350368

351369

370+
public Collection<Synapse> getInMemoryOutputSynapses() {
371+
return inMemoryOutputSynapses.values();
372+
}
373+
374+
352375
private static Collection<Synapse.Builder> getSynapseBuilders(Collection<Builder> builders) {
353376
ArrayList<Synapse.Builder> result = new ArrayList<>();
354377
for(Builder b: builders) {

src/main/java/network/aika/neuron/relation/PositionRelation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public Stream<Activation> getActivations(INeuron n, Activation linkedAct) {
107107

108108
@Override
109109
public void registerRequiredSlots(Neuron input) {
110-
input.get().slotRequired.add(fromSlot);
110+
input.get().addRequiredSlot(fromSlot);
111111
}
112112

113113

0 commit comments

Comments
 (0)