Академический Документы
Профессиональный Документы
Культура Документы
Enable
o f f
);
set(handles.txt
s
alidas,
Enable
o f f
);
set(handles.menu
E
ntrenamiento,
Enable
o f f
);
set(handles.txt
c
apas,
Enable
o f f
);
set(handles.botonNeurona,
Enable
o f f
);
set(handles.text1,
Enable
o f f
);
set(handles.text2,
Enable
o f f
);
set(handles.text3,
Enable
o f f
);
set(handles.text6,
Enable
o f f
);
set(handles.botonMostrarNeurona,
Enable
o f f
);
set(handles.botonClasi f icar,
Enable
o f f
);
set(handles.edit10,
Enable
o f f
);
set(handles.edit11,
Enable
o f f
);
set(handles.text9,
Enable
o f f
);
set(handles.text10,
Enable
o f f
);
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
Esta seccin de cdigo permitir elejir la funcin
de transferencia, tanto logig como tansig.
function menu
F
uncion
C
allback(hOb ject,
eventdata, handles)
%obtiene el valor de la funcion (tansig y logsig)
valorF=get(handles.menu
F
uncion,
Value
);
globalValorFuncion
switchvalorF
case1
err f ig = errordlg(
Opcinnovlida
Errordeopcion
);
case2
ValorFuncion =
logsig
;
set(handles.menu
E
ntrenamiento,
Enable
on
);
set(handles.text6,
Enable
on
);
guidata(hObject, handles);
case3
ValorFuncion =
tansig
;
set(handles.menu
E
ntrenamiento,
Enable
on
);
set(handles.text6,
Enable
on
);
guidata(hObject, handles);
end
El usuario ingresa el numero de capas, como paso
siguiente dar clic en el botn neuronas que permitir
establecer el nmero de neuronas por capas.
function botonNeurona
C
allback(hOb ject,
eventdata, handles)
numCapas
= str2num(get(handles.txt
c
apas,
S tring
));
%Obtienelasneuronasporcadacapa
globalValorFuncion %secreanvariables
valorglobalvector
c
apas
vector
c
apas = [];
globalvector
f
unc
p
or
c
apa
vector
f
unc
p
or
c
apa = ;
%cicloparaagregarneuronasaal
numerodecapas
f orn = 1 : 1 : numCapas
if n == numCapas
n
e
= str2num(get(handles.txt
e
ntradas,
S tring
));
f ila = n
e
(:, 1);
num
e
= size( f ila);
num
e
num
e
ntradas = num
e
(1);
vector
c
apas(n) = num
e
ntradas;
vector
f
unc
p
or
c
apa(n) = ValorFuncion;
else
texto
1
=
Numerodeneuronasparalacapa
;
texto
2
= num2str(n);
texto
c
ompleto = [texto
1
texto
2
];
prompt = texto
c
ompleto;
dlg
t
itle =
Numerodeneuronasporcapa
;
answer = inputdlg(prompt, dlg
t
itle);
vector
c
apas = [vector
c
apas
str2num(answer1, 1)];
vector
f
unc
p
or
c
apa(n) = ValorFuncion;
end
end
En esta parte de cdigo el usuario establecer el
entrenamiento para la red neuronal.
function menu
E
ntrenamiento
C
allback(hObject,
eventdata, handles)
%Obtieneelentrenamiento
valorE = get(handles.menu
E
ntrenamiento,
Value
);
globalValorEntrenamiento
%recorreelvectordeotraswitchvalorE
case1
%muestraelmensajedeerror
err f ig = errordlg(
Opcinnovlida
Errordeopcion
);
case2
ValorEntrenamiento =
traingdx
;
set(handles.txt
e
ntradas,
Enable
on
);
set(handles.txt
s
alidas,
Enable
on
);
set(handles.txt
c
apas,
Enable
on
);
set(handles.botonNeurona,
Enable
on
);
set(handles.text1,
Enable
on
);
set(handles.text2,
Enable
on
);
set(handles.text3,
Enable
on
);
set(handles.text6,
Enable
on
);
set(handles.botonMostrarNeurona,
Enable
on
); set(handles.botonClasi f icar,
Enable
on
);
UNIVERSIDAD NACIONAL DE LOJA
mjchinchayc@unl.edu.ec, kkherrerap@unl.edu.ec,ekmasachem@unl.edu.ec
4
Marjorie Chinchay-Karla Herrera-Erika Masache Tutor: Mg.Sc Henry Paz
set(handles.edit10,
Enable
on
);
set(handles.edit11,
Enable
on
);
set(handles.text9,
Enable
on
);
set(handles.text10,
Enable
on
);
.
.
.
end
Este grupo de sentencias permitir obtener los
parmetros denidos en las funciones anteriores para
crear la red neuronal.
function botonClasicar
C
allback(hObject,
eventdata, handles)re f reshdata
% Obtencion de entradas
P=get(handles.txt
e
ntradas,
S tring
);
T = get(handles.txt
s
alidas,
S tring
);
EC = get(handles.edit10,
S tring
);
ER = get(handles.edit11,
S tring
);
a = size(T);
errg = errordlg(Datos Incorrectos,
rror de opcion);
P=str2num(get(handles.txt
e
ntradas,
S tring
));
T = str2num(get(handles.txt
s
alidas,
S tring
));
EC = str2double(get(handles.edit10,
S tring
));
ER = str2double(get(handles.edit11,
S tring
));
globalValorEntrenamiento
globalvector
f
unc
p
or
c
apa
globalvector
c
apas
2. Crear el objeto red: funcin new. Una vez
que se tiene los datos de entrada y salida deseada,
para entrenar una red con conexin hacia adelante
necesitamos crear el objeto red. La funcin new
crea una red con conexin hacia adelante y requiere de
cuatro argumentos de entradas y devuelve el objeto de
red.
1. El primer argumento es una matriz de los mni-
mos y mximos b1 de las Ni entradas (Nix2 valo-
res, para cada uno de los N elementos del vector
de entrada).
2. El segundo argumento es un arreglo que contiene
los tamaos de cada capa.
3. El tercer argumento es un arreglo que contiene
los nombres de las funciones de transferencia
que se usarn en cada capa.
4. El ltimo argumento contiene el nombre del al-
goritmo de entrenamiento a ser usado.
El cdigo para la creacin y visualizacin de la red
neuronal para la aplicacin en matlab se describe en
siguientes lneas de cdigo:
%crea la neurona= net
=new(minmax(P),vector
c
apas,
vector
f
unc
p
or
c
apa, ValorEntrenamiento);
net.trainParam.epochs = EC;
net.trainParam.goal = ER;
%net = train(net, P, T);
Y = sim(net, P);
axes(handles.axes3);
%presentalagraf ica
plot(P, T, P, Y,
);
%view(net);
handles.net
g
uardada = net;
guidata(hObject, handles); %end
function botonMostrarNeurona
C
allback
(hObject, eventdata, handles)
a = handles.net
g
uardada;
view(a);
3. Entrenar la red: funcin train. Una vez que
los pesos y los bias han sido inicializados, la red est
lista para ser entrenada. La red puede ser entrenada
para aproximacin de funciones (regresin no lineal),
asociacin de patrones o clasicacin de patrones.
El proceso de entrenamiento requiere un conjunto de
ejemplos que tenga un comportamiento apropiado para
la red entradas p ( X) y salidas t ( Yd) .Durante
el entrenamiento los pesos y los bias de la red son
ajustados iterativamente para minimizar la funcin de
costo o error de la red net.performFcn.
Para entrenar la red tenemos que utilizar la funcin
train:
>> net = train(net, input, target)
;
Aparece un grco en el que vemos la evolucin
del entrenamiento. El objetivo a alcanzar es bajar de
un gradiente de 1E-10 (por defecto). Vemos tambin
que el nmero de iteraciones mximo, por defecto, es
100.(Aguilar J. Jorge,2011, )
Las principales funciones de entrenamiento train son:
trainbfg: BFGS quasi Newton.Requiere alma-
cenamiento de la Hessian matrix aproximada y
tiene ms clculo en cada iteracin, pero usual-
mente onverge en pocas iteraciones
trainbr:Regularizacin Bayesiana. Modica-
cin del algoritmo de entrenamiento Levenber-
UNIVERSIDAD NACIONAL DE LOJA
mjchinchayc@unl.edu.ec, kkherrerap@unl.edu.ec,ekmasachem@unl.edu.ec
5
Marjorie Chinchay-Karla Herrera-Erika Masache Tutor: Mg.Sc Henry Paz
gLevenberg Marquardt para producir redes que
generalizan bien. Reduce la dicultad de deter-
minar la arquitectura ptima de la red.
traincgb:Algoritmo de gradiente conjugado, Po-
well Beale. Requerimientos de almacenamiento
ligeramente mayores que traincgp. Generalmen-
te convergencia ms rpida
traincgf:Algoritmo de gradiente conjugado
Fletcher Reeves. Tiene los Requerimientos de
almacenamiento menores de los algoritmos de
gradiente conjugado
traincgp: Algoritmo de gradiente conjugado Po-
lak Ribire. Requerimientois de almacenamiento
ligeramente mayores que traincgf. CXonvergen-
cia ms rpida sobre algunos problemas
traingd:Gradiente descendente bsico, puede
usarse en entrenamiento de modo incremental
traingda:Gradient descent adaptive
traingdm:Gradiente descendente con momen-
tun. Generalmente ms rpido que traingd. Pue-
de usarse en entrenamiento de modo incremental
traingdx:Tasa de aprendizaje adaptativa. Entre-
namiento ms rpido que traingd, pero solo pue-
de ser usado en modo de entrenamiento batch
(por lotes)
trainlm:Algoritmo Levenberg Marquardt. El al-
goritmo de entrenamiento ms rpido para redes
de tamao moderado. Tiene caractersticas de re-
duccin de memoria para conjuntos de entrena-
miento grandes
trainoss:Mtodo One step secant. Compromiso
entre los mtodos gradiente conjugado mtodos
quasiNewton.
trainrp:Backpropagation exible. Simple algo-
ritmo de entrenamiento en modo batch, con r-
pida convergencia y mnimos requerimientos de
almacenamiento.
trainscg:Algoritmo de gradiente conjugado es-
calado (Scaled conjugate gradient). Solo el al-
goritmo de gradiente conjugado que no requiere
bsqueda lineal. Un algoritmo de entrenamiento
de propsito general, muy bueno.
trainb:Batch training weight bias learning
trainc:Cyclical order inc. training learning f.
trainr:Random order inc. training learning f.
4. Simular la respuesta de la red
para nuevas entradas: funcin sim.
>> out put = sim(net, input)
La funcin sim se utiliza para simular la red y as cal-
cular las salidas.
V. RESULTADOS
EJEMPLOS DE LOGSIG Y TANSIG EN
MATLAB
Se utilizar las matriz de entrada y salidas que se
describe a continuacin para obtener el resultado de la
aplicacin realizada en el programa de Matlab:
Logsig
Crear una red neuronal que utilice el entrenamiento
traingd con los siguientes datos de entrada y salida,con
la funcin de transferencia logsig.
net = new([2 7], [5,1], logsig,logsig
, traingd);
P=[3 7 2];
T=[1 7 4];
net.trainParam.epochs=100;
net.trainParam.goal=0.00001;
net = train(net, P, T);
sim(net, P)
Figura 9. Ejecucin de la Funcin Logsig en Matlab
La Red neuronal nos queda como en la siguiente gura:
Figura 10. Salida de la Red Neuronla con la Funcin
Logsig
UNIVERSIDAD NACIONAL DE LOJA
mjchinchayc@unl.edu.ec, kkherrerap@unl.edu.ec,ekmasachem@unl.edu.ec
6
Marjorie Chinchay-Karla Herrera-Erika Masache Tutor: Mg.Sc Henry Paz
Tansig
Crear una red neuronal que utilice el entrenamiento
trainbr con los siguientes datos de entrada y salida,con
la funcin de transferencia tansig.
net = new([2 3], [5,1], tansig,tansig
, trainbr);
P=[3 6 2];
T=[2 4 8];
net.trainParam.epochs=10000;
net.trainParam.goal=0.00001;
net = train(net, P, T);
sim(net, P)
Figura 11. Ejecucin de la Funcin Tansig en Matlab
La Red neuronal nos queda como en la siguiente gura:
Figura 12. Salida de la Red Neuronal con la Funcin
Tansig
VI. CONCLUSIONES
Las funciones de activacin logsig y tansig son
diferenciables, por ello son utilizadas para las
Redes Multicapa BackPropagation debido a que
tambin es diferenciable, es decir sirven para re-
solver problemas no lineales.
Las funciones de activacin logsig y tansig son
utilizadas en varias reas, siendo su principal
aplicacin el clculo de probabilidades y predic-
ciones.
La programacin en Matlab exige un nivel me-
dio o alto de conocimientos acerca de su funcio-
namiento, puesto que la herramienta no presenta
ningn tipo de ayuda acerca de los errores pro-
ducidos; a diferencia de otros entornos de desa-
rrollo como por ejemplo NetBeans.
Matlab utiliza un intrprete puesto que no nece-
sita la declaracin de variables con su tipo de da-
tos antes de su utilizacin.
Referencias
Ledesma Sergio, (2006). Las Redes Neuronales implementa-
cin y consideraciones prcticas. Logsig-Tansig, 10:413.
Tanco, Fernando (2009). Introduccin a las Redes Neurona-
les Articiales. 4:912.
Jaimes J. Juan Carlos, Gualdrn G. Oscar Eduardo,
Daz R. Jorge Luis (2011) 2:110. Estimacin
de la resistencia del rotor de un motor asincrnico
utilizando FPGA Universidad de Pamplona, Colombia
https://www.google.com.ec/url?sa=trct=jq=esrc=ssource=
webcd=10cad=rjauact=8ved=0CHQQFjAJ
url=http %3A%2F %2Frevistas.ustatunja.edu.co %2Findex.php
%2Fingeniomagno %2Farticle %2Fdownload %2F59
%2F49ei=TdNqU43eIoKMyATL6YGQCAusg
=AFQjCNGPcnsrM84GZrPOiXqH0Y47s1QnBwbvm=
bv.66330100,d.aWw
Aguilar Jaramillo Jorge (2011) Apuntes de Inteligencia
Articial Ponticia Universidad Catlica del Ecuador
http://www.acsoandes.org/comunicacion/aaa/imagenes
/publicaciones/pub
3
0.pd f UiversidaddeS evilla(2012)
Aplicacinderedesneuronalesalmodeladodedescargas
elctricasengases
htt p : //bibing.us.es/proyectos/
abreproy/70196/ f ichero/Capitulo5
%252Fcapitulo5.pd f
Figura 13. Licencia
UNIVERSIDAD NACIONAL DE LOJA
mjchinchayc@unl.edu.ec, kkherrerap@unl.edu.ec,ekmasachem@unl.edu.ec
7