Red neuronal construccion
Modelo para permitir predecir la contaminación ambiental
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)';
omar sanchez
%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ánargumentos 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 deentrenamiento 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...
Regístrate para leer el documento completo.