Ejemplo n.º 1
0
    def __init__(
        self,
        input_num,
        output_num,
        function_name="hardlim",
        weight=None,
        bias=None,
        data_set=None,
        learning_rate=0.2,
        max_error=0,
        max_epoch=-1,
    ):
        self.function_name = function_name
        self.input_num = input_num
        self.output_num = output_num
        self.learning_rate = learning_rate
        self.max_error = max_error
        self.max_epoch = max_epoch

        self.net = NeuronBuilder([self.input_num], [0], [self.output_num])
        self.net.connectTwoLayers("in", "out")
        self.net.setLayerFunction("out", self.function_name)

        if data_set != None:
            self.net.setDataSet(data_set)
        self.net.connectTwoLayers("in", "out")
        if weight != None:
            self.net.setLayerToLayerWeight("in", "out", weight)
        if bias != None:
            self.net.setBiasToLayer("out", bias)
Ejemplo n.º 2
0
    def __init__(self, input_num, output_num, unconditioned_input_num, function_name="hardlim", learning_rate=0.2):
        self.function_name = function_name
        self.input_num = input_num
        self.output_num = output_num
        self.learning_rate = learning_rate

        self.net = NeuronBuilder([self.input_num], [0], [self.output_num])
        self.net.connectTwoLayers("in", "out")
        self.net.setLayerFunction("out", self.function_name)
        self.net.setUnconditionedNeuronNum(unconditioned_input_num)
 def __init__(self,input_num,output_num,unconditioned_input_num,function_name='hardlim',learning_rate=0.2,decay_rate=0.1):
     self.function_name=function_name
     self.input_num=input_num
     self.output_num=output_num
     self.learning_rate=learning_rate
     self.decay_rate=decay_rate
     
     self.net=NeuronBuilder([self.input_num],[0],[self.output_num])
     self.net.connectTwoLayers('in', 'out')
     self.net.setLayerFunction('out', self.function_name)
     self.net.setUnconditionedNeuronNum(unconditioned_input_num)
Ejemplo n.º 4
0
 def __init__(self,input_num,unconditioned_input_num,function_name='satlins',learning_rate=0.2):
     self.function_name=function_name
     self.input_num=input_num
     self.output_num=unconditioned_input_num
     self.learning_rate=learning_rate
     
     self.net=NeuronBuilder([self.input_num],[0],[self.output_num],has_bias=False)
     for i in range(unconditioned_input_num):
         self.net.connectTwoNeurons('in'+str(i), 'out'+str(i))
     for i in range(input_num-unconditioned_input_num):
         for neuron in self.net.neuron_in_layer['out']:
             self.net.connectTwoNeurons('in'+str(i+unconditioned_input_num),neuron)
     # print self.net.neuron_to_neuron_weight
     # print self.net.layer_to_layer_weight
     self.net.setLayerFunction('out', self.function_name)
     self.net.setUnconditionedNeuronNum(unconditioned_input_num)
 def __init__(self,input_layer_list,hidden_layer_list,output_layer_list,learning_rate=0.2,max_error=0.01,max_epoch=-1):
     '''
     Constructor
     '''
     self.net=NeuronBuilder(input_layer_list,hidden_layer_list,output_layer_list)
     self.net.setLayerFunction('out', 'purelin')
     for i in range(len(self.net.hidden_layers)):
         self.net.setLayerFunction('hid'+str(i),'logsig')
     
     self.net.connectTwoLayers('in', 'hid0')
     if len(self.net.hidden_layers)!=1:
         for i in range(len(self.net.hidden_layers)-1):
             self.net.connectTwoLayers('hid'+str(i), 'hid'+str(i+1))
     self.net.connectTwoLayers('hid'+str(len(self.net.hidden_layers)-1), 'out')
     
     self.learning_rate=learning_rate
     self.max_error=max_error
     self.max_epoch=max_epoch
Ejemplo n.º 6
0
class TwoLayersNeuralNetwork(object):
    def __init__(
        self,
        input_num,
        output_num,
        function_name="hardlim",
        weight=None,
        bias=None,
        data_set=None,
        learning_rate=0.2,
        max_error=0,
        max_epoch=-1,
    ):
        self.function_name = function_name
        self.input_num = input_num
        self.output_num = output_num
        self.learning_rate = learning_rate
        self.max_error = max_error
        self.max_epoch = max_epoch

        self.net = NeuronBuilder([self.input_num], [0], [self.output_num])
        self.net.connectTwoLayers("in", "out")
        self.net.setLayerFunction("out", self.function_name)

        if data_set != None:
            self.net.setDataSet(data_set)
        self.net.connectTwoLayers("in", "out")
        if weight != None:
            self.net.setLayerToLayerWeight("in", "out", weight)
        if bias != None:
            self.net.setBiasToLayer("out", bias)

    def activate(self, input_list):
        self.net.setInputToInputLayer(input_list)
        output = self.net.getOutputFromLayer("out")
        return output

    def setDataSet(self, data_set):
        self.net.input_data = None
        self.net.output_data = None
        self.net.setDataSet(data_set)

    def train(self):
        if self.net.data_set == None:
            print("Please set data sets")
        else:
            self.trainer = LMSTrainer(self.net, self.learning_rate, self.max_error, self.max_epoch)
            # self.trainer.setDefaultLearningRate()
            self.trainer.LMSTrain()
            [
                self.net.layer_to_layer_weight,
                self.net.bias_to_layer,
            ] = self.trainer.returnTrainedLayerToLayerWeightAndBias()
            self.net.updateNeuronToNeuronWeightByLayerToLayerWeight()
            self.net.updateBiasToNeuronByBiasToLayer()

    def plotFigure(self):
        self.trainer.plotFigure()

    def setLearningRate(self, learning_rate):
        self.learning_rate = learning_rate

    def setMaxError(self, max_error):
        self.max_error = max_error

    def setMaxEpoch(self, max_epoch):
        self.max_epoch = max_epoch

    def returnNeuronBuilder(self):
        return self.net

    def setNeuronBuilder(self, net):
        self.net = net

    def showNetworkSimulation(self):
        self.net.showNetworkSimulation()
Ejemplo n.º 7
0
 def loadNeuronBuilder(self,save_path):
     '''
     input_layer=self.net.input_layer
     hidden_layers=self.net.hidden_layers
     output_layer=self.net.output_layer
     has_bias=self.net.has_bias
     layer_to_layer_weight=self.net.layer_to_layer_weight
     bias_to_layer=self.net.bias_to_neuron
     neuron_function=self.net.neuron_function
     neuron_dict=self.net.neuron_dict
     name_dict=self.net.name_dict
     input_data=self.net.input_data
     output_data=self.net.output_data
     '''
     import os
     if save_path.find('.')==-1:
         save_path+='.nnet'
     if os.path.exists(save_path):
         file=open(save_path,'r')
         output=[]
         for lines in file:
             output.append(lines)
         #print output
         dic={}
         for line in output:
         #    print line
             dic[line[0:line.find(':')]]=line[line.find(':')+1:line.find('\\')]
         #print dic
         file.close()
         input_layer=convertStringListToList(dic['input_layer'])
         for i in range(len(input_layer)):
             input_layer[i]=int(input_layer[i])
             
         hidden_layers=convertStringListToList(dic['hidden_layers'])
         for i in range(len(hidden_layers)):
             hidden_layers[i]=int(hidden_layers[i])
             
         output_layer=convertStringListToList(dic['output_layer'])
         for i in range(len(output_layer)):
             output_layer[i]=int(output_layer[i])
         has_bias=dic['has_bias']
         if has_bias=='True':
             has_bias=True
         elif has_bias=='False':
             has_bias=False
         else:
             print("Mistake occurred when load has_bias:"+has_bias)
             
         layer_to_layer_weight=convertStringDictToDict(dic['layer_to_layer_weight'])
         print dic['layer_to_layer_weight']
         print layer_to_layer_weight
         for key in layer_to_layer_weight.keys():
             layer_to_layer_weight[key]=convertStringListToList(layer_to_layer_weight[key])
         
         bias_to_layer=convertStringDictToDict(dic['bias_to_layer'])
         print dic['bias_to_layer']
         print bias_to_layer
         for key in bias_to_layer:
             bias_to_layer[key]=convertStringListToList(bias_to_layer[key])
     
         neuron_function=convertStringDictToDict(dic['neuron_function'])
         neuron_dict=convertStringDictToDict(dic['neuron_dict'])
         name_dict=convertStringDictToDict(dic['name_dict'])
         input_data=convertStringListToList(dic['input_data'])
         output_data=convertStringListToList(dic['output_data'])
         
         net=NeuronBuilder(input_layer,hidden_layers,output_layer,has_bias)
         net.layer_to_layer_weight=layer_to_layer_weight
         net.updateNeuronToNeuronWeightByLayerToLayerWeight()
         net.bias_to_layer=bias_to_layer
         net.updateBiasToNeuronByBiasToLayer()
         net.neuron_function=neuron_function
         net.neuron_dict=neuron_dict
         net.name_dict=name_dict
         
         data=DataSet(len(input_data[0]),len(output_data[0]))
         for i in range(len(input_data)):
             data.addItem(input_data[i], output_data[i])
         net.setDataSet(data)
         
         #print neural_network_type
         #print input_num
         #print output_num
         #print weight
         #print bias
         #print function_name
         return net
     else:
         print(save_path+"does not exist")
         return None
Ejemplo n.º 8
0
print net.neuron_to_neuron_weight
print net.bias_to_neuron
net.setLayerFunction('hid0', 'logsig')
net.setLayerFunction('hid1', 'logsig')
net.setLayerFunction('out', 'purelin')
net.setNeuronFunction('hid0_2', 'hardlim')
print net.neuron_function
net.setInputToInputLayer([1,0.6])
print net.getOutputFromLayer('hid1')
print net.getOutputFromLayer('out')
print net.getOutputFromOneNeuron('out0')
net.showNetworkSimulation()
'''

from neuron_build.neuron_build import NeuronBuilder
net=NeuronBuilder([2],[3],[2],has_bias=True)
net.connectTwoLayers('in', 'hid0')
net.connectTwoLayers('hid0','out')
from data.DataSet import DataSet
data=DataSet(2,2)
data.addItem([1,1], [-1,-1])
data.addItem([1,-1],[-1,1])
data.addItem([-1,1],[1,-1])
data.addItem([-1,-1],[1,1])
net.setDataSet(data)
net.setLayerFunction('hid0', 'logsig')
net.setLayerFunction('out','purelin')
net.setInputToInputLayer([1,1])
print net.getOutputFromLayer('out')
print net.neuron_function
from trainer.DeltaTrainer import DeltaTrainer
class SimpleAssociativeNetwork(object):

    def __init__(self,input_num,output_num,unconditioned_input_num,function_name='hardlim',learning_rate=0.2,decay_rate=0.1):
        self.function_name=function_name
        self.input_num=input_num
        self.output_num=output_num
        self.learning_rate=learning_rate
        self.decay_rate=decay_rate
        
        self.net=NeuronBuilder([self.input_num],[0],[self.output_num])
        self.net.connectTwoLayers('in', 'out')
        self.net.setLayerFunction('out', self.function_name)
        self.net.setUnconditionedNeuronNum(unconditioned_input_num)
        
           
    def activate(self,input_list):
        self.net.setInputToInputLayer(input_list)
        output=self.net.getOutputFromLayer('out')
        return output
        
    def train(self,input_list):
        self.trainer=HebbUnsupervisedTrainer(self.net,self.learning_rate,self.decay_rate)
        self.trainer.HebbTrainForOnce(input_list)
        
    def setLearningRate(self,learning_rate):
        self.learning_rate=learning_rate
        
    def setDecayRate(self,decay_rate):
        self.decay_rate=decay_rate
        
    def returnNeuronBuilder(self):
        return self.net
    
    def setNeuronBuilder(self,net):
        self.net=net
        
    def showNetworkSimulation(self):
        self.net.showNetworkSimulation()
class Backpropagation(object):
    def __init__(self,input_layer_list,hidden_layer_list,output_layer_list,learning_rate=0.2,max_error=0.01,max_epoch=-1):
        '''
        Constructor
        '''
        self.net=NeuronBuilder(input_layer_list,hidden_layer_list,output_layer_list)
        self.net.setLayerFunction('out', 'purelin')
        for i in range(len(self.net.hidden_layers)):
            self.net.setLayerFunction('hid'+str(i),'logsig')
        
        self.net.connectTwoLayers('in', 'hid0')
        if len(self.net.hidden_layers)!=1:
            for i in range(len(self.net.hidden_layers)-1):
                self.net.connectTwoLayers('hid'+str(i), 'hid'+str(i+1))
        self.net.connectTwoLayers('hid'+str(len(self.net.hidden_layers)-1), 'out')
        
        self.learning_rate=learning_rate
        self.max_error=max_error
        self.max_epoch=max_epoch
        
    def activate(self,input_list):
        self.net.setInputToInputLayer(input_list)
        output=self.net.getOutputFromLayer('out')
        return output
        
    def setDataSet(self,data_set):
        self.data_set=data_set
        [self.net.input_data,self.net.output_data]=data_set.returnDataSet()
        
    def train(self):
        if self.data_set==None:
            print("Please set data sets")
        else:
            self.trainer=DeltaTrainer(self.net)
            self.trainer.setLearningRate(self.learning_rate)
            self.trainer.setMaxError(self.max_error)
            self.trainer.setMaxEpoch(self.max_epoch)
            self.trainer.DeltaTrain()
            #[weight,bias]=self.trainer.returnTrainedLayerToLayerWeightAndBias()
            [self.net.layer_to_layer_weight,self.net.bias_to_layer]=self.trainer.returnTrainedLayerToLayerWeightAndBias()
            
            # print self.net.neuron_to_neuron_weight
            self.net.updateNeuronToNeuronWeightByLayerToLayerWeight()
            self.net.updateBiasToNeuronByBiasToLayer()
            # print self.net.neuron_to_neuron_weight

    def plotFigure(self):
        self.trainer.plotFigure()
        
    def setLearningRate(self,learning_rate):
        self.learning_rate=learning_rate
        
    def setMaxError(self,max_error):
        self.max_error=max_error
        
    def setMaxEpoch(self,max_epoch):
        self.max_epoch=max_epoch
        
    def showNetworkSimulation(self):
        self.net.showNetworkSimulation()
Ejemplo n.º 11
0
class InstarNetwork(object):
    def __init__(self, input_num, output_num, unconditioned_input_num, function_name="hardlim", learning_rate=0.2):
        self.function_name = function_name
        self.input_num = input_num
        self.output_num = output_num
        self.learning_rate = learning_rate

        self.net = NeuronBuilder([self.input_num], [0], [self.output_num])
        self.net.connectTwoLayers("in", "out")
        self.net.setLayerFunction("out", self.function_name)
        self.net.setUnconditionedNeuronNum(unconditioned_input_num)

    def activate(self, input_list):
        self.net.setInputToInputLayer(input_list)
        output = self.net.getOutputFromLayer("out")
        return output

    def train(self, input_list):
        self.trainer = InstarTrainer(self.net, self.learning_rate)
        self.trainer.InstarTrainForOnce(input_list)

    def setLearningRate(self, learning_rate):
        self.learning_rate = learning_rate

    def returnNeuronBuilder(self):
        return self.net

    def setNeuronBuilder(self, net):
        self.net = net

    def showNetworkSimulation(self):
        self.net.showNetworkSimulation()
Ejemplo n.º 12
0
class OutstarNetwork(object):

    def __init__(self,input_num,unconditioned_input_num,function_name='satlins',learning_rate=0.2):
        self.function_name=function_name
        self.input_num=input_num
        self.output_num=unconditioned_input_num
        self.learning_rate=learning_rate
        
        self.net=NeuronBuilder([self.input_num],[0],[self.output_num],has_bias=False)
        for i in range(unconditioned_input_num):
            self.net.connectTwoNeurons('in'+str(i), 'out'+str(i))
        for i in range(input_num-unconditioned_input_num):
            for neuron in self.net.neuron_in_layer['out']:
                self.net.connectTwoNeurons('in'+str(i+unconditioned_input_num),neuron)
        # print self.net.neuron_to_neuron_weight
        # print self.net.layer_to_layer_weight
        self.net.setLayerFunction('out', self.function_name)
        self.net.setUnconditionedNeuronNum(unconditioned_input_num)
           
    def activate(self,input_list):
        self.net.setInputToInputLayer(input_list)
        output=self.net.getOutputFromLayer('out')
        return output
        
    def train(self,input_list):
        self.trainer=OutstarTrainer(self.net,self.learning_rate)
        self.trainer.OutstarTrainForOnce(input_list)
        
    def setLearningRate(self,learning_rate):
        self.learning_rate=learning_rate
        
    def returnNeuronBuilder(self):
        return self.net
    
    def setNeuronBuilder(self,net):
        self.net=net
        
    def showNetworkSimulation(self):
        self.net.showNetworkSimulation()