做平臺網(wǎng)站一般有php還是js脫發(fā)嚴重是什么原因引起的
SSA-CNN-LSTM-MATT多頭注意力機制多特征分類預(yù)測
目錄
- SSA-CNN-LSTM-MATT多頭注意力機制多特征分類預(yù)測
- 分類效果
- 基本介紹
- 程序設(shè)計
- 參考資料
分類效果
基本介紹
1.Matlab實現(xiàn)SSA-CNN-LSTM-MATT麻雀算法優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)-長短期記憶神經(jīng)網(wǎng)絡(luò)融合多頭注意力機制多特征分類預(yù)測,SSA-CNN-LSTM-Multihead-Attention;
多頭自注意力層 (Multihead-Self-Attention):Multihead-Self-Attention多頭注意力機制是一種用于模型關(guān)注輸入序列中不同位置相關(guān)性的機制。它通過計算每個位置與其他位置之間的注意力權(quán)重,進而對輸入序列進行加權(quán)求和。注意力能夠幫助模型在處理序列數(shù)據(jù)時,對不同位置的信息進行適當(dāng)?shù)募訖?quán),從而更好地捕捉序列中的關(guān)鍵信息。
2.數(shù)據(jù)輸入12個特征,輸出4個類別,main.m是主程序,其余為函數(shù)文件,無需運行;
3.優(yōu)化參數(shù)為:學(xué)習(xí)率,隱含層節(jié)點,正則化參數(shù);
4.可視化展示分類準確率;
5.運行環(huán)境matlab2023b及以上。
程序設(shè)計
- 完整程序和數(shù)據(jù)獲取方式私信博主回復(fù)SSA-CNN-LSTM-MATT多頭注意力機制多特征分類預(yù)測。
%% 清空環(huán)境變量
warning off % 關(guān)閉報警信息
close all % 關(guān)閉開啟的圖窗
clear % 清空變量
clc % 清空命令行%% 讀取數(shù)據(jù)
res = xlsread('data.xlsx');%% 分析數(shù)據(jù)
num_class = length(unique(res(:, end))); % 類別數(shù)(Excel最后一列放類別)
num_dim = size(res, 2) - 1; % 特征維度
num_res = size(res, 1); % 樣本數(shù)(每一行,是一個樣本)
num_size = 0.7; % 訓(xùn)練集占數(shù)據(jù)集的比例
res = res(randperm(num_res), :); % 打亂數(shù)據(jù)集(不打亂數(shù)據(jù)時,注釋該行)
flag_conusion = 1; % 標志位為1,打開混淆矩陣(要求2018版本及以上)%% 設(shè)置變量存儲數(shù)據(jù)
P_train = []; P_test = [];
T_train = []; T_test = [];%% 劃分數(shù)據(jù)集
for i = 1 : num_classmid_res = res((res(:, end) == i), :); % 循環(huán)取出不同類別的樣本mid_size = size(mid_res, 1); % 得到不同類別樣本個數(shù)mid_tiran = round(num_size * mid_size); % 得到該類別的訓(xùn)練樣本個數(shù)P_train = [P_train; mid_res(1: mid_tiran, 1: end - 1)]; % 訓(xùn)練集輸入T_train = [T_train; mid_res(1: mid_tiran, end)]; % 訓(xùn)練集輸出P_test = [P_test; mid_res(mid_tiran + 1: end, 1: end - 1)]; % 測試集輸入T_test = [T_test; mid_res(mid_tiran + 1: end, end)]; % 測試集輸出
end%% 數(shù)據(jù)轉(zhuǎn)置
P_train = P_train'; P_test = P_test';
T_train = T_train'; T_test = T_test';%% 得到訓(xùn)練集和測試樣本個數(shù)
M = size(P_train, 2);
N = size(P_test , 2);%% 數(shù)據(jù)歸一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test = mapminmax('apply', P_test, ps_input);t_train = categorical(T_train)';
t_test = categorical(T_test )';%% 數(shù)據(jù)平鋪
% 將數(shù)據(jù)平鋪成1維數(shù)據(jù)只是一種處理方式
% 也可以平鋪成2維數(shù)據(jù),以及3維數(shù)據(jù),需要修改對應(yīng)模型結(jié)構(gòu)
% 但是應(yīng)該始終和輸入層數(shù)據(jù)結(jié)構(gòu)保持一致
P_train = double(reshape(P_train, num_dim, 1, 1, M));
P_test = double(reshape(P_test , num_dim, 1, 1, N));%% 數(shù)據(jù)格式轉(zhuǎn)換
for i = 1 : Mp_train{i, 1} = P_train(:, :, 1, i);
endfor i = 1 : Np_test{i, 1} = P_test( :, :, 1, i);
end
%% 優(yōu)化算法參數(shù)設(shè)置
SearchAgents_no = 8; % 數(shù)量
Max_iteration = 10; % 最大迭代次數(shù)
dim = 3; % 優(yōu)化參數(shù)個數(shù)
lb = [1e-3,10 1e-4]; % 參數(shù)取值下界(學(xué)習(xí)率,隱藏層節(jié)點,正則化系數(shù))
ub = [1e-2, 30,1e-1]; % 參數(shù)取值上界(學(xué)習(xí)率,隱藏層節(jié)點,正則化系數(shù))
參考資料
[1] https://blog.csdn.net/kjm13182345320/category_11799242.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/124571691