Matlab - inicializar los pesos de una red neuronal de tipo perceptrón multicapa

 
Vista:
Imágen de perfil de Wilber

inicializar los pesos de una red neuronal de tipo perceptrón multicapa

Publicado por Wilber (7 intervenciones) el 08/05/2018 22:04:53
saludos,

por favor necesito saber como inicializar los pesos de una red neuronal de tipo perceptrón multicapa me explico: como todos sabemos antes de entrenar la red los pesos de las conexiones entre las capas se generan automáticamente en un rango de -1 a 1, sin embargo si quisiera yo mismo poner los pesos iniciales antes de ser entrenada(con el objetivo quizás de mejorar el entrenamiento) cómo pudiera hacerlo en matlab?.

Sé que existe el comando nntool que permite hacer el entrenamiento y entre sus opciones puedes modificar los pesos pero quisiera hacerlo a base de códigos, alguien me pudiera ayudar si conoce como inicializar los pesos de las conexiones mediante algún código,

gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

inicializar los pesos de una red neuronal de tipo perceptrón multicapa

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 08/05/2018 22:20:07
puedes modificar los pesos como se indica en el ejemplo :
donde el 1 corresponde a la primera capa y net sería la red neuronal que has creado
1
2
3
net.IW{1}=valoresquequieras
net.LW{1}=valoresquequieras
net.b{1}=valoresquequieras
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Wilber

inicializar los pesos de una red neuronal de tipo perceptrón multicapa

Publicado por Wilber (7 intervenciones) el 09/05/2018 00:26:48
Mil gracias por responder de forma tan rápida y certera, me ha servido de mucho, pero quisiera
aprobechar para hacer otra pregunta:

Existe algún modo de hacer un entrenamiento de una red neuronal y que cuando haga las pruebas
para comprobar el porcentaje correcto en la clasificación me de el mismo resultado si utilizo el mismo
código, resulta que he corrido varias veces estas lineas de código en matlab pero no siempre me devuelve
el mismo resultado, quizás me falte algo por poner, quizás algún valor aleatorio en el entrenamiento esté
variando el resultado y lo deba definir en el código,

gracias nuevamente por su tiempo y dedicación
este es el código:
[x,t] = crab_dataset;

net.IW{1}=[-1.96101593429762 -0.436331562289664 1.36368517326886 0.268951520059904 -1.51274202499527 -1.68818948349881;-1.25257438022842 -0.315290324772879 -0.995495373538432 0.660878024671496 -0.475998192656737 1.09451657862743;0.0758878870925051 -0.676648629937734 0.700593378618538 1.02818107846492 -0.532851147930138 0.409560101371327;-0.241828618137549 0.118277784707985 -1.57476598478641 -0.611423516867900 -0.754893713697286 1.14578382823384;-0.0557169348651029 0.613664974728704 -3.11418574603447 1.05388647913701 1.06302745642974 -0.234479064261255;-0.0590591332362536 1.08376943866675 -0.664757310846239 1.26002835894685 -0.564907969053620 -0.0794436965055129;0.00580691404928876 -0.302015020741359 -1.80260978200371 1.85200907236259 -0.0501004865667357 -0.453469293104307;1.55789105733208 -0.897264075675645 -2.31582588339349 2.23523244604024 0.0638025801481123 -0.151332439271155;1.05162089844312 0.217998279864027 0.135184370649160 1.37614212207932 -0.296109203754715 0.759875859021142;0.0849094446370252 0.639946771521514 -2.93901120555701 0.375994079832967 0.727186300149523 -0.396487492314142];

net.IW{2,1}=[-0.42904 -0.10947 0.20313 -0.75919 0.6855 -0.066463 0.25604 0.15709 0.19641 -0.91357; 0.62306 0.41953 0.46437 0.78454 -0.73665 -0.28582 -0.44214 0.16911 -0.084545 0.022647];

net.b{1}=[1;1;1;1;1;1;1;1;1;1];

net.b{2}=[1;1];

net = feedforwardnet(10);

[net,tr] = train(net,x,t);

plotperform(tr)
testX = x(:,tr.testInd);
testT = t(:,tr.testInd);
testY = net(testX);
testIndices = vec2ind(testY)
plotconfusion(testT,testY)
[c,cm] = confusion(testT,testY)
fprintf('Percentage Correct Classification : %f%%\n', 100*(1-c));
fprintf('Percentage Incorrect Classification : %f%%\n', 100*c);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

inicializar los pesos de una red neuronal de tipo perceptrón multicapa

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 09/05/2018 00:34:32
lo que veo aquí es que lo que estás agregando no te está funcionando porque luego de definir tus pesos vuelves a crear la red y se te borran los pesos ya definidos , así que la línea
1
net = feedforwardnet(10);
está de más porque se supone que ya net existe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar