Prediction using narx Network

Illustration
Unnikrishnan-pc - 2021-06-15T12:05:47+00:00
Question: Prediction using narx Network

%Neural network to create a Fibinocci series     Please answer the following questions:   1. How can I make one step prediction without closing loop?   2. How can I get the next 5 numbers in the series? please provide the code if possible. I went through all your posts but could not solve it.   3. When I close the narx net, I get the same results as of open loop without training.   4. If I train the close loop, the outputs deviate from the target. How can I reduce this error?

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

Let's address each of your questions regarding prediction using a NARX (Nonlinear Autoregressive with Exogenous Input) network in MATLAB:

1. One-Step Prediction Without Closing Loop:
   To make a one-step prediction without closing the loop, you can use the open-loop network with the `net` object directly:

   % Make one-step prediction
   Y = net(Xs, Xi, Ai);
   

2. Getting the Next 5 Numbers in the Series:
   To get the next 5 numbers in the series, you can simulate the network for multiple steps ahead:

   
   % Close the loop for multiple-step prediction
   netc = closeloop(net);
   [Xs, Xi, Ai, Ts] = preparets(netc, X, {}, T);
   % Initialize the network with initial conditions
   Y = sim(netc, Xs, Xi, Ai);
   % Make 5-step prediction
   for i = 1:5
       [netc, Xi, Ai] = removedelay(netc);
       Y = [Y netc(Y(end), Xi, Ai)];
   end
   

3. Same Results with Closed Loop Without Training:
   When you close the loop without training the closed-loop network, it uses the same weights as the open-loop network. To get different results, retrain the network after closing the loop:

  
   % Close the loop and retrain
   netc = closeloop(net);
   [Xs, Xi, Ai, Ts] = preparets(netc, X, {}, T);
   netc = train(netc, Xs, Ts, Xi, Ai);re
   % Make prediction
   Y = sim(netc, Xs, Xi, Ai);
   

4. Reducing Deviation in Closed-Loop Training:
   To reduce the deviation from the target, consider the following:
   -Increase Training Epochs: Train the network for more epochs to allow it to better learn the patterns.
   - Adjust Network Architecture: Experiment with different hidden layer sizes and delay settings.
   - Preprocess Data: Normalize or standardize your input and target data.
   - Fine-Tune Hyperparameters: Adjust learning rate and other training parameters.

   Example for increasing training epochs:
   
   % Close the loop and retrain with more epochs
   netc = closeloop(net);
   [Xs, Xi, Ai, Ts] = preparets(netc, X, {}, T);
   netc.trainParam.epochs = 200;  % Increase the number of epochs
   netc = train(netc, Xs, Ts, Xi, Ai);
   % Make prediction
   Y = sim(netc, Xs, Xi, Ai);
   

These steps should help you make one-step predictions, predict the next 5 numbers in the series, and improve the accuracy of your closed-loop training. 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!