コード例 #1
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
    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")
コード例 #2
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
 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")
コード例 #3
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
    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")
コード例 #4
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
 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")
コード例 #5
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
    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
コード例 #6
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
 def bidiSynapseLockReleased(self, BidiSynapse):
     if BidiSynapse.lockOwner is not self:
         print "[Lock Released] by %s" % BidiSynapse.lockOwner
         BidiSynapse.acquireLock(self)
コード例 #7
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
 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
コード例 #8
0
ファイル: BidiNeuron.py プロジェクト: kelvict/spiral
 def bidiSynapseLockReleased (self, BidiSynapse):
     if BidiSynapse.lockOwner is not self:
         print "[Lock Released] by %s" % BidiSynapse.lockOwner
         BidiSynapse.acquireLock (self)