import random import pandas as pd import initializeMNIST """This area are the hyperparamaters""" datainputs, answers = initializeMNIST.datasetup() layer1size = 80 layer1connectionnumbers = sparse1 = 15 layer2size = 40 layer2connectionnumbers = sparse2 = 8 layer3size = 30 layer3connectionnumbers = sparse3 = 5 layer4size = 15 layer4connectionnumbers = sparse4 = 3 layer5size = 1 layer5connectionnumbers = dense1 = 15 """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 = 1 for epochs in range(4000): batchcounter = 0 megabatcherror = megabatcherror / counter #print(megabatcherror) #print(megabatcherror2) megabatcherror=0 megabatcherror2= 0 for imagenumber in range(len(datainputs)): imagenumber = 1 for x in range(3000): counter = 1 batchcounter = 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,abcd,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(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) for i in range(len(layer4)): layer4[i].backprop(inputs3,layer4[i].backproperror,layer3,batchcounter,counter) print(layer4[i].backproperror) for i in range(len(layer3)): layer3[i].backprop(inputs2,layer3[i].backproperror,layer2,batchcounter,counter) for i in range(len(layer2)): layer2[i].backprop(inputs1,layer2[i].backproperror,layer1,batchcounter,counter) for i in range(len(layer1)): layer1[i].backpropfloor(datainputs[imagenumber],layer1[i].backproperror,batchcounter,counter) #print(layer5[0].weights) print(" ") print(inputs4) batchcounter+=1