/entrega2/ejercicio1/neurona_no_lineal.m~

http://github.com/melisabok/RedesNeuronales · Unknown · 49 lines · 26 code · 23 blank · 0 comment · 0 complexity · 29ad462c2b7d5537871f02f2f712fd7f MD5 · raw file

  1. function[ite, W, b] = neurona_no_lineal(P, T, alfa, CotaError, MAX_ITE, funcion)
  2. [CantAtrib, CantPatrones] = size(P);
  3. W = rand(1,CantAtrib) - 0.5 * ones(1,CantAtrib);
  4. b = rand - 0.5;
  5. errorAct = 1;
  6. ite = 0;
  7. while (ite < MAX_ITE) & (errorAct > CotaError)
  8. ite = ite + 1;
  9. errorAct = 0;
  10. for patr = 1 : CantPatrones
  11. neta = W*P(:,patr) + b;
  12. f_neta = feval(funcion, neta);
  13. f_prima_neta = feval([ 'd' funcion], neta, f_neta);
  14. errorK = T(patr) - f_neta;
  15. gradiente = -2*errorK*f_prima_neta*P(:, patr);
  16. W = W - alfa * gradiente';
  17. b = b - alfa * (-2*errorK*f_prima_neta);
  18. errorAct = errorAct + errorK^2;
  19. end
  20. %[ite ErrorAct]
  21. if (mod(ite,100) == 0)
  22. correctos_train = evaluar_clase_funcion(T, feval(funcion, W*P+b), funcion);
  23. [alfa ite correctos_train (correctos_train / CantPatrones) * 100]
  24. end
  25. end
  26. %fprintf('Salida, ite: %d error: %.8f\n', ite, suma_error);