Paso 1: Ordenar la matriz de entrada-salida %Se cargan los datos al espacio de trabajo: >> load -ascii no2.txt %No se utilizan los primeros 10 datos >> no2=no2(11:500,:); %Se define la matriz de entrada: >> x=no2(:,2:8)'; %Se define la matriz de salida: >> y=no2(:,1)'; %La cual se normaliza, #### Esto puede que no sea necesario #### >>[y_norm,parm_norm] = mapminmax(y); Paso 2: Crear la red multicapa %El segundo paso para crear una red multicapa que se adapte usando la retropropagación del error es %definiendo las características de la red, para lo cual se utiliza la función "newff". Se definen a %continuación los elementos que serán argumentos de esta función: %Valores mínimos y máximos de las variables de entrada: >> interv=minmax(x) interv = 4.1271 8.3485 -18.600 21.1000 0.3000 9.9000 -5.4000 4.3000 2.0000 359.0000 1.0000 24.0000 32.0000 608.0000 % Número de neuronas para cada capa: % Se utilizarán cuatro capas: % Capa 1: 25 neuronas, Capa 2: 17 neuronas, Capa 3: 8 neuronas y Capa 4: 1 neurona(definido por el % sistema) >>num_capas=[25 17 8 1]; % Se definen las funciones de activación que se utilizarán en cada capa >>funcact={'tansig' 'tansig' 'tansig' 'tansig'}; % Se aplicará el entrenamiento basado en Levenberg-Marquard , con factor de aprendizaje variable >> net=newff(interv, num_capas, funcact, 'trainlm', 'learngdm', 'mse'); %###################################################### % Si se utiliza la nueva versión de la función newff no es necesario definir los intervalos de las variables % ni el número de neuronas de la capa de salida: >>num_capas=[25 17 8]; >>net=newff(x,y, num_capas, funcact, 'trainlm', 'learngdm', 'mse'); %###################################################### % Se verifican los parámetros de entrenamiento que tiene definida la red: >> net.trainParam ans = epochs: 100 % Número de épocas goal: 0 % Objetivo de la función de validación max_fail: 5 mem_reduc: 1 min_grad: 1.0000e-010 mu: 1.0000e-003 mu_dec: 0.1000 mu_inc: 10 mu_max: 1.0000e+010 show: 25 time: Inf % Se alteran los parámetros que se consideren (ver 'trainlm') >>net.trainParam.epochs = 300; % Se entrena la rednet >> train(net,x,y_norm); % Se aplica la entrada a la red: >> ynet_norm=sim(net,x)'; % Se desnormaliza la salida de la red: #### Esto puede que no sea necesario#### >> ynet = mapminmax('reverse',ynet_norm,parm_norm); % Se comparan la salida real y la estimada por la red: >> plot(y) >> hold on >> plot(ynet,'g'); % Se verifican los parámetros de la red: %Ganancias (dimensión de matriz y valores): >> size(net.b{1}) %Capa 1 ans = 25 1 >> net.b{1} ans = -3.2854 -7.5365 -3.1804 -5.9047 -5.6352 -4.5587 -4.4138 4.3410 2.8817 0.5614 0.5172 2.3010 -1.1179 -1.8063 -3.7357 -2.5344 0.8172 -4.4757 0.7029 -1.9958 0.4948 1.0523 -1.3205 -0.6093 -0.5755 >> size(net.b{2}) %Capa 2 ans = 17 1 >> net.b{2} ans = -1.4751 -1.3305 1.3949 1.3558 1.1793 0.4787 0.4028 -0.2043 0.0140 -0.2211 -0.2812 -0.2948 -0.6002 -0.9626 -1.2465 1.2596 1.5345 >> size(net.b{3}) %Capa 3 ans = 8 1 >> net.b{3} ans = -1.7740 -0.9910 0.4408 0.0676 -0.1429 -0.6571 -1.2616 1.3620 >> size(net.b{4}) ans = 1 1 >> net.b{4} ans = 0.3961 %Capa 4 %Parámetros de las capas (dimensión de matriz y valores): >> size(net.IW{1}) %Capa 1 (entrada) ans = 25 7 >> net.IW{1} ans = 0.2077 0.0428 -0.4742 0.5357 -0.0022 0.1016 0.0021 0.1814 -0.1233 0.7773 -0.5884 -0.0179 0.2984 0.0015 0.1239 0.0828 0.4311 -0.2365 0.0699 -0.2357 -0.0149 0.0190 0.0404 0.3075 -0.3696 0.0205 0.0827 0.0080 0.9274 -0.0554 -0.0350 0.0600 -0.0022 -0.0479 0.0018 0.4874 0.0330 -0.0423 -0.5963 -0.0032 0.1512 -0.0003 -0.0998 -0.0442 0.0657 -0.0659 -0.0085 0.1512 0.0101 0.0578 -0.1342 -0.4883 0.2447 -0.0133 -0.1579 0.0080 -0.5862 0.1288 -0.0119 0.5149 -0.0085 0.1787 0.0005 -0.6396 0.2002 0.2789 -0.2331 0.0100 -0.0863 -0.0013 0.6227 -0.1868 0.4241 -0.1210 -0.0135 -0.3997 0.0109 -0.8742 0.0400 0.0659 0.0840 -0.0020 0.2172 0.0003 0.7510 -0.0484 -0.9635 -0.1381 -0.0032 0.1489 -0.0058 0.3163 -0.4007 0.1002 0.1719 0.0079 -0.2452 0.0080 -0.3245 0.1167 -0.2289 -0.4114 0.0230 0.1713 0.0017 0.3104 -0.5187 0.8294 0.1486 -0.0013 -0.0893 -0.0067 0.3683 0.6695 0.1631 0.0904 -0.1030 0.1703 0.0084 -0.3876 0.0021 0.2723 0.4069 0.0183 0.1845 0.0011 0.2913 0.3294 0.6457 0.2860 -0.0172 -0.2386 -0.0125 1.0290 0.6050 0.5799 0.1540 -0.0216 0.0417 0.0023 -0.1118 -0.7267 -0.5488 -0.5540 -0.0190 -0.0543 0.0027 -0.3157 -0.2189 -0.6650 0.8676 -0.0803 0.5026 0.0076 -0.9977 0.0084 0.7826 0.1590 -0.0231 0.3306 0.0260 0.3920 -0.1228 0.1297 0.2052 -0.1301 0.0762 0.1254 0.2983 -0.0865 0.0098 -0.9661 -0.0071 -0.1524 0.0029 >> size(net.LW{2,1}) %Capa 2 ans = 17 25 >> net.LW{2,1} ans = Columns 1 through 12 0.5386 0.4638 0.5650 -0.2281 -0.1210 0.5009 -0.9644 -0.2718 0.6635 1.2305 1.0352 -0.9062 0.1703 -0.0633 0.2883 0.6359 -0.0599 0.0172 -0.5962 -0.0214 0.2636 0.2214 -0.1326 -0.2594 0.4007 0.0418 -0.4309 0.0185 -0.3066 -0.0860 0.2532 -0.3476 0.6512 -0.2455 0.7465 -0.2297 0.2970 0.8620 0.7167 0.6797 -0.0907 -0.9354 -0.3857 -0.4387 0.3110 0.0774 -0.1360 0.3875 -0.7397 0.6012 0.0414 -0.1515 0.1103 -0.5930 -0.1472 -0.3196 -0.0187 -0.5356 0.5172 -0.2367 0.3767 0.7186 0.3162 1.0988 -0.0687 -0.3401 0.5258 -0.0532 -0.4789 -0.1185 -0.1493 -0.3873 -0.4050 0.7060 -0.2154 0.6577 0.3150 -0.7911 0.3329 0.2614 -0.4749 0.3344 -0.1308 0.1950 -0.1386 -0.6095 -0.0489 -0.0620 0.1047 0.2324 -0.5266 0.8548 -1.0371 0.2880 -0.4036 -0.1824 0.1096 0.0464 0.9812 -0.3216 0.0980 -0.1650 0.0883 -0.8862 -0.6011 -0.2007 -0.6161 -0.2024 -0.3740 -0.2952 -0.4991 -0.6782 -0.0678 0.3979 0.4938 -0.1015 -0.6843 -0.0128 -0.4449 -0.5928 -0.2583 -0.7878 0.1432 0.0780 -0.5616 -0.3752 -0.8152 -0.9133 0.5019 0.2117 0.1545 -0.5626 -0.6850 -1.0365 -0.3393 -0.5689 -0.6992 -0.0890 0.2734 0.5629 0.6757 -0.1848 0.2200 -0.0951 -0.6728 0.4510 0.1527 -0.4304 0.6092 -0.0698 0.7560 0.3313 -0.4146 -0.3637 0.2593 0.3613 -0.2849 -0.9599 0.1349 0.7710 0.5472 0.3965 0.4858 -0.1282 -0.4408 -0.6471 -0.6181 0.7805 -0.2004 -0.7377 -0.1549 0.2970 -0.2448 -0.1723 0.4395 0.4851 0.7429 -0.2742 -0.0182 -1.0239 0.3526 0.2000 -0.5348 0.3161 0.2384 0.1371 0.2929 -1.1978 0.1885 -0.1968 0.6426 -0.5413 0.6704 0.0679 -0.1595 -0.5681 -0.7880 -0.7369 -0.0186 -0.1435 0.2955 0.0128 0.3992 -1.0382 Columns 13 through 24 0.0526 0.0171 0.2194 0.5967 0.3855 -0.4821 -0.2195 -1.0580 0.3801 0.1373 -0.1076 -0.5543 -0.5455 -0.1053 -0.0693 0.5693 -0.2492 0.5595 -0.1564 0.0382 0.0014 0.4929 0.5840 -0.1189 0.4580 0.3862 0.1511 0.5953 0.1437 -0.0609 -0.8492 0.3183 0.2132 0.0060 0.4392 -0.1063 -0.6430 0.8258 0.6083 -0.5925 0.0292 0.3343 0.5084 0.6023 -0.3057 0.1729 -0.0532 0.8118 -0.5864 -0.0689 -0.3331 -0.2307 0.3161 -0.5292 -0.3366 0.2004 -0.4556 0.3833 -0.5991 0.1445 0.4969 0.0376 -0.0171 0.1900 -0.0465 0.0965 0.6234 -0.6987 0.6197 -0.1916 0.6651 0.3830 0.6377 -0.5929 -0.0925 -0.1973 -0.0463 -0.0445 -0.4012 1.0979 -0.2521 0.0998 -0.9916 0.7715 -0.2980 -0.5176 -0.2730 -0.3487 0.0519 -0.7659 -1.0279 0.5662 0.6148 0.2387 -0.3885 -0.0230 -0.3112 0.6031 -0.3177 0.5602 0.6618 -0.9273 -0.2991 -0.4395 0.6036 -0.8316 -0.0513 -0.7013 -0.4398 0.3847 0.0022 0.2020 0.0690 0.8003 0.3249 -0.0068 -0.0594 0.1729 0.3797 0.8499 -1.0644 0.8943 -0.2961 0.0905 -0.7571 -0.0772 1.0081 0.9841 -0.6576 0.1708 -0.3599 0.0955 -0.1534 0.8560 0.2805 0.2924 0.4792 -0.3456 -0.5468 0.2001 -0.2838 0.1371 0.2001 -0.7425 0.3917 -0.2568 -0.1736 -0.9404 0.0357 0.1319 -0.0306 -0.1633 -0.2724 -0.1387 0.7468 0.6310 0.4125 0.8609 0.0675 -0.1348 0.1588 -0.3945 0.4621 -0.0235 -0.6094 0.6803 0.0598 0.5908 -0.3589 0.0171 0.6078 0.1921 0.8105 -0.2001 -0.3847 0.1963 0.4159 0.6866 0.4174 -0.2690 0.2387 -0.0456 0.5981 -0.3224 -0.6698 -0.0793 -0.2999 -0.1631 0.4001 0.3847 0.2333 -0.3368 -0.1320 0.2510 -0.2160 0.6073 0.7953 0.2398 -0.8856 -0.4612 -0.0612 -0.1418 0.4536 0.0506 Column 25 0.2160 -0.3776 -0.0870 0.0699 0.5661 -0.4884 0.1880 0.3515 -0.0654 0.0241 0.3567 0.4592 0.4611 -0.1901 -0.2291 -0.2236 0.3208 >> size(net.LW{3,2}) % Capa 3 ans = 8 17 >> net.LW{3,2} ans = Columns 1 through 12 1.0739 0.1831 -0.4747 -0.6744 0.1714 -0.4431 -0.3326 0.4103 -0.2484 0.2264 -0.0546 0.0461 0.3529 -0.3604 0.2458 -0.8389 0.4373 -0.0858 0.3960 0.2750 0.3791 -0.2176 -0.9138 0.2126 -0.5562 -0.3539 0.3987 0.0060 0.4534 -0.5643 1.0802 0.3291 0.2547 -0.1013 -0.0498 -0.5186 0.4796 -0.3389 -0.1008 -0.2679 0.6543 1.3453 1.0822 -0.0389 -0.6277 0.4363 0.4825 -0.4749 0.2961 -0.0313 0.0427 -0.5860 0.6939 -0.4541 0.0312 -0.5677 -0.0411 -0.1947 0.3026 0.4362 -0.2573 0.3326 0.3457 -0.1188 -0.0215 -0.1995 -0.3946 0.6032 -0.1580 -0.2362 0.3980 -1.2462 -1.1948 0.1987 -0.7847 -0.7945 -0.0334 0.2235 0.5785 -0.0544 -1.1086 -0.1156 -0.0868 0.1483 0.5408 -0.2948 -0.6942 -0.4675 0.0901 0.1286 0.5293 0.9621 -0.0583 0.2743 -0.0534 -1.0846 Columns 13 through 17 0.0113 -0.5779 -0.5110 0.3011 0.3691 -0.0158 -0.7715 0.9018 1.0854 -0.8600 -0.2549 -0.9865 -0.3218 0.0439 -0.4402 -0.5201 -0.9777 0.0257 0.1104 -0.1938 -0.2620 0.5144 -0.3797 -0.4264 -0.5791 0.8783 0.1967 0.0736 -1.4337 1.0648 -0.4987 -0.2765 -1.3095 -0.4744 0.3549 -0.4780 0.5428 0.3121 0.1900 0.2305 >> size(net.LW{4,3}) % Capa 4 ans = 1 8 >> net.LW{4,3} ans = 1.4415 0.4655 1.2421 1.5083 0.7452 1.4087 -1.0477 -0.8854 % Se aplica otro método de entrenamiento, para comparar % Se aplicará el entrenamiento basado en gradiente descendente, con factor de aprendizaje variable >> net=newff(interv, num_capas, funcact, 'traingdm', 'learngdm', 'mse'); % Se verifican los parámetros de entrenamiento que tiene definida la red: >> net.trainParam ans = epochs: 100 % Número de épocas goal: 0 % Objetivo de la función de validación lr: 0.0100 % factor de aprendizaje max_fail: 5 mc: 0.9000 % Intervalo del momento min_grad: 1.0000e-010 show: 25 time: Inf % Se alteran los parámetros que se consideren (ver 'traingdm') >>net.trainParam.epochs = 300; % Se entrena, se evalúa la red y se compara la salida real y estimada y los parámetros de la red de % forma similar al entrenamiento utilizando Levenberg-Marquard Entrenamiento utilizando Levenberg-Marquard | Entrenamiento utilizando gradiente descendente con momento |
|