def createBidiSynapse(self, targetNeuron): """ Create a connection with the target neuron, using a bidirection synapse. """ self.outputBidiSynapses[targetNeuron.LayerId] = dict() # Create the bidisynapse b = BidiSynapse(self) # Connect the signals with the source neuron. b.connect("input-updated", self.bidiSynapseInputUpdated) b.connect("weight-updated", self.bidiSynapseWeightsUpdated) b.connect("lock-acquired", self.bidiSynapseLockAcquired) b.connect("lock-released", self.bidiSynapseLockReleased) b.connect("bifire", self.bidiSynapseFired) # Connect the signals with the target neuron, and then create the actual # connection. b.connect("input-updated", targetNeuron.bidiSynapseInputUpdated) b.connect("weight-updated", targetNeuron.bidiSynapseWeightsUpdated) b.connect("bifire", targetNeuron.bidiSynapseFired) b.connect("notify-endpoint-connect", targetNeuron.bidiSynapseNotifyEndpointConnect) b.connect("lock-acquired", targetNeuron.bidiSynapseLockAcquired) b.connect("lock-released", targetNeuron.bidiSynapseLockReleased) b.connectTo(targetNeuron) b.acquireLock(self) # Store the actual bidi synapse. self.outputBidiSynapses[targetNeuron.LayerId][targetNeuron.Id] = b self.numberOfOutputBidiSynapses += 1 self.numberOfBidiSynapses += 1 return b
def bidiSynapseFired(self, BidiSynapse): lockOwner = BidiSynapse.lockOwner if lockOwner is self: self.numberOfOutputBidiSynapsesFired += 1 BidiSynapse.releaseLock() else: # Let`s find out to which neuron/direction the firing # takes place :-) neuron = None if lockOwner is BidiSynapse.startPoint: neuron = BidiSynapse.endPoint numberOfWhatSynapses = self.numberOfInputBidiSynapses numberOfWhatSynapsesFired = self.numberOfInputBidiSynapsesFired #neuron.numberOfInputBidiSynapsesFired += 1 else: neuron = lockOwner numberOfWhatSynapses = self.numberOfOutputBidiSynapses numberOfWhatSynapsesFired = self.numberOfOutputBidiSynapsesFired #neuron.numberOfOutputBidiSynapsesFired += 1 BidiSynapse.acquireLock(self) self.numberOfSynapsesFired += 1 if numberOfWhatSynapsesFired <= 1: prev = self.get_property("value") self.set_property("value", prev + BidiSynapse.getValue()) # Activate the neuron if all the input synapses have fired! if numberOfWhatSynapsesFired == numberOfWhatSynapses: val = StepActivation.sigmoid(self.get_property("value")) self.set_property("value", val) self.emit("activation")
def createBidiSynapse (self, targetNeuron): """ Create a connection with the target neuron, using a bidirection synapse. """ self.outputBidiSynapses [targetNeuron.LayerId] = dict () # Create the bidisynapse b = BidiSynapse (self) # Connect the signals with the source neuron. b.connect ("input-updated", self.bidiSynapseInputUpdated) b.connect ("weight-updated", self.bidiSynapseWeightsUpdated) b.connect ("lock-acquired", self.bidiSynapseLockAcquired) b.connect ("lock-released", self.bidiSynapseLockReleased) b.connect ("bifire", self.bidiSynapseFired) # Connect the signals with the target neuron, and then create the actual # connection. b.connect ("input-updated", targetNeuron.bidiSynapseInputUpdated) b.connect ("weight-updated", targetNeuron.bidiSynapseWeightsUpdated) b.connect ("bifire", targetNeuron.bidiSynapseFired) b.connect ("notify-endpoint-connect", targetNeuron.bidiSynapseNotifyEndpointConnect) b.connect ("lock-acquired", targetNeuron.bidiSynapseLockAcquired) b.connect ("lock-released", targetNeuron.bidiSynapseLockReleased) b.connectTo (targetNeuron) b.acquireLock (self) # Store the actual bidi synapse. self.outputBidiSynapses [targetNeuron.LayerId][targetNeuron.Id] = b self.numberOfOutputBidiSynapses += 1 self.numberOfBidiSynapses += 1 return b
def bidiSynapseFired (self, BidiSynapse): lockOwner = BidiSynapse.lockOwner if lockOwner is self: self.numberOfOutputBidiSynapsesFired += 1 BidiSynapse.releaseLock () else: # Let`s find out to which neuron/direction the firing # takes place :-) neuron = None if lockOwner is BidiSynapse.startPoint: neuron = BidiSynapse.endPoint numberOfWhatSynapses = self.numberOfInputBidiSynapses numberOfWhatSynapsesFired = self.numberOfInputBidiSynapsesFired #neuron.numberOfInputBidiSynapsesFired += 1 else: neuron = lockOwner numberOfWhatSynapses = self.numberOfOutputBidiSynapses numberOfWhatSynapsesFired = self.numberOfOutputBidiSynapsesFired #neuron.numberOfOutputBidiSynapsesFired += 1 BidiSynapse.acquireLock (self) self.numberOfSynapsesFired +=1 if numberOfWhatSynapsesFired <= 1: prev = self.get_property ("value") self.set_property ("value", prev + BidiSynapse.getValue ()) # Activate the neuron if all the input synapses have fired! if numberOfWhatSynapsesFired == numberOfWhatSynapses: val = StepActivation.sigmoid (self.get_property ("value")) self.set_property ("value", val) self.emit ("activation")
def bidiSynapseLockReleased(self, BidiSynapse): if BidiSynapse.lockOwner is not self: print "[Lock Released] by %s" % BidiSynapse.lockOwner BidiSynapse.acquireLock(self)
def bidiSynapseLockReleased (self, BidiSynapse): if BidiSynapse.lockOwner is not self: print "[Lock Released] by %s" % BidiSynapse.lockOwner BidiSynapse.acquireLock (self)