Anda di halaman 1dari 8

%REDES NEURONALES.

clc disp(' -----------------------------------------------------------------------------') disp(' ----------------------APLICACION REDES NEURONALES----------------------------') disp(' -----------------------------------------------------------------------------') disp('')%clear all disp('--- Seleccione el tipo de red con la que desea trabajar: ') disp('- 1. newff Backpropagation ') disp('- 2. newfc Cascada ') O = input('--- : '); if O == 1 TIPO = 'newff'; else TIPO = 'newfc'; end disp(' ') disp('********************* CREACION E INICIALIZACION DE LA RED ********************') TIPO P = input(' 1- Ingrese las entrada de la forma [ 0 0 0;0 0 0;0 0 0] : '); T = input(' 2- Ingrese las salidas de la forma [ 0 0 0] : '); ncapa=input(' 3- Numero de capas = '); nneuro=input(' 4- Defina el numero de neuronas por capas, de la forma [capa1 capa2 capa_N ] = '); u =length(nneuro); if u~= ncapa disp(' ERROR ... No especifico las neuronas para el numero de capas indicadas') break; end disp(' 5- Escriba la funcion de activacion para las capas, pueden ser: ') disp(' - purelin') disp(' - logsig ') disp(' - tansig ') acti= input(' de la forma ,FA1 , FA2 , FA3- = '); a =length(acti); if a~= ncapa disp(' ERROR ... No especifico la funcion de activacion para el numero de capas indicadas') break; end disp(' 6- Escriba el algoritmo de entrenamiento, pueden ser ') disp(' - traingd') disp(' - traingdm ') disp(' - traingda ') disp(' - traingdx ') disp(' - trainlm ') disp(' - trainrp ') algo= input(' de la forma *algoritmo+ = '); if O == 1 RED=newff([min(P')' max(P')'],nneuro,acti,algo); % Inicializando la red neuronal else RED=newcf([min(P')' max(P')'],nneuro,acti,algo); % Inicializando la red neuronal end disp('') disp('************************ INICIALIZAR PESOS Y UMBRALES *********************** ')

disp('- 1. Aleatoreo ') disp('- 2. Manual ') I = input('--- : '); disp('') if I == 2 %---------------------------------------MODIFICACION DE PESOS Y UMBRALES %*********************** PESO ENTRADA iww = input(' - Ingrese los pesos de entrada IW[1,1] de la forma [0 0 0;0 0 0;0 0 0] : '); Tiww=size(iww); %tamao d la matriz digitada E=size(P); %tamao d la matriz d entrada M=[E(1) nneuro(1)]; %almacena en una variable el 1er valor dl tamao d la matriz d entrada E(1) + valor del vector de neurona en la 1ra posicion if Tiww ~= M disp(' ERROR ... El tamao de la matriz de pesos d entrada es incorrecto'); break; end; RED.iw{1,1}=iww; for i=1:ncapa-1 disp('') sprintf('- Ingrese los pesos entre capas LW[%d,%d]de la forma [0 0 0;0 0 0;0 0 0]',i+1,i) pc = input(': '); tm=size(pc); MT=[nneuro(i+1) nneuro(i)]; if tm ~= MT disp(' ERROR ... El tamao de la matriz de pesos entre capas es incorrecto'); break; end; RED.lw{i+1,i}=pc; end; for j=1:ncapa % UMBRALES sprintf('- Ingrese los umbrales b[%d] para la capa oculta, de la forma [0;0;0]',j) um = input(': '); tu=size(um); MU=[nneuro(j) 1]; if tu ~= MU disp(' ERROR ... El tamao de la matriz de pesos entre capas es incorrecto'); break; end; RED.b{j}=um; end; end; disp('') disp(' ************************ PARAMETROS DE ENTRENAMIENTO *********************** ') it=input('1- Numero iteraciones = '); er=input('2- Error maximo permitido = '); rt=input('3- Rata de aprendizaje = '); RED.trainParam.epochs = it; RED.trainParam.goal = er; RED.trainParam.lr = rt;

disp(' ') disp(' ************************* ENTRENAR LA RED ********************************** ') disp(' --- Presione enter para entrenar ') disp(' ') RED = train(RED,P,T); disp(' ************************* SIMULAR LA RED ********************************** ') disp('--- Realizar la simulacion con: ') disp('- 1. Todos los datos ') disp('- 2. Caso particular ') I = input('--- : '); if I == 1 disp(' ') disp('- Simulacion con todos los datos ') C=sim(RED,P) gensim(RED) else disp(' ') disp('- Simulacion con datos particulares ') X = input('-- Ingrese los valores de la forma [ 0 0 0;0 0 0;0 0 0] : '); C=sim(RED,X) gensim(RED) end ESTA ES LA AND
>> P=[0 0 1 1; 0 1 0 1] P= 0 0 1 1 0 1 0 1 >> T=[0 0 0 1] T= 0 0 0 1 >> net= newff ([min(P')' max(P')'], [2 1], {'logsig','logsig'}, 'traingd'); >> net.trainParam.epochs= 100; >> net.trainParam.goal= 1e-8; >> net.trainParam.lr= 0.01; >> net.trainParam.show= 25; >> net=train(net,P,T); TRAINGD-calcgrad, Epoch 0/100, MSE 0.413134/1e-008, Gradient 0.233272/1e-010 TRAINGD-calcgrad, Epoch 25/100, MSE 0.399479/1e-008, Gradient 0.233888/1e-010 TRAINGD-calcgrad, Epoch 50/100, MSE 0.385852/1e-008, Gradient 0.232704/1e-010 TRAINGD-calcgrad, Epoch 75/100, MSE 0.372471/1e-008, Gradient 0.229628/1e-010 TRAINGD-calcgrad, Epoch 100/100, MSE 0.359547/1e-008, Gradient 0.224691/1e-010 TRAINGD, Maximum epoch reached, performance goal was not met. >> C = sim(net,P) C= 0.4672 0.0367 0.6577 0.1134 ESTE ES LO QUE HIZO EL PELAO CON EL PROFE EN CLASE.
clc clear all; LE=[10; 10; 6; 6; 6; 6; 6; 6; 6; 6]; LC=[10; 10; 4; 4; 4; 4; 4; 4; 4; 4]; LT=[2; 2; 2; 2; 10; 10; 2; 2; 2; 2]; R1=[3; 5; 9; 9; 8; 2; 9; 2; 9; 2]; R2=[10; 5; 4; 3; 8; 4; 5; 8; 10; 10];

P=[LE LC LT R1 R2]; T=[0 0 1 0 0]; net=newff([min(P')' max(P')'],[20 10 1],{'tansig','tansig','logsig'},'traingd'); % Inicializando la red neuronal net.trainParam.epochs = 100; net.trainParam.goal = 1e-8; net.trainParam.lr = 0.01; net.trainParam.show = 25; net=train(net,P,T); %Entrenamiento de la red reuronal C=sim(net,P) % Testeando la red S=T-C;

PARA LA GUI DONDE ESCOGE LA RED


function popupmenu1_Callback(hObject, eventdata, handles) sel=get(handles.popupmenu1,'value'); switch sel case 1 msgbox('Escoja La Red!','Red Neuronal'); case 2 redff; case 3

redfc; end

PARA LA GUI DONDE CREA E INICIALIZA LA RED FEED FORWARD ESTA PARA EL POPUPMENU DE ALG DE ENTRENAMIENTO...
function popupmenu2_Callback(hObject, eventdata, handles) sel=get(handles.popupmenu2,'value'); switch sel case 1 msgbox('Escoja el algoritmo de Entrenamiento!','Documentos'); case 2 ae='traingd'; case 3 ae='traingdm'; case 4 ae='traingda'; case 5 ae='traingdx'; case 6 ae='trainlm'; case 7 ae='trainrp'; end

ESTA PARA EL POPUPMENU DE FUN D ACTIVACION...


function popupmenu1_Callback(hObject, eventdata, handles) global fa; global fb; global fc; global f; sel=get(handles.popupmenu1,'value'); switch sel case 1 msgbox('Escoja La funcion de Activacion!','Red Neuronal'); case 2 fc='purelin' %f=fc; case 3 fb='logsig' %f=fb; case 4 fa='tansig' %f=fa; End

ESTA PARA EL BOTON DE INICIALIZAR...


function pushbutton1_Callback(hObject, eventdata, handles) global fa; global fb; global fc; global f; clc; P=str2num(get(handles.editentradas,'string')); T=str2num(get(handles.editsalidas,'string')); C=str2num(get(handles.editcapas,'string')); N=str2num(get(handles.editneuronas,'string')); V=0; for i=1:C f=fa fa=fb fb=fc fc=f V.layers{i}=f; end net=newff([min(P')' max(P')'],N,V.layers,'traingd');

ESTA PARA EL BOTON DE PARAMETRIZAR...


net.trainParam.epochs = 100; net.trainParam.goal = 1e-8; net.trainParam.lr = 0.01; net.trainParam.show = 25; x=sim(net,P)

UN PEQUEO CODIGO DE AYUDA


clc; g=''; n=input('ingrese el tamao del vector:'); %y=input('ingrese los caracteres del vector:'); V=0; for i=1:n

gg=sprintf('%s','fuu'); g=input(sprintf('ingrese el caracter: %d',i)); V.layers{i}=g; %V=V+V End

PARA HALLAR PARES IMPARES


n=input('introduce un numero: '); if mod(n,2) fprintf('\n El numero es impar %5.3f\n',n); else fprintf('\nel numero es par %5.3f\n',n); end

TEORIA DIAPOSITIVAS

ENTRENAR LA RED net = train(net, P, T); TESTEAR LA RED C = sim(net, P); EL EJEMPLO DE LA DIAPOSITIVAS