Matlab - crear red neuronal de tipo perceptrón multicapa con tus propios pesos y bias

 
Vista:
Imágen de perfil de Wilber

crear red neuronal de tipo perceptrón multicapa con tus propios pesos y bias

Publicado por Wilber (7 intervenciones) el 09/05/2018 17:07:53
Muy buenas,

Alguien sabe cómo crear una red de tipo perceptrón multicapa de una capa oculta y con diez neuronas en esa capa oculta pero a la vez también definirle los pesos iniciales y bias para entrenar la red con esos datos esto quiciera hacerlo mediante los códigos necesarios y no con la erramienta nntool

para un ejemplo intenté hacerlo con estas líneas de código pero no me compila:


[x,t] = wine_dataset;

net =feedforwardnet(10); % esta linea es la que me choca, debe haber algún modo de definir que es de tipo perceptrón multicapa con una capa oculta y diez neuronas en esa capa oculta y que además me permita definir los pesos iniciales

net.IW{1,1}=[-0.018151 -0.14478 0.87845 -0.60477 -0.20309 0.14797 -0.59583 -0.75896 -0.69415 -0.074939 0.34347 0.17983 -0.050415; -0.23017 0.6927 -0.47162 0.50982 0.119 -0.56246 -0.46065 -0.2587 0.15912 0.53829 -0.6195 -0.16237 -0.66572; 0.70922 -0.31179 -0.73398 0.22733 -0.38975 0.63805 -0.1211 0.048468 0.43782 0.028348 -0.38507 0.65325 -0.50899; 0.64409 0.30815 0.093779 -0.18959 -0.32112 0.58176 -0.62178 0.23666 -0.1173 0.67978 -0.42287 -0.76441 0.33981; -0.82624 0.30724 0.70534 -0.57089 0.21628 0.58693 0.18198 -0.17063 -0.75578 0.25436 0.31 -0.069359 -0.048974; 0.43996 0.072372 0.31292 -0.13271 -0.43416 -0.44258 -0.053781 0.59187 -0.43196 0.84659 0.63702 -0.13993 -0.64236; -0.48729 0.41811 -0.65336 -0.037944 0.68462 0.19915 0.41356 0.46086 -0.73098 -0.54725 -0.32827 -0.082489 -0.33532; -0.11987 0.25868 -0.20363 -0.58934 0.74977 -0.74173 0.31051 0.728 -0.34019 0.27359 0.43576 0.41967 0.16682; 0.12657 -0.85099 -0.10384 0.23665 0.60876 -0.19761 0.36627 0.082845 -0.15841 -0.5577 0.46357 -0.46937 -0.815; 0.6344 -0.53302 0.69014 -0.39235 -0.22371 -0.26836 -0.6683 -0.25055 0.038893 0.24619 -0.70683 0.40801 0.34164];

net.IW{2,1}=[-0.48796 0.5038 -0.77589 0.088413 0.28011 0.84475 -0.50052 -0.094617 0.51288 -0.15909; 0.78798 -0.58772 0.14386 -0.1402 0.33793 -0.54945 -0.71848 -0.077915 -0.28275 0.64547; -0.57781 -0.53168 0.45878 0.3614 0.33974 0.52363 0.26848 0.40519 0.40535 0.83296];

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

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


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

crear red neuronal de tipo perceptrón multicapa con tus propios pesos y bias

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 09/05/2018 18:46:54
no te compila debido a que net.IW{2,1} no debe tener valores ya que esa conexión no existe, de esta forma corre sin problemas :

1
2
3
4
5
6
7
[x,t] = wine_dataset;
net =feedforwardnet(10);
net = configure(net,x,t);
 net.IW{1,1}=[-0.018151 -0.14478 0.87845 -0.60477 -0.20309 0.14797 -0.59583 -0.75896 -0.69415 -0.074939 0.34347 0.17983 -0.050415; -0.23017 0.6927 -0.47162 0.50982 0.119 -0.56246 -0.46065 -0.2587 0.15912 0.53829 -0.6195 -0.16237 -0.66572; 0.70922 -0.31179 -0.73398 0.22733 -0.38975 0.63805 -0.1211 0.048468 0.43782 0.028348 -0.38507 0.65325 -0.50899; 0.64409 0.30815 0.093779 -0.18959 -0.32112 0.58176 -0.62178 0.23666 -0.1173 0.67978 -0.42287 -0.76441 0.33981; -0.82624 0.30724 0.70534 -0.57089 0.21628 0.58693 0.18198 -0.17063 -0.75578 0.25436 0.31 -0.069359 -0.048974; 0.43996 0.072372 0.31292 -0.13271 -0.43416 -0.44258 -0.053781 0.59187 -0.43196 0.84659 0.63702 -0.13993 -0.64236; -0.48729 0.41811 -0.65336 -0.037944 0.68462 0.19915 0.41356 0.46086 -0.73098 -0.54725 -0.32827 -0.082489 -0.33532; -0.11987 0.25868 -0.20363 -0.58934 0.74977 -0.74173 0.31051 0.728 -0.34019 0.27359 0.43576 0.41967 0.16682; 0.12657 -0.85099 -0.10384 0.23665 0.60876 -0.19761 0.36627 0.082845 -0.15841 -0.5577 0.46357 -0.46937 -0.815; 0.6344 -0.53302 0.69014 -0.39235 -0.22371 -0.26836 -0.6683 -0.25055 0.038893 0.24619 -0.70683 0.40801 0.34164];
net.b{1}=[1;1;1;1;1;1;1;1;1;1];
net.b{2}=[1;1;1];
[net,tr] = train(net,x,t);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Wilber

crear red neuronal de tipo perceptrón multicapa con tus propios pesos y bias

Publicado por Wilber (7 intervenciones) el 09/05/2018 20:27:17
veo que funciona muy bien, aunque creo que tengo un error de concepto y es que no entiendo bien esta parte
si net.IW{1,1}=valoresquequieras
define los pesos, cómo sé cuáles son los pesos que define?, es decir, para definir los pesos entre la capa de entrada y la capa oculta utilizo net.IW{1,1}=valoresquequieras
y para definir los pesos entre la capa oculta y la capa de salida (pensaba que era net.IW{2,1}=valoresquequieras, que ya comprendí que es un error) entonces no comprendo bien cómo definir los pesos entre la capa oculta y la capa de salida,
existe algún modo de hacerlo?
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

crear red neuronal de tipo perceptrón multicapa con tus propios pesos y bias

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 09/05/2018 20:41:42
es que el concepto es mucho más amplio, porque puede haber entradas que también estén directamente conectadas a la última neurona por ejemplo y así Matlab® considera todo ese tipo de opciones si las activas, en este caso están desactivadas y por eso esa IW{2,1} NO debería existir, por eso el error, los pesos de salida que quieres cambiar están en LW , así que con el siguiente código solucionas tu problema :

1
2
3
4
5
6
7
8
[x,t] = wine_dataset;
net =feedforwardnet(10);
net = configure(net,x,t);
net.IW{1,1}=[-0.018151 -0.14478 0.87845 -0.60477 -0.20309 0.14797 -0.59583 -0.75896 -0.69415 -0.074939 0.34347 0.17983 -0.050415; -0.23017 0.6927 -0.47162 0.50982 0.119 -0.56246 -0.46065 -0.2587 0.15912 0.53829 -0.6195 -0.16237 -0.66572; 0.70922 -0.31179 -0.73398 0.22733 -0.38975 0.63805 -0.1211 0.048468 0.43782 0.028348 -0.38507 0.65325 -0.50899; 0.64409 0.30815 0.093779 -0.18959 -0.32112 0.58176 -0.62178 0.23666 -0.1173 0.67978 -0.42287 -0.76441 0.33981; -0.82624 0.30724 0.70534 -0.57089 0.21628 0.58693 0.18198 -0.17063 -0.75578 0.25436 0.31 -0.069359 -0.048974; 0.43996 0.072372 0.31292 -0.13271 -0.43416 -0.44258 -0.053781 0.59187 -0.43196 0.84659 0.63702 -0.13993 -0.64236; -0.48729 0.41811 -0.65336 -0.037944 0.68462 0.19915 0.41356 0.46086 -0.73098 -0.54725 -0.32827 -0.082489 -0.33532; -0.11987 0.25868 -0.20363 -0.58934 0.74977 -0.74173 0.31051 0.728 -0.34019 0.27359 0.43576 0.41967 0.16682; 0.12657 -0.85099 -0.10384 0.23665 0.60876 -0.19761 0.36627 0.082845 -0.15841 -0.5577 0.46357 -0.46937 -0.815; 0.6344 -0.53302 0.69014 -0.39235 -0.22371 -0.26836 -0.6683 -0.25055 0.038893 0.24619 -0.70683 0.40801 0.34164];
net.LW{2,1}=[-0.48796 0.5038 -0.77589 0.088413 0.28011 0.84475 -0.50052 -0.094617 0.51288 -0.15909; 0.78798 -0.58772 0.14386 -0.1402 0.33793 -0.54945 -0.71848 -0.077915 -0.28275 0.64547; -0.57781 -0.53168 0.45878 0.3614 0.33974 0.52363 0.26848 0.40519 0.40535 0.83296];
net.b{1}=[1;1;1;1;1;1;1;1;1;1];
net.b{2}=[1;1;1];
[net,tr] = train(net,x,t);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Wilber

crear red neuronal de tipo perceptrón multicapa con tus propios pesos y bias

Publicado por Wilber (7 intervenciones) el 09/05/2018 21:04:14
muchas gracias por su tiempo, excelente aclaración
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