Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 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. MatrizEntradaNorm = numpy.zeros((100, 3))
  10. F = numpy.zeros(30)
  11. F2 = numpy.zeros(1)
  12. E = numpy.zeros(30)
  13. saida_delta = numpy.zeros(1)
  14. ocultos_delta = numpy.zeros(30)
  15. U2 = numpy.zeros((100,3))
  16.  
  17. def func1(x,y):
  18. result = math.cos(y/100)/(1+(x/100)**2)
  19. return result;
  20.  
  21.  
  22. def func2(x,y):
  23. result = (x**2+y**2)*(math.sin(x/50)+math.cos(y/50))
  24. return result
  25.  
  26. def normalize(v):
  27. norm=numpy.linalg.norm(v)
  28. if norm==0:
  29. return v
  30. return v/norm
  31.  
  32.  
  33. def normal(V,i):
  34. for y in range(i):
  35. U = V[y,:]
  36. T = normalize(U)
  37. for j in range(3):
  38. U2[y][j] = T[j]
  39. return U2
  40.  
  41. def definir():
  42. MatrizEntrada = [[558. -773. 0.0038]
  43. [-859. 261. -0.0115]
  44. [-697. 245. -0.0155]
  45. [-347. -443. -0.0213]]
  46. for x in range(2):
  47. for y in range(30):
  48. MatrizPesoEntrada[x][y] = random.randrange(-10,10)/10
  49. for x in range(30):
  50. for y in range(1):
  51. MatrizPesoSaida[x][y] = random.randrange(-10,10)/10
  52.  
  53. MatrizEntradaNorm = normal(MatrizEntrada,100)
  54.  
  55. def sorteio():
  56. return random.randrange(0,100)
  57.  
  58.  
  59.  
  60.  
  61. def propagacao(sort):
  62. for j in range(30):
  63. V = 0
  64. for i in range(2):
  65. V += MatrizPesoEntrada[i][j] * MatrizEntradaNorm[sort][i]
  66. V += teta
  67. F[j] = math.tanh(V)
  68. for j in range(1):
  69. V2 = 0
  70. for i in range(30):
  71. V2 += F[i]*MatrizPesoSaida[i][j]
  72. V2 += teta
  73. F2[j] = math.tanh(V2)
  74.  
  75.  
  76. def erro(sort):
  77. erro = 0
  78. for i in range(1):
  79. erro = MatrizEntradaNorm[sort][2] - F2[i]
  80. saida_delta[i] = (1 - math.tanh(F2[i]**2))*erro
  81. for i in range(30):
  82. erro = 0
  83. for j in range(1):
  84. erro += saida_delta[j]*MatrizPesoSaida[i][j]
  85. ocultos_delta[i] = (1 - math.tanh(F[i]**2))*erro
  86. return erro
  87.  
  88. def retropropagacao(sort):
  89. for i in range(30):
  90. for j in range(1):
  91. change = saida_delta[j]*F[i]
  92. MatrizPesoSaida[i][j] = MatrizPesoSaida[i][j] + (0.5*change)
  93. for i in range(2):
  94. for j in range(30):
  95. change = ocultos_delta[j]*MatrizEntradaNorm[sort][i]
  96. MatrizPesoEntrada[i][j] = MatrizPesoEntrada[i][j] + (0.5*change)
  97.  
  98. def treinar():
  99. for i in range(100):
  100. sort = sorteio()
  101. propagacao(sort)
  102. erro1 = erro(sort)
  103. print("Erro Erro: ", erro1)
  104. retropropagacao(sort)
  105.  
  106. definir()
  107. print(MatrizEntrada)
  108. print("---")
  109. print(MatrizEntradaNorm)
  110. treinar()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement