Нейронная сеть 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;
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

0 ответов

Другие вопросы по тегам