예제 #1
0
파일: local.py 프로젝트: openre/openre
 def send_synapse(
     self,
     pre_domain_index, pre_layer_index, pre_neuron_address,
     post_layer_index, post_x, post_y):
     """
     Обрабатываем информацию о синапсе из другого домена
     self == post_domain
     """
     pre_domain = self.net.domains[pre_domain_index]
     pre_layer = pre_domain.layers[pre_layer_index]
     post_layer = self.layers[post_layer_index]
     local_pre_neuron_address \
             = self.receiver_index.get_local_address(
                 pre_domain_index, pre_neuron_address)
     # create IS_RECEIVER neuron
     if not local_pre_neuron_address:
         self.remote_neuron_address += 1
         # add pre_neuron to domain.remote_neurons_metadata if not added (use
         # create_neuron function)
         create_neuron(self.remote_neuron_address,
                       self.remote_neurons_metadata,
                       pre_layer,
                       pre_layer_index)
         # get local_pre_neuron_address
         local_pre_neuron_address = self.remote_neurons_metadata.level \
                 .to_address(self.remote_neuron_address, 0)
         if not self.receiver_index.add(
             local_pre_neuron_address,
             pre_domain_index,
             pre_neuron_address
         ):
             self.stat_inc('receiver_index_again')
         local_pre_neuron_receiver_index = self.receiver_index.pos
         # set IS_RECEIVER flag to pre_neuron
         self.remote_neurons_metadata.flags[self.remote_neuron_address] \
                 |= IS_RECEIVER
         # send local_pre_neuron_address back to source domain (pre_domain)
         pre_domain.send_receiver_index(self.index, pre_neuron_address,
                                        local_pre_neuron_address,
                                        local_pre_neuron_receiver_index)
         self.stat_inc('total_receiver_neurons')
         self.stat_set('send_synapse_time', datetime.datetime.utcnow())
     # get synapse_address
     self.synapse_address += 1
     self.connect_neurons(
         local_pre_neuron_address,
         post_layer.neurons_metadata.level.to_address(
             post_x - post_layer.x,
             post_y - post_layer.y
         ),
         self.synapse_address
     )
예제 #2
0
파일: layer.py 프로젝트: openre/openre
 def create_neurons(self):
     """
     Создание слоя нейронов в ранее выделенном для этого векторе
     """
     for i in xrange(self.length):
         create_neuron(i, self.neurons_metadata, self, self.layer_metadata.address)