深圳市龍華區(qū)房價(jià)萬能優(yōu)化大師下載
分類預(yù)測 | MATLAB實(shí)現(xiàn)SSA-CNN-BiLSTM-Attention數(shù)據(jù)分類預(yù)測(SE注意力機(jī)制)
目錄
- 分類預(yù)測 | MATLAB實(shí)現(xiàn)SSA-CNN-BiLSTM-Attention數(shù)據(jù)分類預(yù)測(SE注意力機(jī)制)
- 分類效果
- 基本描述
- 模型描述
- 程序設(shè)計(jì)
- 參考資料
分類效果
基本描述
1.MATLAB實(shí)現(xiàn)SSA-CNN-BiLSTM-Attention數(shù)據(jù)分類預(yù)測(SE注意力機(jī)制),運(yùn)行環(huán)境Matlab2021b及以上;
2.基于麻雀優(yōu)化算法(SSA)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)和雙向長短期記憶網(wǎng)絡(luò)(BiLSTM)、SE注意力機(jī)制的數(shù)據(jù)分類預(yù)測程序;
3.多特征輸入單輸出的二分類及多分類模型。程序內(nèi)注釋詳細(xì),直接替換數(shù)據(jù)就可以用;SSA優(yōu)化算法優(yōu)化學(xué)習(xí)率、正則化系數(shù)、神經(jīng)元個(gè)數(shù),這3個(gè)關(guān)鍵參數(shù)。
程序語言為matlab,程序可出分類效果圖,混淆矩陣圖;
4.data為數(shù)據(jù)集,輸入12個(gè)特征,分四類;main為主程序,其余為函數(shù)文件,無需運(yùn)行。
5.適用領(lǐng)域:適用于各種數(shù)據(jù)分類場景,如滾動軸承故障、變壓器油氣故障、電力系統(tǒng)輸電線路故障區(qū)域、絕緣子、配網(wǎng)、電能質(zhì)量擾動,等領(lǐng)域的識別、診斷和分類。
使用便捷:直接使用EXCEL表格導(dǎo)入數(shù)據(jù),無需大幅修改程序。內(nèi)部有詳細(xì)注釋,易于理解。
模型描述
注意力機(jī)制模塊:
SEBlock(Squeeze-and-Excitation Block)是一種聚焦于通道維度而提出一種新的結(jié)構(gòu)單元,為模型添加了通道注意力機(jī)制,該機(jī)制通過添加各個(gè)特征通道的重要程度的權(quán)重,針對不同的任務(wù)增強(qiáng)或者抑制對應(yīng)的通道,以此來提取有用的特征。該模塊的內(nèi)部操作流程如圖,總體分為三步:首先是Squeeze 壓縮操作,對空間維度的特征進(jìn)行壓縮,保持特征通道數(shù)量不變。融合全局信息即全局池化,并將每個(gè)二維特征通道轉(zhuǎn)換為實(shí)數(shù)。實(shí)數(shù)計(jì)算公式如公式所示。該實(shí)數(shù)由k個(gè)通道得到的特征之和除以空間維度的值而得,空間維數(shù)為H*W。其次是Excitation激勵(lì)操作,它由兩層全連接層和Sigmoid函數(shù)組成。如公式所示,s為激勵(lì)操作的輸出,σ為激活函數(shù)sigmoid,W2和W1分別是兩個(gè)完全連接層的相應(yīng)參數(shù),δ是激活函數(shù)ReLU,對特征先降維再升維。最后是Reweight操作,對之前的輸入特征進(jìn)行逐通道加權(quán),完成原始特征在各通道上的重新分配。
程序設(shè)計(jì)
- 完整程序和數(shù)據(jù)獲取方式:私信博主回復(fù)MATLAB實(shí)現(xiàn)SSA-CNN-BiLSTM-Attention數(shù)據(jù)分類預(yù)測(SE注意力機(jī)制)。
%% 優(yōu)化算法參數(shù)設(shè)置
SearchAgents_no = 8; % 數(shù)量
Max_iteration = 5; % 最大迭代次數(shù)
dim = 3; % 優(yōu)化參數(shù)個(gè)數(shù)
lb = [1e-3,10 1e-4]; % 參數(shù)取值下界(學(xué)習(xí)率,隱藏層節(jié)點(diǎn),正則化系數(shù))
ub = [1e-2, 30,1e-1]; % 參數(shù)取值上界(學(xué)習(xí)率,隱藏層節(jié)點(diǎn),正則化系數(shù))fitness = @(x)fical(x,num_dim,num_class,p_train,t_train,T_train);[Best_score,Best_pos,curve]=SSA(SearchAgents_no,Max_iteration,lb ,ub,dim,fitness)
Best_pos(1, 2) = round(Best_pos(1, 2));
best_hd = Best_pos(1, 2); % 最佳隱藏層節(jié)點(diǎn)數(shù)
best_lr= Best_pos(1, 1);% 最佳初始學(xué)習(xí)率
best_l2 = Best_pos(1, 3);% 最佳L2正則化系數(shù)%% 建立模型
lgraph = layerGraph(); % 建立空白網(wǎng)絡(luò)結(jié)構(gòu)
tempLayers = [sequenceInputLayer([num_dim, 1, 1], "Name", "sequence") % 建立輸入層,輸入數(shù)據(jù)結(jié)構(gòu)為[num_dim, 1, 1]sequenceFoldingLayer("Name", "seqfold")]; % 建立序列折疊層
lgraph = addLayers(lgraph, tempLayers); % 將上述網(wǎng)絡(luò)結(jié)構(gòu)加入空白結(jié)構(gòu)中
tempLayers = [convolution2dLayer([3, 1], 16, "Name", "conv_1", "Padding", "same") % 建立卷積層,卷積核大小[3, 1],16個(gè)特征圖reluLayer("Name", "relu_1") % Relu 激活層lgraph = addLayers(lgraph, tempLayers); % 將上述網(wǎng)絡(luò)結(jié)構(gòu)加入空白結(jié)構(gòu)中tempLayers = [sequenceUnfoldingLayer("Name", "sequnfold") % 建立序列反折疊層flattenLayer("Name", "flatten") % 網(wǎng)絡(luò)鋪平層bilstmLayer(best_hd, "Name", "bilstm", "OutputMode","last") % BiLSTM層fullyConnectedLayer(num_class, "Name", "fc") % 全連接層softmaxLayer("Name", "softmax") % softmax激活層classificationLayer("Name", "classification")]; % 分類層
lgraph = addLayers(lgraph, tempLayers); % 將上述網(wǎng)絡(luò)結(jié)構(gòu)加入空白結(jié)構(gòu)中
lgraph = connectLayers(lgraph, "seqfold/out", "conv_1"); % 折疊層輸出 連接 卷積層輸入
lgraph = connectLayers(lgraph, "seqfold/miniBatchSize", "sequnfold/miniBatchSize"); %% 參數(shù)設(shè)置
options = trainingOptions('adam', ... % Adam 梯度下降算法'MaxEpochs', 500,... % 最大訓(xùn)練次數(shù) 'InitialLearnRate', best_lr,... % 初始學(xué)習(xí)率為0.001'L2Regularization', best_l2,... % L2正則化參數(shù)'LearnRateSchedule', 'piecewise',... % 學(xué)習(xí)率下降'LearnRateDropFactor', 0.1,... % 學(xué)習(xí)率下降因子 0.1'LearnRateDropPeriod', 400,... % 經(jīng)過訓(xùn)練后 學(xué)習(xí)率為 0.001*0.1'Shuffle', 'every-epoch',... % 每次訓(xùn)練打亂數(shù)據(jù)集'ValidationPatience', Inf,... % 關(guān)閉驗(yàn)證'Plots', 'training-progress',... % 畫出曲線'Verbose', false);%% 訓(xùn)練
net = trainNetwork(p_train, t_train, lgraph, options);
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128690229