def getTheInputToOneNeuron(self,neuron_key): from functions.from_function_fire_output import fireForOneValue if neuron_key.find('in')!=-1: return self.get_output_from_input_layer[neuron_key] else: input_to_neuron=None for keys in self.neuron_to_neuron_weight: target_neuron=keys[keys.find('to_')+3:] from_neuron=keys[:keys.find('_to')] if target_neuron==neuron_key and self.neuron_to_neuron_weight[keys]!=None: #recursion if input_to_neuron==None: input_to_neuron=0 input_to_neuron+=self.getInputToNeuronFromTwoConnectedNeurons(from_neuron, target_neuron,self.getOutputFromOneNeuron(from_neuron)) if self.has_bias: if input_to_neuron!=None: input_to_neuron+=self.bias_to_neuron[neuron_key] else: pass #print output_from_neuron_key #print input_to_neuron output=fireForOneValue('purelin',input_to_neuron) return output
def getOutputFromOneNeuron(self,output_from_neuron_key): from functions.from_function_fire_output import fireForOneValue from functions.functions import compet if output_from_neuron_key.find('in')!=-1: return self.get_output_from_input_layer[output_from_neuron_key] else: input_to_neuron=None for keys in self.neuron_to_neuron_weight: target_neuron=keys[keys.find('to_')+3:] from_neuron=keys[:keys.find('_to')] if target_neuron==output_from_neuron_key and self.neuron_to_neuron_weight[keys]!=None: #recursion if input_to_neuron==None: input_to_neuron=0 input_to_neuron+=self.getInputToNeuronFromTwoConnectedNeurons(from_neuron, target_neuron,self.getOutputFromOneNeuron(from_neuron)) if self.has_bias: if input_to_neuron!=None: input_to_neuron+=self.bias_to_neuron[output_from_neuron_key] else: pass #print output_from_neuron_key #print input_to_neuron if self.neuron_function[output_from_neuron_key]=='compet': output=compet(output_from_neuron_key,self) # if auto_train_competitive_neuron: # from pyneuron.trainer.Kohonen import KohonenTrainer # t=KohonenTrainer(self) # if output_from_neuron_key.find('out')!=-1: # competitive_layer_key='out' # elif output_from_neuron_key.find('hid')!=-1: # competitive_layer_key=output_from_neuron_key[:output_from_neuron_key.find('_')] # else: # print("competitive layer key error") # t.KohonenTrainForWinnerNeuron(self.input_list_to_input_layer, competitive_layer_key) else: output=fireForOneValue(self.neuron_function[output_from_neuron_key],input_to_neuron) return output