Привет. Я пытаюсь понять концепции, лежащие в основе поиска стратегий обучения для NARNET, которые могут делать как можно более хорошие прогнозы. То, что я хочу создать, — это сценарий, который я могу передать любому временному ряду, независимо от того, как он выглядит, а затем найти для него лучший дизайн обучения. Это код, который у меня есть на данный момент:

T = simplenar_dataset; %example time series
N = length(T); % length of time series
MaxHidden=10; %number of hidden nodes that will be tested
%Attempt to determine Significant feedback delays with Autocorrelation
autocorrT = nncorr(zscore(cell2mat(T),1),zscore(cell2mat(T),1),N-1);
[ sigacorr inda ] = find(abs(autocorrT(N+1:end) > 0.21))
for hidden=1:MaxHidden
    parfor feedbackdelays=1:length(inda)
FD=inda(feedbackdelays);
net = narnet( 1:FD, hidden );
[ Xs, Xsi, Asi, Ts ] = preparets( net, {}, {}, T );
ts = cell2mat( Ts );
net.divideFcn ='divideblock'; %Divides the data using divide block
net.trainParam.min_grad=1e-15;
net.trainParam.epochs=10000;
rng( 'default' )
[ net tr Ys Es Af Xf ] = train( net, Xs, Ts, Xsi, Asi);
NMSEs = mse( Es ) /var( ts,1 )% Mean squared error performance function
performanceDivideBlockNMSEs(hidden,feedbackdelays)=NMSEs;
      end
  end

Прежде всего: правильный ли это способ реализации статистически значимых задержек обратной связи?

И если строку «net.divideFcn = 'divideblock'» оставить без комментариев, как в коде, теперь я получаю сообщение об ошибке в цикле: «Попытка доступа к valInd (0); index должен быть положительным целым числом или логическим». что я не уверен, что вызывает.

И я слышал, как люди говорят, что вы должны «попробовать разные начальные веса», как мне это сделать, нужно ли изменить команду rng?

Идея здесь заключается в том, что я нахожу адрес наиболее эффективной сети в матрице performanceDivideBlockNMSEs, чтобы я мог повторно обучить закрытую сеть с этими настройками и делать прогнозы, но пока я просто сосредотачиваюсь на открытой сети.

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

  • К сожалению, форма NNCORR, которую вы используете, содержит ОШИБКИ!
PROOF:
   a. plot(-(N-1):N-1, autocorrT)
   b. minmax(autocorrT) = [ -2.3082  1.0134 ]
   c. sigacorr  = ones(1,41)

2. ЛУЧШЕЕ РЕШЕНИЕ: используйте метод Фурье

za = zscore(a,1); zb = zscore(b,1); % a,b are double (i.e., not cells)
   A  = fft(za);      B = fft(zb);
   CSDab         = A.*conj(B);            % Cross Spectral Density
   crosscorrFab = ifft(CSDab);            % F => Fourier method
   crosscorrFba = conj(crosscorrFab);

3. Возможно, вы захотите сравнить это с параметрами документации NNCORR.

help nncorr
   doc nncorr
% The optional FLAG determines how nncorr normalizes correlations.
%     'biased'     - scales the raw cross-correlation by 1/N.
%     'unbiased' - scales the raw correlation by 1/(N-abs(k)), where k 
%                       is the index into the result.
%     'coeff'       - normalizes the sequence so that the correlations at 
%                       zero lag are identically 1.0.
%     'none'      - no scaling (this is the default).
 crosscorrBab = nncorr( za, zb, N-1, 'biased' );   % B ==> "b"iased
 crosscorrNab = nncorr( za, zb, N-1, 'none' )/N;   % N ==> "n"one
 crosscorrUab  = nncorr( za, zb, N-1, 'unbiased' ); % U ==> "u"nbiased
 crosscorrtMab = nncorr( za, zb, N-1 );             % M ==> "m"issing flag
 % crosscorrCab = nncorr( za, zb, N-1, 'coeff' ); ERROR: BUG

Ты

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ