Нейронная сеть Matlab: переключение с прямой связи на временную задержку приводит к постоянному выводу
У меня есть код, который использует нейронные сети.
Когда я использую feedforwardnet без памяти, вот так:
feedforwardnet(nHidden);
все работает хорошо, у меня есть хорошее приближение функции, которую я хочу.
Но если я переключусь на timedelaynet так:
timedelaynet(1:1, nHidden);
выход нейронной сети т.е.
a1 = mainNet(inputsD');
многократные константы; в зеленой цели (приблизительные данные) и в красной вывод:
Что я делаю неправильно?
Вот другие строки кода инициализации NN:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nHidden = 3;
if (TDN)
mainNet = timedelaynet(1:1, nHidden);
else
mainNet = feedforwardnet(nHidden);
end
% Choose data division type:
% 'dividerand' : Random division.
% 'divideblock' : Block division.
% 'divideint' : Interleaved division.
mainNet.divideFcn = 'dividerand';
% Setup division of data for training:
mainNet.divideParam.trainRatio = 70/100;
mainNet.divideParam.valRatio = 15/100;
mainNet.divideParam.testRatio = 15/100;
% Choose training algorithm:
% 'trainlm' : Levenberg-Marquardt.
% 'trainrp' : Good for pattern recognition, bad for regression.
% 'trainscg' : Conjugate Gradient, good for larger networks.
% 'traingdx' : Variable learning rate.
% 'trainbr' : Bayesian Regularization.
mainNet.trainFcn = 'trainlm';
mainNet.layers{1:1}.transferFcn = 'tansig';
mainNet.trainParam.min_grad = 1e-100;
mainNet.trainParam.goal = 1e-10;
mainNet.trainParam.epochs = 300000;
mainNet.trainParam.max_fail = 100000000;
mainNet.trainParam.mu_inc = 4;
mainNet.trainParam.mu_max = 1e200;
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%