Main Content

narxnet

Red neuronal autorregresiva no lineal con entrada externa

Descripción

ejemplo

narxnet(inputDelays,feedbackDelays,hiddenSizes,feedbackMode,trainFcn) toma estos argumentos:

  • Vector fila de retardos de entrada crecientes de valor 0 o positivos, inputDelays

  • Vector fila de retardos de retroalimentación crecientes de valor 0 o positivos, feedbackDelays

  • Vector fila con uno o más tamaños de capas ocultas, hiddenSizes

  • Tipo de retroalimentación, feedbackMode

  • Función de entrenamiento de retropropagación, trainFcn

y devuelve una red neuronal NARX.

Las redes NARX (autorregresivas no lineales con entrada externa) pueden aprender a predecir una serie de tiempo al proporcionárseles valores pasados de la misma serie de tiempo, la entrada de retroalimentación y otra serie de tiempo llamada serie de tiempo externa (o exógena).

Ejemplos

contraer todo

Entrene una red neuronal autorregresiva no lineal con extrada externa (NARX) y prediga con datos nuevos de series de tiempo. La predicción de una secuencia de valores en una serie de tiempo también se conoce como predicción de pasos múltiples. Las redes de lazo cerrado pueden realizar predicciones de pasos múltiples. Cuando falta retroalimentación externa, las redes de lazo cerrado pueden seguir prediciendo mediante retroalimentación interna. En la predicción NARX, los valores futuros de una serie de tiempo se predicen a partir de valores anteriores de esa serie, la entrada de retroalimentación y una serie de tiempo externa.

Cargue los datos de predicción de la serie de tiempo sencilla.

[X,T] = simpleseries_dataset;

Divida los datos en datos de entrenamiento XTrain y TTrain, y en datos para la predicción XPredict. Utilice XPredict para realizar la predicción después de crear la red de lazo cerrado.

XTrain = X(1:80);
TTrain = T(1:80);
XPredict = X(81:100);

Cree una red NARX. Defina los retardos de entrada, los retardos de retroalimentación y el tamaño de las capas ocultas.

net = narxnet(1:2,1:2,10);

Prepare los datos de series de tiempo utilizando preparets. Esta función desplaza automáticamente las series de tiempo de entrada y objetivo en el número de pasos necesarios para llenar los estados de entrada y retardo de capa iniciales.

[Xs,Xi,Ai,Ts] = preparets(net,XTrain,{},TTrain);

La práctica recomendada es crear completamente la red en un lazo abierto y, después, transformar la red en un lazo cerrado para la predicción de pasos múltiples. Después, la red de lazo cerrado puede predecir tantos valores futuros como desee. Si simula la red neuronal solo en el modo de lazo cerrado, la red puede realizar tantas predicciones como unidades de tiempo hay en la serie de entrada.

Entrene la red NARX. La función train entrena la red en un lazo abierto (arquitectura paralela de serie), incluidos los pasos de validación y prueba.

net = train(net,Xs,Ts,Xi,Ai);

{"String":"Figure Neural Network Training (24-Jul-2022 21:28:22) contains an object of type uigridlayout.","Tex":[],"LaTex":[]}

Muestre la red entrenada.

view(net)

Calcule la salida de red Y, los estados de entrada finales Xf y los estados de capa finales Af de la red de lazo abierto a partir de la entrada de red Xs, los estados de entrada iniciales Xi y los estados de capa iniciales Ai.

[Y,Xf,Af] = net(Xs,Xi,Ai);

Calcule el rendimiento de la red.

perf = perform(net,Ts,Y)
perf = 0.0153

Para predecir la salida para las 20 unidades de tiempo siguientes, simule primero la red en el modo de lazo cerrado. Los estados de entrada Xf y los estados de capa Af finales de la red de lazo abierto se convierten en los estados de entrada Xic y los estados de capa Aic iniciales de la red de lazo cerrado netc.

[netc,Xic,Aic] = closeloop(net,Xf,Af);

Muestre la red de lazo cerrado.

view(netc)

Ejecute la predicción para las siguientes 20 unidades de tiempo en el modo de lazo cerrado.

Yc = netc(XPredict,Xic,Aic)
Yc=1×20 cell array
  Columns 1 through 5

    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}

  Columns 6 through 10

    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}

  Columns 11 through 15

    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}

  Columns 16 through 20

    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

Argumentos de entrada

contraer todo

Retardos de entrada cero o positivos, especificados como un vector fila creciente.

Retardos de retroalimentación cero o positivos, especificados como un vector fila creciente.

Tamaños de las capas ocultas, especificados como un vector fila de uno o más elementos.

Tipo de retroalimentación, especificado como 'open', 'closed' o 'none'.

Nombre de la función de entrenamiento, especificado como una de las siguientes opciones.

Función de entrenamientoAlgoritmo
'trainlm'

Levenberg-Marquardt

'trainbr'

Regularización bayesiana

'trainbfg'

BFGS quasi-Newton

'trainrp'

Retropropagación resiliente

'trainscg'

Gradiente conjugado escalado

'traincgb'

Gradiente conjugado con reinicios de Powell/Beale

'traincgf'

Gradiente conjugado de Fletcher-Powell

'traincgp'

Gradiente conjugado de Polak-Ribiére

'trainoss'

Secante de un paso

'traingdx'

Gradiente descendente de tasa de aprendizaje variable

'traingdm'

Gradiente descendente con momento

'traingd'

Gradiente descendente

Ejemplo: Por ejemplo, puede establecer el algoritmo de gradiente descendente de tasa de aprendizaje variable como el algoritmo de entrenamiento, de esta manera: 'traingdx'

Para obtener más información sobre las funciones de entrenamiento, consulte Train and Apply Multilayer Shallow Neural Networks y Choose a Multilayer Neural Network Training Function.

Tipos de datos: char

Historial de versiones

Introducido en R2010b