import random import pandas as pd import initializeMNIST """This area are the hyperparamaters""" datainputs, answers = initializeMNIST.datasetup() layer1size = 89 layer1connectionnumbers = sparse1 = 17 layer2size = 55 layer2connectionnumbers = sparse2 = 7 layer3size = 34 layer3connectionnumbers = sparse3 = 7 layer4size = 21 layer4connectionnumbers = sparse4 = 7 layer5size = 1 layer5connectionnumbers = dense1 = 21 """This area sets up the network structure""" layer1 = [] inputs = len(datainputs[0]) for x in range(layer1size): layer1.append(initializeMNIST.neuron(inputs,sparse1)) layer2 = [] inputs = len(layer1) for x in range(layer2size): layer2.append(initializeMNIST.neuron(inputs,sparse2)) layer3 = [] inputs = len(layer2) for x in range(layer3size): layer3.append(initializeMNIST.neuron(inputs,sparse3)) layer4 = [] abcd = [] inputs = len(layer3) for x in range(layer4size): layer4.append(initializeMNIST.neuron(inputs,sparse4)) abcd.append(-20) if x%2 ==0: abcd[x] = abcd[x]* -1 layer5 = [] inputs = len(layer4) for x in range(layer5size): layer5.append(initializeMNIST.neuron(inputs,dense1)) """This Area does the feedforward calculations""" megabatcherror= 1 megabatcherror2= 1 counter = 2 batchcounter = 1 fibonacci1 = 1 fibonacci2 = 1 for epochs in range(400000): print("CreamPUFFS") megabatcherror = megabatcherror / counter #print(megabatcherror) #print(megabatcherror2) megabatcherror=0 megabatcherror2= 0 for imagenumber in range(len(datainputs)): for x in range(1): expectedanswer = answers[imagenumber] #print(datainputs[imagenumber],"DATADATDATDATDATDATDATDADTADTADTATDATDTADTADATDATDTADATDDATDADTATDATDTADTADTATDATDTADTATDATDTADTA") inputs1 = initializeMNIST.feedforward(layer1,datainputs[imagenumber],expectedanswer,base=True) #print(inputs1,"1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111") inputs2 = initializeMNIST.feedforward(layer2,inputs1,expectedanswer) #print(inputs2,"2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222") inputs3 = initializeMNIST.feedforward(layer3,inputs2,expectedanswer) #print(inputs3,"3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333") inputs4 = initializeMNIST.feedforward(layer4,inputs3,expectedanswer) #print(inputs4,"444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444") inputs5 = initializeMNIST.feedforward(layer5,inputs4,expectedanswer,final=True) #print(inputs4,"55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555") #print(layer1[0].weights) #print(layer3[layer4[0].targets[0]].outputs,layer3[layer4[0].targets[1]].outputs,layer3[layer4[0].targets[2]].outputs) #print(" ") print(" ") print(layer5[0].outputs,expectedanswer) #print(layer2[0].backproperror) megabatcherror += abs(expectedanswer - layer5[0].outputs) megabatcherror2 += (expectedanswer - layer5[0].outputs) for i in range(len(layer5)): layer5[i].backprop(inputs4,expectedanswer,layer4,batchcounter,counter,fibonacci1,fibonacci2,top=True) for i in range(len(layer4)): layer4[i].backprop(inputs3,layer4[i].backproperror,layer3,batchcounter,counter,fibonacci1,fibonacci2) #print(layer4[i].backproperror) for i in range(len(layer3)): layer3[i].backprop(inputs2,layer3[i].backproperror,layer2,batchcounter,counter,fibonacci1,fibonacci2) for i in range(len(layer2)): layer2[i].backprop(inputs1,layer2[i].backproperror,layer1,batchcounter,counter,fibonacci1,fibonacci2) for i in range(len(layer1)): layer1[i].backpropfloor(datainputs[imagenumber],layer1[i].backproperror,batchcounter,counter,fibonacci1,fibonacci2) print(" ") #for i in range(len(layer5)): #x=0 #for ii in layer5[i].weights: #print(ii,inputs4[x]) #x+=1 if (batchcounter+fibonacci1)== counter: fibonacci2 = counter counter = counter + fibonacci1 fibonacci1 = fibonacci2 batchcounter = 0 print("WEIGHTS UPDATED") batchcounter += 1