Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy
- import random
- import math
- teta = 1
- MatrizPesoEntrada = numpy.zeros((2,30))
- MatrizPesoSaida = numpy.zeros((30,1))
- MatrizEntrada = numpy.zeros((100, 3))
- F = numpy.zeros(30)
- F2 = numpy.zeros(1)
- E = numpy.zeros(30)
- saida_delta = numpy.zeros(1)
- ocultos_delta = numpy.zeros(30)
- def func1(x,y):
- result = math.cos(y/100)/(1+(x/100)**2)
- return result;
- def func2(x,y):
- result = (x**2+y**2)*(math.sin(x/50)+math.cos(y/50))
- return result;
- def definir():
- for x in range(100):
- for y in range(3):
- MatrizEntrada[x][0] = random.randrange(-10000,10000,1)/10
- MatrizEntrada[x][1] = random.randrange(-10000,10000,1)/10
- MatrizEntrada[x][2] = func1(MatrizEntrada[x][0],MatrizEntrada[x][1])
- for x in range(2):
- for y in range(30):
- MatrizPesoEntrada[x][y] = random.randrange(-10,10)/10
- for x in range(30):
- for y in range(1):
- MatrizPesoSaida[x][y] = random.randrange(-10,10)/10
- def sorteio():
- return random.randrange(0,100)
- def propagacao(sort):
- for j in range(30):
- V = 0
- for i in range(2):
- V += MatrizPesoEntrada[i][j] * MatrizEntrada[sort][i]
- V += teta
- F[j] = math.tanh(V)
- for j in range(1):
- V2 = 0
- for i in range(30):
- V2 += F[j]*MatrizPesoSaida[i][j] + teta
- F2[j] = math.tanh(V2)
- def erro(sort):
- erro = 0
- for i in range(1):
- erro += MatrizEntrada[0][2] - F2[i]
- saida_delta[i] = (1 - math.tanh(F2[i]**2))*erro
- for i in range(30):
- erro = 0
- for j in range(1):
- erro += saida_delta[j]*MatrizPesoSaida[i][j]
- ocultos_delta[i] = (1 - math.tanh(F[i]**2))*erro
- return erro
- def retropropagacao(sort):
- for i in range(30):
- for j in range(1):
- change = saida_delta[j]*F[i]
- MatrizPesoSaida[i][j] = MatrizPesoSaida[i][j] + (0.5*change)
- for i in range(2):
- for j in range(30):
- change = ocultos_delta[j]*MatrizEntrada[sort][i]
- MatrizPesoEntrada[i][j] = MatrizPesoEntrada[i][j] + (0.5*change)
- erro = 0
- for i in range(1):
- erro += 0.5 * (MatrizEntrada[0][2] - F2[i]) ** 2 # verif expressao
- return erro
- def treinar():
- sort = sorteio()
- propagacao(sort)
- erro1 = erro(sort)
- print("Erro Erro: ", erro1)
- errob = retropropagacao(sort)
- print("Erro Back: ", errob)
- definir()
- treinar()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement