Привет. Я пытаюсь понять концепции, лежащие в основе поиска стратегий обучения для 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
Ты
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ