Red neuronal dedicada Para crear una red neuronal dedicada se debe definir: 1.- Las entradas y salidas del sistema. 2.- Una capa por cada grupo o fuente de variables de entrada. 3.- La capa(s) de salida(s), considerando que al menos una debe coincidir con la salida conocida. 4.- La relación entre capas, considerando retrasos entre las capas intermedias. 5.- Funciones de activación, método de validación, mecanismo de entrenamiento, inicialización de Sistema jerárquico | Red neuronal dedicada |
Un programa en Matlab que permite la solución de la red propuesta se muestra a continuación % Define una red a medida o dedicada redjerarquica=network; % Fuentes de entrada (3, 1 por planta) redjerarquica.numInputs=3; % Número de capas de la red redjerarquica.numLayers=4; % Presencia de ganancia en cada capa (solo en capa 1) redjerarquica.biasConnect=[1; 0; 0; 0]; % Relación entre fuentes de entrada y capas % Fuerza la definición de IW{3,3}, por lo que % habrá que definir IW{3,1}, IW{3,2} redjerarquica.inputConnect=[1 0 0; 0 1 0; 0 0 1; 0 0 0]; % Relación entre capas (4x4) %La fila representa la capa que se define %Las columnas las salidas de capas que constituyen entradas redjerarquica.layerConnect=[0 0 0 0; 1 0 0 0; 1 1 0 0; 0 0 1 1]; % Define capas que serán salidas (obligada salida conocida (target)) redjerarquica.outputConnect=[0 0 0 1]; % Se define en cada fuente de entrada su número de variables y su intervalo (minmax) % Fuentes de entrada 1 redjerarquica.inputs{1}.range=[0 1; 0 1; 0 1; 0 1; 0 1; 0 1]; % Fuentes de entrada 2 redjerarquica.inputs{2}.range=[-1 1; -1 1; -1 1; -1 1; -1 1]; % Fuente de entrada 3 redjerarquica.inputs{3}.range=[-1 1; -1 1; -1 1; -1 1]; % Se define el número de neuronas, función de activación y parámetros y ganancia en cada capa % Verificar con: >>redjerarquica.layers{capa} y >>redjerarquica.outputs{4} % Capa 1 redjerarquica.layers{1}.size=4; redjerarquica.layers{1}.transferFcn='tansig'; redjerarquica.layers{1}.initFcn='initnw'; % Capa 2 redjerarquica.layers{2}.size=3; redjerarquica.layers{2}.transferFcn='logsig'; redjerarquica.layers{2}.initFcn='initnw'; % Capa 3 redjerarquica.layers{3}.size=2; redjerarquica.layers{3}.transferFcn='tansig'; redjerarquica.layers{3}.initFcn='initnw'; % Capa 4 redjerarquica.layers{4}.size=2; redjerarquica.layers{4}.transferFcn='purelin'; redjerarquica.layers{4}.initFcn='initnw'; %Definición de valores retrasados en las capas %(k-1) redjerarquica.layerWeights{2,1}.delays = 1; redjerarquica.layerWeights{3,1}.delays = 1; redjerarquica.layerWeights{3,2}.delays = 1; %(k-1),(k-2) redjerarquica.layerWeights{4,4}.delays = [1 2]; % Otras propiedades % Define condiciones iniciales a 'initnw' previamente definidos % Después de ejecutado este comando se debe comprobar si el % tamaño de las matrices de pesos de entrada >>redjerarquica.IW{i,j) % y las matrices de pesos de capas intermedias >>redjerarquica.LW{i,j) % son las que se desean redjerarquica.initFcn='initlay'; % Método de entrenamiento y criterio de validación redjerarquica.performFcn='mse'; redjerarquica.trainFcn='trainscg'; % Inicializa la red redjerarquica=init(redjerarquica); % Se definen vectores de entrada-salida P1=rand(6,100); P2=rand(5,100); P3=rand(4,100); P={P1; P2; P3}; T={rand(2,100)}; % Simula la red Y=sim(redjerarquica, P); plot(Y{1,1}'); % Se entrena la red redjerarquica=train(redjerarquica, P, T); % Se simula la red (con mismos datos) sal=sim(redjerarquica, P); % Se visualiza figure; plot(sal{1,1}'); hold on; plot(Y{1,1}','.-'); |
La red creada y entrenada es de la forma que se muestra a continuación 
>>view(redjerarquica) |
Referencias: Mathworks, Inc.:"Neural Networks Toolbox". 2008. |