matlab使用長短期記憶(LSTM)神經網絡對序列數據進行分類|附代碼數據

2024-01-12     tecdat拓端

原標題:matlab使用長短期記憶(LSTM)神經網絡對序列數據進行分類|附代碼數據

全文下載連結:http://tecdat.cn/?p=19751

本示例說明如何使用長短期記憶(LSTM)網絡對序列數據進行分類 。 最近我們被客戶要求撰寫關於LSTM的研究報告,包括一些圖形和統計輸出。

要訓練深度神經網絡對序列數據進行分類,可以使用LSTM網絡。LSTM網絡使您可以將序列數據輸入網絡,並根據序列數據的各個時間步進行預測。

本示例使用日語元音數據集。此示例訓練LSTM網絡來識別給定時間序列數據的說話者,該時間序列數據表示連續講話的兩個日語元音。訓練數據包含九位發言人的時間序列數據。每個序列具有12個特徵,並且長度不同。數據集包含270個訓練觀察和370個測試觀察。

加載序列數據

加載日語元音訓練數據。 XTrain 是包含長度可變的維度12的270個序列的單元陣列。 Y 是標籤「 1」,「 2」,...,「 9」的分類向量,分別對應於九個揚聲器。中的條目 XTrain 是具有12行(每個要素一行)和不同列數(每個時間步長一列)的矩陣。

XTrain(1:5)

ans=5×1 cell array

{12x20 double}

{12x26 double}

{12x22 double}

{12x20 double}

{12x21 double}

可視化圖中的第一個時間序列。每行對應一個特徵。

figure

plot(Train')

xlabel("時間步長")

title("訓練樣本 1")

numFeatures = size(XTrain{1},1);

legend("特徵 "

點擊標題查閱往期內容

R語言用FNN-LSTM假近鄰長短期記憶人工神經網絡模型進行時間序列深度學習預測4個案例

左右滑動查看更多

01

02

03

04

準備填充數據

在訓練過程中,默認情況下,該軟體默認將訓練數據分成小批並填充序列,以使它們具有相同的長度。太多的填充可能會對網絡性能產生負面影響。

為防止訓練過程增加太多填充,您可以按序列長度對訓練數據進行排序,並選擇小批量的大小,以使小批量中的序列具有相似的長度。下圖顯示了對數據進行排序之前和之後的填充序列的效果。

獲取每個觀察的序列長度。

按序列長度對數據進行排序。

在條形圖中查看排序的序列長度。

figure

bar(sequenceLengths)

ylim([0 30])

xlabel("序列")

ylabel("長度")

title("排序後數據")

選擇大小為27的小批量可均勻劃分訓練數據並減少小批量中的數量。下圖說明了添加到序列中的填充量。

定義LSTM網絡架構

定義LSTM網絡體系結構。將輸入大小指定為大小為12的序列(輸入數據的大小)。指定具有100個隱藏單元的雙向LSTM層,並輸出序列的最後一個元素。最後,通過包括大小為9的完全連接層,其後是softmax層和分類層,來指定九個類。

如果可以在預測時使用完整序列,則可以在網絡中使用雙向LSTM層。雙向LSTM層在每個時間步都從完整序列中學習。例如,如果您無法在預測時使用整個序列,比如一次預測一個時間步長時,請改用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

現在,指定訓練選項。將優化器指定為 'adam',將梯度閾值指定為1,將最大曆元數指定為100。要減少小批量中的填充量,請選擇27的小批量大小。與最長序列的長度相同,請將序列長度指定為 'longest'。為確保數據仍按序列長度排序,請指定從不對數據進行隨機排序。

由於批處理的序列短,因此訓練更適合於CPU。指定 'ExecutionEnvironment' 為 'cpu'。要在GPU上進行訓練(如果有),請將設置 'ExecutionEnvironment' 為 'auto' (這是默認值)。

訓練LSTM網絡

使用指定的訓練選項來訓練LSTM網絡 trainNetwork。

測試LSTM網絡

加載測試集並將序列分類為揚聲器。

加載日語元音測試數據。 XTest 是包含370個長度可變的維度12的序列的單元陣列。 YTest 是標籤「 1」,「 2」,...「 9」的分類向量,分別對應於九個揚聲器。

XTest(1:3)

ans=3×1 cell array

{12x19 double}

{12x17 double}

{12x19 double}

LSTM網絡 net 是使用相似長度的序列進行訓練的。確保測試數據的組織方式相同。按序列長度對測試數據進行排序。

分類測試數據。要減少分類過程引入的數據量,請將批量大小設置為27。要應用與訓練數據相同的填充,請將序列長度指定為 'longest'。

計算預測的分類準確性。

acc = sum(YPred == YTest)./numel(YTest)

acc = 0.9730

點擊文末 「閱讀原文」

獲取全文完整代碼數據資料。

本文選自《matlab使用長短期記憶(LSTM)神經網絡對序列數據進行分類》。

點擊標題查閱往期內容

Python TensorFlow循環神經網絡RNN-LSTM神經網絡預測股票市場價格時間序列和MSE評估準確性

數據分享|PYTHON用KERAS的LSTM神經網絡進行時間序列預測天然氣價格例子

Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析

Matlab用深度學習長短期記憶(LSTM)神經網絡對文本數據進行分類

RNN循環神經網絡 、LSTM長短期記憶網絡實現時間序列長期利率預測

結合新冠疫情COVID-19股票價格預測:ARIMA,KNN和神經網絡時間序列分析

深度學習:Keras使用神經網絡進行簡單文本分類分析新聞組數據

用PyTorch機器學習神經網絡分類預測銀行客戶流失模型

PYTHON用LSTM長短期記憶神經網絡的參數優化方法預測時間序列洗髮水銷售數據

Python用Keras神經網絡序列模型回歸擬合預測、準確度檢查和結果可視化

Python用LSTM長短期記憶神經網絡對不穩定降雨量時間序列進行預測分析

R語言中的神經網絡預測時間序列:多層感知器(MLP)和極限學習機(ELM)數據分析報告

R語言深度學習:用keras神經網絡回歸模型預測時間序列數據

Matlab用深度學習長短期記憶(LSTM)神經網絡對文本數據進行分類

R語言KERAS深度學習CNN卷積神經網絡分類識別手寫數字圖像數據(MNIST)

MATLAB中用BP神經網絡預測人體脂肪百分比數據

Python中用PyTorch機器學習神經網絡分類預測銀行客戶流失模型

R語言實現CNN(卷積神經網絡)模型進行回歸數據分析

SAS使用鳶尾花(iris)數據集訓練人工神經網絡(ANN)模型

【視頻】R語言實現CNN(卷積神經網絡)模型進行回歸數據分析

Python使用神經網絡進行簡單文本分類

R語言用神經網絡改進Nelson-Siegel模型擬合收益率曲線分析

R語言基於遞歸神經網絡RNN的溫度時間序列預測

R語言神經網絡模型預測車輛數量時間序列

R語言中的BP神經網絡模型分析學生成績

matlab使用長短期記憶(LSTM)神經網絡對序列數據進行分類

R語言實現擬合神經網絡預測和結果可視化

用R語言實現神經網絡預測股票實例

使用PYTHON中KERAS的LSTM遞歸神經網絡進行時間序列預測

python用於NLP的seq2seq模型實例:用Keras實現神經網絡機器翻譯

用於NLP的Python:使用Keras的多標籤文本LSTM神經網絡分類

文章來源: https://twgreatdaily.com/zh-hk/02ab6e89767fd0d769c3f954e9332440.html