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 )
def create_neurons(self): """ Создание слоя нейронов в ранее выделенном для этого векторе """ for i in xrange(self.length): create_neuron(i, self.neurons_metadata, self, self.layer_metadata.address)