%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?
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.