Advertisement
Guest User

Neural Net update 1

a guest
Aug 21st, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.38 KB | None | 0 0
  1. def tanh(x, derivative=False):
  2.     if (derivative):
  3.         return 1-(np.tanh(x)**2)
  4.     else:
  5.         return np.tanh(x)
  6.  
  7. bias = 1
  8. learningrate = 0.5
  9.  
  10. ##3 2 1 4
  11. ##c b a bias
  12. weights = np.array([        
  13.                 [0.9999999732819997, 0.9999999465639994, 0.9999999732819997, 0.9998439262081439],
  14.                 [-2.154660263345219, -2.001883323187517, -0.5181052805955335, 0.9889430644706741],
  15.                 [0.9999999999999998, 0.9999999465639994, 0.9999999465639998, 0.9998439262081439],
  16.                 [-0.001879897900672004, -0.008565417076598794, -0.001879897900672004, -0.003450528541677388]])
  17.  
  18. def add(x,y):
  19.     f = open(y)
  20.     lines = f.read()
  21.     f.close()
  22.     f = open(y, 'w')
  23.     f.write(lines)
  24.     f.write("\n<br>"+x)
  25.     f.close()
  26.  
  27. def hidden(a,b,c,d):
  28.     global weights
  29.     global bias
  30.     alpha = weights*[c,b,a,1]
  31.     if (d==0):
  32.         return tanh(sum(alpha[0]))
  33.     if (d==1):
  34.         return tanh(sum(alpha[1]))
  35.     if (d==2):
  36.         return tanh(sum(alpha[2]))
  37.     if (d==3):
  38.         return np.array([tanh(sum(alpha[0])), tanh(sum(alpha[1])), tanh(sum(alpha[2])), 1])
  39.  
  40. def u4(a, b, c):
  41.     global weights
  42.     global bias
  43.     a = [hidden(a,b,c,2), hidden(a,b,c,1), hidden(a,b,c,0), 1]
  44.     return tanh(sum(weights[3]*a))
  45.  
  46.  
  47. def feedforward(a, b, c):
  48.     return u4(a,b,c)+1
  49.  
  50. def error(a,b,c,d):
  51.     return ((d-feedforward(a,b,c))**2)/100
  52.  
  53. def backpropagation(a,b,c,d):
  54.     global learningrate
  55.     global bias
  56.     global weights
  57.    
  58.     result = feedforward(a,b,c)
  59.     delta0 = (d-result)*result*((bias-result)**2)
  60.  
  61.     delta3 = (delta0*weights[3][0])*hidden(a,b,c,2)*(1-hidden(a,b,c,2)**2)
  62.     delta2 = (delta0*weights[3][1])*hidden(a,b,c,1)*(1-hidden(a,b,c,1)**2)
  63.     delta1 = (delta0*weights[3][2])*hidden(a,b,c,0)*(1-hidden(a,b,c,0)**2)
  64.  
  65.     #adjustments
  66.     outputAdjustment = hidden(a,b,c,3)*(learningrate*delta0)
  67.    
  68.     weights[3]+=outputAdjustment
  69.  
  70.     u3Adjustment = np.array([c,b,a,1])*(learningrate*delta3)
  71.     weights[0]+= u3Adjustment
  72.  
  73.     u2Adjustment = np.array([c,b,a,1])*(learningrate*delta2)
  74.     weights[1]+= u2Adjustment
  75.  
  76.     u1Adjustment = np.array([c,b,a,1])*(learningrate*delta1)
  77.     weights[2]+= u1Adjustment
  78.    
  79.  
  80. def train(data):
  81.     testing = [[2,3,4,0], [1,3,5,0], [1,5,3,2], [2,12,4,2], [4,8,4,0], [6,12,6,0]]
  82.     passed = False
  83.     count = 0
  84.     while (not passed):
  85.         for _ in range(500):
  86.             avgerr = 0
  87.             for i in data:
  88.                 backpropagation(i[0], i[1], i[2], i[3])
  89.                 avgerr += error(i[0], i[1], i[2], i[3])
  90.             avgerr = avgerr/len(data)
  91.             if (_%100 == 0):
  92.                 print avgerr
  93.                 add(str(avgerr), "index.html")
  94.         c = 0
  95.         for i in testing:
  96.             if int(round(feedforward(i[0], i[1], i[2]))) == i[3]:
  97.                 c+=1
  98.         if c == 6:
  99.             break
  100.         f = open('weights-temp.txt', 'w')
  101.         f.write(str(weights))
  102.         f.close()
  103. train(dataset)
  104. a = ""
  105. while a != "quit":
  106.     a = raw_input(">> ")
  107.     if a == "test":
  108.         alpha = int(raw_input("alpha: "))
  109.         beta = int(raw_input("beta: "))
  110.         gamma = int(raw_input("gamma: "))
  111.         print feedforward(alpha, beta, gamma)
  112.     if a == "train":
  113.         train(dataset)
  114.     if a == "weights":
  115.         print weights
  116.         f = open('weights.txt', 'w')
  117.         f.write(str(weights))
  118.         f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement