Advertisement
TDamiao

PerceptronSimples

Sep 20th, 2018
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. #criando o datase do projeto
  2. #considerando a porta OR
  3. ds = [
  4. #    b  x1 x2 y    x1 e x2 sao entrada y eh a saida esperada
  5.     [1, 0, 0, 0], #amostra 1
  6.     [1, 0, 1, 1], #amostra 2
  7.     [1, 1, 0, 1], #amostra 3
  8.     [1, 1, 1, 1]  #amostra 4
  9. ]
  10.  
  11. #Peso dos neuronios
  12. w = [1.4, 0.8, -0.9]
  13.  
  14. p_saida = len(ds)-1 #posicao de dentro da amostra da saida correta
  15.  
  16. t_e = 0.2 # taxa de aprendizagem da rede
  17. #com t_e=0.2, levou 15 passos, t_e=1, levou 5 passos
  18. #com t_e=1.5, levou 3 passos, t_e=2.2, levou 4 passos
  19. #com t_e=1.4, levou 6 passos
  20.  
  21. def f_soma_amostra(amostra, peso, i_saida):
  22.     v_total = 0
  23.     #neste for trabalho com o valor de uma posicao
  24.     for i, v in enumerate(amostra):
  25.         if i < i_saida:
  26.             v_total += v * peso[i]
  27.     return v_total
  28.  
  29. def f_funcao_ativacao(valor):
  30.     #funcao degrau
  31.     if valor >= 0:
  32.         return 1
  33.     else:
  34.         return 0
  35.  
  36. def f_calcula_erro(amostra, v_saida, i_saida):
  37.     return amostra[i_saida] - v_saida
  38.  
  39. def f_ajusta_peso(tx, er, p, e):#taxa de aprendizagem, erro, peso, valor de entrada
  40.     for idx, vp in enumerate(p):
  41.         p[idx] = p[idx] + (tx * er * e[idx])
  42. x=0
  43. cont=0
  44. while x == 0:
  45.     x=1
  46. #a eh a amosta
  47. #dentro deste for trabalho com a linha
  48.     for a in ds:
  49.         v_saida = f_funcao_ativacao(f_soma_amostra(a, w, p_saida))
  50.  
  51.         v_error = f_calcula_erro(a, v_saida, p_saida)
  52.         if v_error != 0:
  53.             f_ajusta_peso(t_e, v_error, w, a)
  54.             print(w)
  55.             x = 0
  56.  
  57.         else:
  58.             print("cavera meu capitao")
  59.  
  60.     cont+=1
  61.     print(".....................",cont,"......................")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement