matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進行分類|附代碼數(shù)據(jù)
全文下載鏈接:http://tecdat.cn/?p=19751
本示例說明如何使用長短期記憶(LSTM)網(wǎng)絡(luò)對序列數(shù)據(jù)進行分類(點擊文末“閱讀原文”獲取完整代碼數(shù)據(jù))。
要訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進行分類,可以使用LSTM網(wǎng)絡(luò)。LSTM網(wǎng)絡(luò)使您可以將序列數(shù)據(jù)輸入網(wǎng)絡(luò),并根據(jù)序列數(shù)據(jù)的各個時間步進行預(yù)測。
相關(guān)視頻


本示例使用日語元音數(shù)據(jù)集。此示例訓(xùn)練LSTM網(wǎng)絡(luò)來識別給定時間序列數(shù)據(jù)的說話者,該時間序列數(shù)據(jù)表示連續(xù)講話的兩個日語元音。訓(xùn)練數(shù)據(jù)包含九位發(fā)言人的時間序列數(shù)據(jù)。每個序列具有12個特征,并且長度不同。數(shù)據(jù)集包含270個訓(xùn)練觀察和370個測試觀察。
加載序列數(shù)據(jù)
加載日語元音訓(xùn)練數(shù)據(jù)。?XTrain
?是包含長度可變的維度12的270個序列的單元陣列。?Y
?是標(biāo)簽“ 1”,“ 2”,...,“ 9”的分類向量,分別對應(yīng)于九個揚聲器。中的條目??XTrain
?是具有12行(每個要素一行)和不同列數(shù)(每個時間步長一列)的矩陣。
XTrain(1:5)
ans=5×1 cell array
? ?{12x20 double}
? ?{12x26 double}
? ?{12x22 double}
? ?{12x20 double}
? ?{12x21 double}
可視化圖中的第一個時間序列。每行對應(yīng)一個特征。
figure
plot(Train')
xlabel("時間步長")
title("訓(xùn)練樣本 1")
numFeatures = size(XTrain{1},1);
legend("特征 "

點擊標(biāo)題查閱往期內(nèi)容

R語言用FNN-LSTM假近鄰長短期記憶人工神經(jīng)網(wǎng)絡(luò)模型進行時間序列深度學(xué)習(xí)預(yù)測4個案例
左右滑動查看更多
01

02
03

04
準(zhǔn)備填充數(shù)據(jù)
在訓(xùn)練過程中,默認情況下,該軟件默認將訓(xùn)練數(shù)據(jù)分成小批并填充序列,以使它們具有相同的長度。太多的填充可能會對網(wǎng)絡(luò)性能產(chǎn)生負面影響。
為防止訓(xùn)練過程增加太多填充,您可以按序列長度對訓(xùn)練數(shù)據(jù)進行排序,并選擇小批量的大小,以使小批量中的序列具有相似的長度。下圖顯示了對數(shù)據(jù)進行排序之前和之后的填充序列的效果。

獲取每個觀察的序列長度。
按序列長度對數(shù)據(jù)進行排序。
在條形圖中查看排序的序列長度。
figure
bar(sequenceLengths)
ylim([0 30])
xlabel("序列")
ylabel("長度")
title("排序后數(shù)據(jù)")

選擇大小為27的小批量可均勻劃分訓(xùn)練數(shù)據(jù)并減少小批量中的數(shù)量。下圖說明了添加到序列中的填充量。

定義LSTM網(wǎng)絡(luò)架構(gòu)
定義LSTM網(wǎng)絡(luò)體系結(jié)構(gòu)。將輸入大小指定為大小為12的序列(輸入數(shù)據(jù)的大?。V付ň哂?00個隱藏單元的雙向LSTM層,并輸出序列的最后一個元素。最后,通過包括大小為9的完全連接層,其后是softmax層和分類層,來指定九個類。
如果可以在預(yù)測時使用完整序列,則可以在網(wǎng)絡(luò)中使用雙向LSTM層。雙向LSTM層在每個時間步都從完整序列中學(xué)習(xí)。例如,如果您無法在預(yù)測時使用整個序列,比如一次預(yù)測一個時間步長時,請改用LSTM層。
layers =
?5x1 Layer array with layers:
? ? 1 ? '' ? Sequence Input ? ? ? ? ?Sequence input with 12 dimensions
? ? 2 ? '' ? BiLSTM ? ? ? ? ? ? ? ? ?BiLSTM with 100 hidden units
? ? 3 ? '' ? Fully Connected ? ? ? ? 9 fully connected layer
? ? 4 ? '' ? Softmax ? ? ? ? ? ? ? ? softmax
? ? 5 ? '' ? Classification Output ? crossentropyex
現(xiàn)在,指定訓(xùn)練選項。將優(yōu)化器指定為??'adam'
,將梯度閾值指定為1,將最大歷元數(shù)指定為100。要減少小批量中的填充量,請選擇27的小批量大小。與最長序列的長度相同,請將序列長度指定為??'longest'
。為確保數(shù)據(jù)仍按序列長度排序,請指定從不對數(shù)據(jù)進行隨機排序。
由于批處理的序列短,因此訓(xùn)練更適合于CPU。指定??'ExecutionEnvironment'
?為??'cpu'
。要在GPU上進行訓(xùn)練(如果有),請將設(shè)置??'ExecutionEnvironment'
?為??'auto'
?(這是默認值)。
訓(xùn)練LSTM網(wǎng)絡(luò)
使用指定的訓(xùn)練選項來訓(xùn)練LSTM網(wǎng)絡(luò)??trainNetwork
。

測試LSTM網(wǎng)絡(luò)
加載測試集并將序列分類為揚聲器。
加載日語元音測試數(shù)據(jù)。?XTest
?是包含370個長度可變的維度12的序列的單元陣列。?YTest
?是標(biāo)簽“ 1”,“ 2”,...“ 9”的分類向量,分別對應(yīng)于九個揚聲器。
XTest(1:3)
ans=3×1 cell array
? ?{12x19 double}
? ?{12x17 double}
? ?{12x19 double}
LSTM網(wǎng)絡(luò)??net
?是使用相似長度的序列進行訓(xùn)練的。確保測試數(shù)據(jù)的組織方式相同。按序列長度對測試數(shù)據(jù)進行排序。
分類測試數(shù)據(jù)。要減少分類過程引入的數(shù)據(jù)量,請將批量大小設(shè)置為27。要應(yīng)用與訓(xùn)練數(shù)據(jù)相同的填充,請將序列長度指定為??'longest'
。
計算預(yù)測的分類準(zhǔn)確性。
acc = sum(YPred == YTest)./numel(YTest)
acc = 0.9730

點擊文末“閱讀原文”
獲取全文完整代碼數(shù)據(jù)資料。
本文選自《matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進行分類》。
點擊標(biāo)題查閱往期內(nèi)容
Python TensorFlow循環(huán)神經(jīng)網(wǎng)絡(luò)RNN-LSTM神經(jīng)網(wǎng)絡(luò)預(yù)測股票市場價格時間序列和MSE評估準(zhǔn)確性
數(shù)據(jù)分享|PYTHON用KERAS的LSTM神經(jīng)網(wǎng)絡(luò)進行時間序列預(yù)測天然氣價格例子
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預(yù)測分析
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進行分類
RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實現(xiàn)時間序列長期利率預(yù)測
結(jié)合新冠疫情COVID-19股票價格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時間序列分析
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法預(yù)測時間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時間序列進行預(yù)測分析
R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時間序列:多層感知器(MLP)和極限學(xué)習(xí)機(ELM)數(shù)據(jù)分析報告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測時間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)(ANN)模型
【視頻】R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡(luò)進行簡單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時間序列預(yù)測
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進行分類
R語言實現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化
用R語言實現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進行時間序列預(yù)測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經(jīng)網(wǎng)絡(luò)機器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類


