MATLAB用深度學(xué)習(xí)長(zhǎng)短期記憶 (LSTM) 神經(jīng)網(wǎng)絡(luò)對(duì)智能手機(jī)傳感器時(shí)間序列數(shù)據(jù)進(jìn)行分類|
原文鏈接:http://tecdat.cn/?p=26318
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
最近我們被客戶要求撰寫關(guān)于長(zhǎng)短期記憶 (LSTM) 神經(jīng)網(wǎng)絡(luò)的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
此示例說(shuō)明如何使用長(zhǎng)短期記憶 (LSTM) 網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)的每個(gè)時(shí)間步長(zhǎng)進(jìn)行分類。
要訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)的每個(gè)時(shí)間步進(jìn)行分類,可以使用?序列對(duì)序列 LSTM 網(wǎng)絡(luò)。序列對(duì)序列 LSTM 網(wǎng)絡(luò)使您能夠?qū)π蛄袛?shù)據(jù)的每個(gè)單獨(dú)時(shí)間步進(jìn)行不同的預(yù)測(cè)。
此示例使用從佩戴在身上的智能手機(jī)獲取的傳感器數(shù)據(jù)。該示例訓(xùn)練 LSTM 網(wǎng)絡(luò),以在給定時(shí)間序列數(shù)據(jù)的情況下識(shí)別佩戴者的活動(dòng),這些數(shù)據(jù)表示三個(gè)不同方向的加速度計(jì)讀數(shù)。訓(xùn)練數(shù)據(jù)包含七個(gè)時(shí)間序列數(shù)據(jù)。每個(gè)序列具有三個(gè)特征并且長(zhǎng)度不同。數(shù)據(jù)集包含六個(gè)訓(xùn)練觀察和一個(gè)測(cè)試觀察。
加載序列數(shù)據(jù)
加載人類活動(dòng)識(shí)別數(shù)據(jù)。該數(shù)據(jù)包含從佩戴在身上的智能手機(jī)獲得的七個(gè)時(shí)間序列的傳感器數(shù)據(jù)。每個(gè)序列具有三個(gè)特征并且長(zhǎng)度不同。這三個(gè)特征對(duì)應(yīng)于三個(gè)不同方向的加速度計(jì)讀數(shù)。
XTrain

在圖中可視化一個(gè)訓(xùn)練序列。繪制第一個(gè)訓(xùn)練序列的第一個(gè)特征,并根據(jù)相應(yīng)的活動(dòng)為繪圖著色。
figurefor j = 1:numel ? ?label = classes; ? ?idx = find ? ?hold on ? ?plotend

定義 LSTM 網(wǎng)絡(luò)架構(gòu)
定義 LSTM 網(wǎng)絡(luò)架構(gòu)。將輸入指定為大小為 3 的序列(輸入數(shù)據(jù)的特征數(shù))。指定一個(gè)具有 200 個(gè)隱藏單元的 LSTM 層,并輸出完整的序列。最后,通過(guò)包括一個(gè)大小為 5 的全連接層,然后是一個(gè) softmax 層和一個(gè)分類層來(lái)指定五個(gè)類。
layers = [ ... ? ?seuenceutLaer ? ?lsmLyer ? ?fulyCnectdyer ? ?sotmLyer ? ?clssfcainLyr];
指定訓(xùn)練選項(xiàng)。將求解器設(shè)置為?'adam'
。訓(xùn)練 60 個(gè) epoch。
使用指定的訓(xùn)練選項(xiàng)訓(xùn)練 LSTM 網(wǎng)絡(luò)?trainNetwork
。每個(gè) mini-batch 包含整個(gè)訓(xùn)練集,因此每個(gè) epoch 更新一次圖。序列很長(zhǎng),因此處理每個(gè)小批量和更新繪圖可能需要一些時(shí)間。

測(cè)試 LSTM 網(wǎng)絡(luò)
加載測(cè)試數(shù)據(jù)并在每個(gè)時(shí)間步進(jìn)行分類。
加載人類活動(dòng)測(cè)試數(shù)據(jù)。?XTest
?包含一個(gè)維度為 3 的單個(gè)序列。??YTest
?is 包含與每個(gè)時(shí)間步相對(duì)應(yīng)的分類標(biāo)簽序列。
figureplotxlabellegendtitle

使用對(duì)測(cè)試數(shù)據(jù)進(jìn)行分類?。
YPrd = clssif;
或者,您可以使用 一次進(jìn)行一個(gè)時(shí)間步長(zhǎng)的預(yù)測(cè)?。通常,與一次一個(gè)時(shí)間步進(jìn)行預(yù)測(cè)相比,對(duì)完整序列進(jìn)行預(yù)測(cè)會(huì)更快。有關(guān)如何通過(guò)在單個(gè)時(shí)間步預(yù)測(cè)之間更新網(wǎng)絡(luò)來(lái)預(yù)測(cè)未來(lái)時(shí)間步的示例。
計(jì)算預(yù)測(cè)的準(zhǔn)確性。
ac = sum(YPrd == YTst{1})./nul(YTs{1})
?

使用繪圖將預(yù)測(cè)與測(cè)試數(shù)據(jù)進(jìn)行比較。
plothold onplothold off


最受歡迎的見(jiàn)解
1.用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類
2.Python中利用長(zhǎng)短期記憶模型LSTM進(jìn)行時(shí)間序列預(yù)測(cè)分析 – 預(yù)測(cè)電力消耗數(shù)據(jù)
3.python在Keras中使用LSTM解決序列問(wèn)題
4.Python中用PyTorch機(jī)器學(xué)習(xí)分類預(yù)測(cè)銀行客戶流失模型
5.R語(yǔ)言多元Copula GARCH 模型時(shí)間序列預(yù)測(cè)
6.在r語(yǔ)言中使用GAM(廣義相加模型)進(jìn)行電力負(fù)荷時(shí)間序列分析
7.R語(yǔ)言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于預(yù)測(cè)時(shí)間序列數(shù)
8.R語(yǔ)言估計(jì)時(shí)變VAR模型時(shí)間序列的實(shí)證研究分析案例
9.用廣義加性模型GAM進(jìn)行時(shí)間序列分析