類似非小號的網(wǎng)站怎么做軟文推廣一般發(fā)布在哪些平臺
SCI一區(qū)級 | Matlab實現(xiàn)NGO-CNN-LSTM-Mutilhead-Attention多變量時間序列預測
目錄
- SCI一區(qū)級 | Matlab實現(xiàn)NGO-CNN-LSTM-Mutilhead-Attention多變量時間序列預測
- 預測效果
- 基本介紹
- 程序設計
- 參考資料
預測效果
基本介紹
1.Matlab實現(xiàn)NGO-CNN-LSTM-Mutilhead-Attention北方蒼鷹算法優(yōu)化卷積長短期記憶神經網(wǎng)絡融合多頭注意力機制多變量時間序列預測,要求Matlab2023版以上;
2.輸入多個特征,輸出單個變量,考慮歷史特征的影響,多變量時間序列預測;
3.data為數(shù)據(jù)集,main.m為主程序,運行即可,所有文件放在一個文件夾;
4.命令窗口輸出R2、MSE、MAE、MAPE和RMSE多指標評價;
5.優(yōu)化學習率,神經元個數(shù),注意力機制的鍵值, 卷積核個數(shù)。
程序設計
- 完整源碼和數(shù)據(jù)獲取方式私信博主回復Matlab實現(xiàn)NGO-CNN-LSTM-Mutilhead-Attention多變量時間序列預測。
layers0 = [ ...% 輸入特征sequenceInputLayer([numFeatures,1,1],'name','input') %輸入層設置sequenceFoldingLayer('name','fold') %使用序列折疊層對圖像序列的時間步長進行獨立的卷積運算。% CNN特征提取convolution2dLayer([3,1],16,'Stride',[1,1],'name','conv1') %添加卷積層,64,1表示過濾器大小,10過濾器個數(shù),Stride是垂直和水平過濾的步長batchNormalizationLayer('name','batchnorm1') % BN層,用于加速訓練過程,防止梯度消失或梯度爆炸reluLayer('name','relu1') % ReLU激活層,用于保持輸出的非線性性及修正梯度的問題% 池化層maxPooling2dLayer([2,1],'Stride',2,'Padding','same','name','maxpool') % 第一層池化層,包括3x3大小的池化窗口,步長為1,same填充方式% 展開層sequenceUnfoldingLayer('name','unfold') %獨立的卷積運行結束后,要將序列恢復%平滑層flattenLayer('name','flatten')lstmLayer(25,'Outputmode','last','name','hidden1') selfAttentionLayer(2,2) %創(chuàng)建2個頭,2個鍵和查詢通道的自注意力層 dropoutLayer(0.1,'name','dropout_1') % Dropout層,以概率為0.2丟棄輸入fullyConnectedLayer(1,'name','fullconnect') % 全連接層設置(影響輸出維度)(cell層出來的輸出層) %regressionLayer('Name','output') ];lgraph0 = layerGraph(layers0);
lgraph0 = connectLayers(lgraph0,'fold/miniBatchSize','unfold/miniBatchSize');
pNum = round( pop * P_percent ); % The population size of the producers b=1; % parameters in Eq. (2.5)l=(a2-1)*rand+1; % parameters in Eq. (2.5)p = rand(); % p in Eq. (2.6)for j=1:size(Positions,2)if p<0.5 if abs(A)>=1rand_leader_index = floor(pop*rand()+1);X_rand = Positions(rand_leader_index, :);D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)Positions(i,j)=X_rand(j)-A*D_X_rand; % Eq. (2.8)elseif abs(A)<1D_Leader=abs(C*Best_pos(j)-Positions(i,j)); % Eq. (2.1)Positions(i,j)=Best_pos(j)-A*D_Leader; % Eq. (2.2)endelseif p>=0.5distance2Leader=abs(Best_pos(j)-Positions(i,j));% Eq. (2.5)Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Best_pos(j);endendendt=t+1;curve(t)=Best_Cost;[t Best_Cost]
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501