【LSTM分類】基于雙向長短時記憶(BiLSTM)實現(xiàn)數(shù)據(jù)分類含Matlab源碼
1 簡介
LSTM 是循環(huán)神經(jīng)網(wǎng)絡(luò)中的一個特殊網(wǎng)絡(luò),它能夠很好的處理序列信息并從中學(xué)習(xí)有效特征,它把以往的神經(jīng)單元用一個記憶單元( memory cell) 來代替,解決了以往循環(huán)神經(jīng)網(wǎng)絡(luò)在梯度反向傳播中遇到的爆炸和衰減問題. 一個記憶單元利用了輸入門 it、一個記憶細(xì)胞 ct、一個忘記門 ft、一個輸出門 ot 來控制歷史信息的儲存記憶,在每次輸入后會有一個當(dāng)前狀態(tài) ht,ht 計算如下:


其中,xt?為?t?時刻輸入的情感詞向量,σ?為?sigmoid?函數(shù),?代表向量對應(yīng)元素依次相乘,其中水電費?Wi,Ui,Vi,bi,?Wg,Ug,bg,Wo,Uo,Vo,bo?為?LSTM?參數(shù).


2 部分代碼
%加載序列數(shù)據(jù)
%數(shù)據(jù)描述:總共270組訓(xùn)練樣本共分為9類,每組訓(xùn)練樣本的訓(xùn)練樣個數(shù)不等,每個訓(xùn)練訓(xùn)練樣本由12個特征向量組成,
clc
clear all
close all
[XTrain,YTrain] = japaneseVowelsTrainData;
%數(shù)據(jù)可視化
figure
plot(XTrain{1}')
xlabel('Time Step')
title('Training Observation 1')
legend('Feature ' ,'Location','northeastoutside')
%%
%LSTM可以將分組后等量的訓(xùn)練樣本進(jìn)行訓(xùn)練,從而提高訓(xùn)練效率
%如果每組的樣本數(shù)量不同,進(jìn)行小批量拆分,則需要盡量保證分塊的訓(xùn)練樣本數(shù)相同
%首先找到每組樣本數(shù)和總的組數(shù)
numObservations = numel(XTrain);
for i=1:numObservations
? ?sequence = XTrain{i};
? ?sequenceLengths(i) = size(sequence,2);
end
%繪圖前后排序的各組數(shù)據(jù)個數(shù)
figure
subplot(1,2,1)
bar(sequenceLengths)
ylim([0 30])
xlabel('Sequence')
ylabel('Length')
title('Sorted Data')
%按序列長度對測試數(shù)據(jù)進(jìn)行排序
[sequenceLengths,idx] = sort(sequenceLengths);
XTrain = XTrain(idx);
YTrain = YTrain(idx);
subplot(1,2,2)
bar(sequenceLengths)
ylim([0 30])
xlabel('Sequence')
ylabel('Length')
title('Sorted Data')
%%
3 仿真結(jié)果



4 參考文獻(xiàn)
[1]黃賢英, 劉廣峰, 劉小洋,等. 基于word2vec和雙向LSTM的情感分類深度模型[J]. 計算機應(yīng)用研究, 2019, 36(12):6.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
