Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #criando o datase do projeto
- #considerando a porta OR
- ds = [
- # b x1 x2 y x1 e x2 sao entrada y eh a saida esperada
- [1, 0, 0, 0], #amostra 1
- [1, 0, 1, 1], #amostra 2
- [1, 1, 0, 1], #amostra 3
- [1, 1, 1, 1] #amostra 4
- ]
- #Peso dos neuronios
- w = [1.4, 0.8, -0.9]
- p_saida = len(ds)-1 #posicao de dentro da amostra da saida correta
- t_e = 0.2 # taxa de aprendizagem da rede
- #com t_e=0.2, levou 15 passos, t_e=1, levou 5 passos
- #com t_e=1.5, levou 3 passos, t_e=2.2, levou 4 passos
- #com t_e=1.4, levou 6 passos
- def f_soma_amostra(amostra, peso, i_saida):
- v_total = 0
- #neste for trabalho com o valor de uma posicao
- for i, v in enumerate(amostra):
- if i < i_saida:
- v_total += v * peso[i]
- return v_total
- def f_funcao_ativacao(valor):
- #funcao degrau
- if valor >= 0:
- return 1
- else:
- return 0
- def f_calcula_erro(amostra, v_saida, i_saida):
- return amostra[i_saida] - v_saida
- def f_ajusta_peso(tx, er, p, e):#taxa de aprendizagem, erro, peso, valor de entrada
- for idx, vp in enumerate(p):
- p[idx] = p[idx] + (tx * er * e[idx])
- x=0
- cont=0
- while x == 0:
- x=1
- #a eh a amosta
- #dentro deste for trabalho com a linha
- for a in ds:
- v_saida = f_funcao_ativacao(f_soma_amostra(a, w, p_saida))
- v_error = f_calcula_erro(a, v_saida, p_saida)
- if v_error != 0:
- f_ajusta_peso(t_e, v_error, w, a)
- print(w)
- x = 0
- else:
- print("cavera meu capitao")
- cont+=1
- print(".....................",cont,"......................")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement