Advertisement
Guest User

Comparison of Neural Networks EE Code

a guest
Aug 25th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.60 KB | None | 0 0
  1. import os
  2. def loadRes(): #Loading data from txt file
  3.     if(os.stat("results.txt").st_size == 0):
  4.         return False
  5.     f = open("results.txt")
  6.     rawdat = f.read()
  7.  
  8.     f.close()
  9.     dat = rawdat.split("\n")
  10.     dat.pop()
  11.     for i in range(0,len(dat)):
  12.         dat[i] = dat[i].split("|")
  13.         #print(dat[i])
  14.         dat[i][2] = dat[i][2].split("~")
  15.     return dat
  16.  
  17. def getNets(res):
  18.     #print(res)
  19.     if(res == False):
  20.         return []
  21.     results = []
  22.     for i in res:
  23.         results.append(i[2])
  24.     return results
  25.  
  26. #Stackoverflow example of how to convert bases easily https://stackoverflow.com/questions/28824874/pythonic-way-to-do-base-conversion
  27. def digit_to_char(digit):
  28.     if digit < 10:
  29.         return str(digit)
  30.     return chr(ord('a') + digit - 10)
  31.  
  32. def str_base(number, base):
  33.     while number > 0:
  34.         number, digit = divmod(number, base)
  35.         yield digit_to_char(digit)
  36.  
  37. def permuter(layers,nNodes):#Generate possible neural network combinations
  38.     store = []
  39.     check =  []
  40.     for i in range(0,nNodes**layers):
  41.         val = (''.join(list(str_base(i,nNodes))))
  42.         if(val == ''):
  43.             val = "0"
  44.         val = format(int(val[::-1]), '0'+str(layers))
  45.         if((val.replace("0","") in check) == False):
  46.             store.append(list(val))
  47.             check.append(val.replace("0",""))
  48.     return store
  49.  
  50. import tensorflow as tf
  51. from tensorflow.keras import backend as K
  52. mnist = tf.keras.datasets.mnist #28x28
  53.  
  54. (trainx, trainy), (testx, testy) = mnist.load_data()
  55.  
  56. trainx = tf.keras.utils.normalize(trainx,axis=1)
  57. testx = tf.keras.utils.normalize(testx,axis=1)
  58. tf_config = tf.ConfigProto(allow_soft_placement=False)
  59. tf_config.gpu_options.allow_growth = True
  60. s = tf.Session(config=tf_config)
  61. K.set_session(s)
  62.  
  63. def addLayers(layerData,neuronMultiplyer,model,base):#Add layers based on structure input
  64.     model.add(tf.keras.layers.Flatten())
  65.     for layer in layerData:
  66.         layer = int(layer,base)
  67.         if(layer!= 0):
  68.             model.add(tf.keras.layers.Dense((layer)*neuronMultiplyer,activation=tf.nn.relu,kernel_initializer=tf.keras.initializers.glorot_uniform(1234),bias_initializer=tf.keras.initializers.glorot_uniform(1234)))
  69.  
  70.     return model
  71.  
  72. import os,datetime,timeit,time
  73.  
  74. def train(layerData,neuronMultiplyer,base):#Train and create neural network based on structure input
  75.     f = open("results.txt", "a")
  76.     os.system('cls')
  77.     print(layerData)
  78.     tf.keras.backend.clear_session() #Reset and clear session
  79.     model = tf.keras.models.Sequential()
  80.     model = addLayers(layerData,neuronMultiplyer,model,base)
  81.     model.add(tf.keras.layers.Dense(10,activation=tf.nn.softmax,kernel_initializer=tf.keras.initializers.glorot_uniform(1234),bias_initializer=tf.keras.initializers.glorot_uniform(1234)))
  82.     model.compile(optimizer='adam',
  83.                 loss='sparse_categorical_crossentropy',
  84.                  metrics=['accuracy'])
  85.    
  86.     model.fit(trainx,trainy,epochs=3,batch_size=256,use_multiprocessing=True, workers=10)
  87.     start = time.perf_counter()
  88.     valLoss,valAcc = model.evaluate(testx,testy)
  89.     elapsed = time.perf_counter() - start #10000 samples takes this long.
  90.     f.write(str(valLoss)+"|"+str(valAcc)+"|"+'~'.join(layerData)+"|"+str(elapsed)+"\n")
  91.     return valLoss,valAcc,layerData
  92.  
  93. def evaluate(layers,maxNeurons,inc):
  94.     data = permuter(layers,int(maxNeurons//inc +1))
  95.     fileDat = getNets(loadRes())
  96.     for structure in data:
  97.         if((structure in fileDat)==False):
  98.             train(structure,inc,int(maxNeurons//inc +1))
  99.  
  100. evaluate(5, 100, 20)
  101. input("Process is done, press enter to close.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement