Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. import numpy
  2. import random
  3. import math
  4.  
  5. teta = 1
  6. MatrizPesoEntrada = numpy.zeros((2,30))
  7. MatrizPesoSaida = numpy.zeros((30,1))
  8. MatrizEntrada = numpy.zeros((100, 3))
  9. F = numpy.zeros(30)
  10. F2 = numpy.zeros(1)
  11. E = numpy.zeros(30)
  12. saida_delta = numpy.zeros(1)
  13. ocultos_delta = numpy.zeros(30)
  14.  
  15. def func1(x,y):
  16. result = math.cos(y/100)/(1+(x/100)**2)
  17. return result;
  18.  
  19.  
  20. def func2(x,y):
  21. result = (x**2+y**2)*(math.sin(x/50)+math.cos(y/50))
  22. return result;
  23.  
  24. def definir():
  25. for x in range(100):
  26. for y in range(3):
  27. MatrizEntrada[x][0] = random.randrange(-10000,10000,1)/10
  28. MatrizEntrada[x][1] = random.randrange(-10000,10000,1)/10
  29. MatrizEntrada[x][2] = func1(MatrizEntrada[x][0],MatrizEntrada[x][1])
  30. for x in range(2):
  31. for y in range(30):
  32. MatrizPesoEntrada[x][y] = random.randrange(-10,10)/10
  33. for x in range(30):
  34. for y in range(1):
  35. MatrizPesoSaida[x][y] = random.randrange(-10,10)/10
  36.  
  37. def sorteio():
  38. return random.randrange(0,100)
  39.  
  40.  
  41.  
  42.  
  43. def propagacao(sort):
  44. for j in range(30):
  45. V = 0
  46. for i in range(2):
  47. V += MatrizPesoEntrada[i][j] * MatrizEntrada[sort][i]
  48. V += teta
  49. F[j] = math.tanh(V)
  50. for j in range(1):
  51. V2 = 0
  52. for i in range(30):
  53. V2 += F[j]*MatrizPesoSaida[i][j] + teta
  54. F2[j] = math.tanh(V2)
  55.  
  56.  
  57. def erro(sort):
  58. erro = 0
  59. for i in range(1):
  60. erro += MatrizEntrada[0][2] - F2[i]
  61. saida_delta[i] = (1 - math.tanh(F2[i]**2))*erro
  62. for i in range(30):
  63. erro = 0
  64. for j in range(1):
  65. erro += saida_delta[j]*MatrizPesoSaida[i][j]
  66. ocultos_delta[i] = (1 - math.tanh(F[i]**2))*erro
  67. return erro
  68.  
  69. def retropropagacao(sort):
  70. for i in range(30):
  71. for j in range(1):
  72. change = saida_delta[j]*F[i]
  73. MatrizPesoSaida[i][j] = MatrizPesoSaida[i][j] + (0.5*change)
  74. for i in range(2):
  75. for j in range(30):
  76. change = ocultos_delta[j]*MatrizEntrada[sort][i]
  77. MatrizPesoEntrada[i][j] = MatrizPesoEntrada[i][j] + (0.5*change)
  78. erro = 0
  79. for i in range(1):
  80. erro += 0.5 * (MatrizEntrada[0][2] - F2[i]) ** 2 # verif expressao
  81. return erro
  82.  
  83. def treinar():
  84. sort = sorteio()
  85. propagacao(sort)
  86. erro1 = erro(sort)
  87. print("Erro Erro: ", erro1)
  88. errob = retropropagacao(sort)
  89. print("Erro Back: ", errob)
  90.  
  91. definir()
  92. treinar()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement