Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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")
Ejemplo n.º 5
0
 def bidiSynapseLockReleased(self, BidiSynapse):
     if BidiSynapse.lockOwner is not self:
         print "[Lock Released] by %s" % BidiSynapse.lockOwner
         BidiSynapse.acquireLock(self)
Ejemplo n.º 6
0
 def bidiSynapseLockReleased (self, BidiSynapse):
     if BidiSynapse.lockOwner is not self:
         print "[Lock Released] by %s" % BidiSynapse.lockOwner
         BidiSynapse.acquireLock (self)