I have three questions regarding the difference between a closed-loop and an open-loop narxnet, and it's behavior. First, a little about the problem I'm trying to solve. I have an 2xN dimensional matrix of observation (X), from which I'm trying to predict an output Y, 1xN. Now, a narxnet takes as input both X and Y. The Matlab documentation says that an open-loop narxnet finds a function 'f' where y(t) = f( y(t-1), y(t-2), x(t-1), x(t-2) ), for a delay of 2. However, the results that I get are much more accurate than I expect them to be. This suggests that the narxnet uses the actual y(t) as input as well. When I convert the open-loop to a closed-loop, and retrain it, I get much more reasonable results, not good, but reasonable. 1.a) What is the actual input to an open-loop narxnet, and the closed-loop. When trying to predict y(t), are the inputs [ y(t), y(t-1), y(t-2), x(t-1), x(t-2) ] or [ y(t-1), y(t-2), x(t-1), x(t-2) ], for both? 1.b) For my problem I need the inputs to be [ y(t-1), y(t-2), x(t), x(t-1), x(t-2) ], 0 to 2 delays on the X, and 1 to 2 delays on the Y. How can I do that? 2. For comparison, I've trained my open-loop, and tested it, then convert the open-loop to a closed-loop using netc = closeloop(net); then trained the closed-loop from scratch and tested it. I've read on MATLAB Answers that I should start training the closed-loop with the weights from the open-loop net. How can I used the weights of one net as the initial weights for training another? 3. I understand that the narxnet uses a combination of NNs and difference equations. I problem I run into when using a closed-loop narxnet is that my predictions begin to oscillate and explode exponential. I know that this problem occurs in a difference equation, such as y(t)=a*y(t-1)+b, when 'a' is greater than 1. What, in a closed-loop narxnet could cause this similar issue? I didn't include any code because my questions need high-level understanding and explanations, which I am lacking.
John Michell answered .
2025-11-20
% NARXNET closed-loop vs open-loop % Asked by Yevgeniy Arabadzhi % 8:38 PM Thursday, November 3, 2016 % % I have three questions regarding the difference between % a closed-loop and an open-loop narxnet, and it's behavior. % % First, a little about the problem I'm trying to solve. I % have an 2xN dimensional matrix of observation (X), from % which I'm trying to predict an output Y, 1xN. Now, a % narxnet takes as input both X and Y. The Matlab % documentation says that an open-loop narxnet finds a % function 'f' where y(t) = f( y(t-1), y(t-2), x(t-1), % x(t-2) ), for a delay of 2.
Uppercase for cells Lowercase for doubles and integers X,x for inputs T,t for targets Y,y for outputs i,j for timestep indices
help nndatasets doc nndatsets
ID = 1:2, FD = 1:2, H = 10 % DEFAULTs OL: y(i) = f(x(i-1),x(i-2),t(i-1),t(i-2)); i = 3:N CL: y(i) = f(x(i-1),x(i-2),y(i-1),y(i-2)); i = 3:N ID = 0:2, FD = 0:2, H = 10 OL: y(i) = f(x(i),x(i-1),x(i-2),t(i),t(i-1),t(i-2)); i=3:N CL: y(i) = f(x(i),x(i-1),x(i-2),y(i-1),y(i-2)); i = 3:N