Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Borrar espacio para evitar problemas
- clear
- #Función signo
- function [result] = signo(x)
- if(x>0)
- result = 1;
- else
- if(x<0)
- result = -1;
- else
- result = 0;
- endif
- endif
- end
- #Neurona
- function [z] = redNeuronal(Entrada, Pesos, Theta)
- EntradaNeta = Pesos*Entrada';
- z = signo(EntradaNeta+Theta*(-1));
- end
- #Perceptron
- #contador de patrones
- p = 0;
- #Tasa de aprendizaje
- tasaAprendizaje = 0.5;
- #patron deseado
- entradas = [-1,-1,-1;-1,1,-1;1,-1,-1;1,1,1];
- #Generar pesos aleatorios entre -1 y 1
- pesos = 2*rand(1,2) - 1;
- theta = 2*rand(1,1) - 1;
- #pesos = [0.4,-0.2];
- #theta = 0.6
- iteracion = 0;
- #Se aplica un maximo de iteraciones
- for k=1:200
- #iteramos
- for i = 1:rows(entradas)
- entradaActual = entradas(i,1:2);
- salidaDeseada = entradas(i,3);
- salidaObtenida = redNeuronal(entradaActual,pesos,theta);
- diferencia = salidaDeseada - salidaObtenida;
- if(diferencia==0)
- p++;
- else
- #Actualizamos pesos
- for j = 1:columns(pesos)
- pesos(j) = pesos(j) + tasaAprendizaje*diferencia*entradaActual(j);
- endfor
- theta = theta + tasaAprendizaje*diferencia*(-1);
- p = 0;
- break;
- endif
- endfor
- iteracion++;
- if (p == 4) break; endif
- endfor
- #Pruebas
- iteracion
- pesos
- theta
- for i = 1:rows(entradas)
- entradaActual = entradas(i,1:2);
- salidaDeseada = entradas(i,3);
- salidaObtenida = redNeuronal(entradaActual,pesos,theta);
- disp("******************");
- entradaActual
- salidaDeseada
- salidaObtenida
- endfor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement