matlab使用長(zhǎng)短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)進(jìn)行分類|附代碼數(shù)據(jù)
全文下載鏈接:http://tecdat.cn/?p=19751
本示例說(shuō)明如何使用長(zhǎng)短期記憶(LSTM)網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)進(jìn)行分類 。 最近我們被客戶要求撰寫(xiě)關(guān)于LSTM的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
要訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)進(jìn)行分類,可以使用LSTM網(wǎng)絡(luò)。LSTM網(wǎng)絡(luò)使您可以將序列數(shù)據(jù)輸入網(wǎng)絡(luò),并根據(jù)序列數(shù)據(jù)的各個(gè)時(shí)間步進(jìn)行預(yù)測(cè)。
本示例使用日語(yǔ)元音數(shù)據(jù)集。此示例訓(xùn)練LSTM網(wǎng)絡(luò)來(lái)識(shí)別給定時(shí)間序列數(shù)據(jù)的說(shuō)話者,該時(shí)間序列數(shù)據(jù)表示連續(xù)講話的兩個(gè)日語(yǔ)元音。訓(xùn)練數(shù)據(jù)包含九位發(fā)言人的時(shí)間序列數(shù)據(jù)。每個(gè)序列具有12個(gè)特征,并且長(zhǎng)度不同。數(shù)據(jù)集包含270個(gè)訓(xùn)練觀察和370個(gè)測(cè)試觀察。
加載序列數(shù)據(jù)
加載日語(yǔ)元音訓(xùn)練數(shù)據(jù)。?XTrain
?是包含長(zhǎng)度可變的維度12的270個(gè)序列的單元陣列。?Y
?是標(biāo)簽“ 1”,“ 2”,...,“ 9”的分類向量,分別對(duì)應(yīng)于九個(gè)揚(yáng)聲器。中的條目??XTrain
?是具有12行(每個(gè)要素一行)和不同列數(shù)(每個(gè)時(shí)間步長(zhǎng)一列)的矩陣。
XTrain(1:5)ans=5×1 cell array ? ?{12x20 double} ? ?{12x26 double} ? ?{12x22 double} ? ?{12x20 double} ? ?{12x21 double}
可視化圖中的第一個(gè)時(shí)間序列。每行對(duì)應(yīng)一個(gè)特征。
figureplot(Train')xlabel("時(shí)間步長(zhǎng)")title("訓(xùn)練樣本 1")numFeatures = size(XTrain{1},1);legend("特征 "

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

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

02

03

04

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

獲取每個(gè)觀察的序列長(zhǎng)度。
按序列長(zhǎng)度對(duì)數(shù)據(jù)進(jìn)行排序。
在條形圖中查看排序的序列長(zhǎng)度。
figurebar(sequenceLengths)ylim([0 30])xlabel("序列")ylabel("長(zhǎng)度")title("排序后數(shù)據(jù)")

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

定義LSTM網(wǎng)絡(luò)架構(gòu)
定義LSTM網(wǎng)絡(luò)體系結(jié)構(gòu)。將輸入大小指定為大小為12的序列(輸入數(shù)據(jù)的大?。?。指定具有100個(gè)隱藏單元的雙向LSTM層,并輸出序列的最后一個(gè)元素。最后,通過(guò)包括大小為9的完全連接層,其后是softmax層和分類層,來(lái)指定九個(gè)類。
如果可以在預(yù)測(cè)時(shí)使用完整序列,則可以在網(wǎng)絡(luò)中使用雙向LSTM層。雙向LSTM層在每個(gè)時(shí)間步都從完整序列中學(xué)習(xí)。例如,如果您無(wú)法在預(yù)測(cè)時(shí)使用整個(gè)序列,比如一次預(yù)測(cè)一個(gè)時(shí)間步長(zhǎng)時(shí),請(qǐng)改用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)練選項(xiàng)。將優(yōu)化器指定為??'adam'
,將梯度閾值指定為1,將最大歷元數(shù)指定為100。要減少小批量中的填充量,請(qǐng)選擇27的小批量大小。與最長(zhǎng)序列的長(zhǎng)度相同,請(qǐng)將序列長(zhǎng)度指定為??'longest'
。為確保數(shù)據(jù)仍按序列長(zhǎng)度排序,請(qǐng)指定從不對(duì)數(shù)據(jù)進(jìn)行隨機(jī)排序。
由于批處理的序列短,因此訓(xùn)練更適合于CPU。指定??'ExecutionEnvironment'
?為??'cpu'
。要在GPU上進(jìn)行訓(xùn)練(如果有),請(qǐng)將設(shè)置??'ExecutionEnvironment'
?為??'auto'
?(這是默認(rèn)值)。
訓(xùn)練LSTM網(wǎng)絡(luò)
使用指定的訓(xùn)練選項(xiàng)來(lái)訓(xùn)練LSTM網(wǎng)絡(luò)??trainNetwork
。

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

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