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 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 bidiSynapseNotifyEndpointConnect(self, BidiSynapse): """ """ BidiSynapse.endPoint = self layer_id = BidiSynapse.startPoint.LayerId neuron_id = BidiSynapse.startPoint.Id if layer_id not in self.inputBidiSynapses.keys(): self.inputBidiSynapses[layer_id] = dict() if neuron_id not in self.inputBidiSynapses[layer_id]: self.inputBidiSynapses[layer_id][neuron_id] = BidiSynapse # keep track of the total number of the synapses self.numberOfInputBidiSynapses += 1 self.numberOfSynapses += 1 # update the number of inputs this neuron accepts self.numberOfInputs += 1 BidiSynapse.emit("notify-bidisynapse-connected") else: BidiSynapse.emit("notify-bidisynapse-connection-failed")
def bidiSynapseNotifyEndpointConnect (self, BidiSynapse): """ """ BidiSynapse.endPoint = self layer_id = BidiSynapse.startPoint.LayerId neuron_id= BidiSynapse.startPoint.Id if layer_id not in self.inputBidiSynapses.keys (): self.inputBidiSynapses [layer_id] = dict () if neuron_id not in self.inputBidiSynapses [layer_id]: self.inputBidiSynapses [layer_id][neuron_id] = BidiSynapse # keep track of the total number of the synapses self.numberOfInputBidiSynapses += 1 self.numberOfSynapses += 1 # update the number of inputs this neuron accepts self.numberOfInputs += 1 BidiSynapse.emit ("notify-bidisynapse-connected") else: BidiSynapse.emit ("notify-bidisynapse-connection-failed")
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 bidiSynapseLockReleased(self, BidiSynapse): if BidiSynapse.lockOwner is not self: print "[Lock Released] by %s" % BidiSynapse.lockOwner BidiSynapse.acquireLock(self)
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 bidiSynapseLockReleased (self, BidiSynapse): if BidiSynapse.lockOwner is not self: print "[Lock Released] by %s" % BidiSynapse.lockOwner BidiSynapse.acquireLock (self)