Main Content

adapt

Adaptar una red neuronal a los datos mientras se simula

Sintaxis

[net,Y,E,Pf,Af,tr] = adapt(net,P,T,Pi,Ai)

Para obtener ayuda

Escriba help network/adapt.

Descripción

Esta función calcula las salidas y los errores de la red después de cada presentación de una entrada.

[net,Y,E,Pf,Af,tr] = adapt(net,P,T,Pi,Ai) toma:

net

Network

P

Entradas de la red

T

Objetivos de la red (valor predeterminado = ceros)

Pi

Condiciones de retardo de entrada iniciales (valor predeterminado = ceros)

Ai

Condiciones de retardo de capa iniciales (valor predeterminado = ceros)

y devuelve lo siguiente después de aplicar la función de adaptación net.adaptFcn con los parámetros de adaptación net.adaptParam:

net

Red actualizada

Y

Salidas de la red

E

Errores de red

Pf

Condiciones de retardo de entrada finales

Af

Condiciones de retardo de capa finales

tr

Registro de entrenamiento (epoch y perf)

Tenga en cuenta que T es opcional y que solo se necesita para las redes que requieren objetivos. Pi y Pf son también opcionales y solo hay que usarlos para redes que tienen retardos de entrada o de capa.

Los argumentos de señal de adapt pueden tener dos formatos: matriz o arreglo de celdas.

El formato de arreglo de celdas es el más fácil de describir. Es más conveniente para redes con múltiples entradas y salidas, lo que permite presentar secuencias de entradas como las siguientes,

P

Arreglo de celdas de Ni por TS

Cada elemento P{i,ts} es una matriz de Ri por Q.

T

Arreglo de celdas de Nt por TS

Cada elemento T{i,ts} es una matriz de Vi por Q.

Pi

Arreglo de celdas de Ni por ID

Cada elemento Pi{i,k} es una matriz de Ri por Q.

Ai

Arreglo de celdas de Nl por LD

Cada elemento Ai{i,k} es una matriz de Si por Q.

Y

Arreglo de celdas de No por TS

Cada elemento Y{i,ts} es una matriz de Ui por Q.

E

Arreglo de celdas de No por TS

Cada elemento E{i,ts} es una matriz de Ui por Q.

Pf

Arreglo de celdas de Ni por ID

Cada elemento Pf{i,k} es una matriz de Ri por Q.

Af

Arreglo de celdas de Nl por LD

Cada elemento Af{i,k} es una matriz de Si por Q.

donde

Ni =net.numInputs
Nl =net.numLayers
No =net.numOutputs
ID =net.numInputDelays
LD =net.numLayerDelays
TS =

Número de unidades de tiempo

Q =

Tamaño del lote

Ri =net.inputs{i}.size
Si =net.layers{i}.size
Ui =net.outputs{i}.size

Las columnas de Pi, Pf, Ai y Af se ordenan desde el estado de retardo más antiguo hasta el más reciente:

Pi{i,k} =

Entrada i en tiempo ts = k - ID

Pf{i,k} =

Entrada i en tiempo ts = TS + k - ID

Ai{i,k} =

Salida de capa i en tiempo ts = k - LD

Af{i,k} =

Salida de capa i en tiempo ts = TS + k - LD

El formato de matriz se puede usar si solo hay que simular una unidad de tiempo (TS = 1). Resulta conveniente para redes con una única entrada y una única salida, pero se puede usar con redes que tengan más.

Cada argumento de matriz se encuentra almacenando los elementos del argumento de arreglo de celdas correspondiente en una sola matriz:

P

matriz de (sum of Ri) por Q

T

matriz de (sum of Vi) por Q

Pi

matriz de (sum of Ri) por (ID*Q)

Ai

matriz de (sum of Si) por (LD*Q)

Y

matriz de (sum of Ui) por Q

E

matriz de (sum of Ui) por Q

Pf

matriz de (sum of Ri) por (ID*Q)

Af

matriz de (sum of Si) por (LD*Q)

Ejemplos

Aquí se utilizan dos secuencias de 12 pasos (de los que se sabe que T1 depende de P1) para definir el funcionamiento de un filtro.

p1 = {-1  0 1 0 1 1 -1  0 -1 1 0 1};
t1 = {-1 -1 1 1 1 2  0 -1 -1 0 1 1};

Aquí linearlayer se utiliza para crear una capa con un rango de entrada de [-1 1], una neurona, retardos de entrada de 0 y 1 y una tasa de aprendizaje de 0,1. Luego se simula la capa lineal.

net = linearlayer([0 1],0.1);

Aquí la red se adapta para una pasada por la secuencia.

Se muestra el error cuadrático medio de la red. (Como esta es la primera llamada a adapt, se utiliza el valor predeterminado Pi).

[net,y,e,pf] = adapt(net,p1,t1);
mse(e)

Observe que los errores son bastante grandes. Aquí la red se adapta a otros 12 pasos de tiempo (utilizando los Pf anteriores como nuevas condiciones de retardo iniciales).

p2 = {1 -1 -1 1 1 -1  0 0 0 1 -1 -1};
t2 = {2  0 -2 0 2  0 -1 0 0 1  0 -1};
[net,y,e,pf] = adapt(net,p2,t2,pf);
mse(e)

Aquí la red se adapta para 100 pasadas por toda la secuencia.

p3 = [p1 p2];
t3 = [t1 t2];
for i = 1:100
  [net,y,e] = adapt(net,p3,t3);
end
mse(e)

El error después de 100 pasadas por la secuencia es muy pequeño. La red se ha adaptado a la relación entre las señales de entrada y objetivo.

Algoritmos

adapt llama a la función que indica net.adaptFcn utilizando los valores de parámetros de adaptación que indica net.adaptParam.

Dada una secuencia de entrada con TS pasos, la red se actualiza de la siguiente manera: Los pasos de la secuencia de entradas se presentan a la red de uno en uno. Los valores de peso y sesgo de la red se actualizan después de cada paso, antes de que se presente el siguiente paso de la secuencia. De este modo la red se actualiza TS veces.

Historial de versiones

Introducido antes de R2006a

Consulte también

| | |