最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Matlab用深度學(xué)習(xí)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN長短期記憶LSTM進行波形時間序列數(shù)據(jù)預(yù)測|附代碼數(shù)據(jù)

2023-06-07 23:25 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=27279

最近我們被客戶要求撰寫關(guān)于深度學(xué)習(xí)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN的研究報告,包括一些圖形和統(tǒng)計輸出。

此示例說明如何使用長短期記憶 (LSTM) 網(wǎng)絡(luò)預(yù)測時間序列

LSTM神經(jīng)網(wǎng)絡(luò)架構(gòu)和原理及其在Python中的預(yù)測應(yīng)用

LSTM 網(wǎng)絡(luò)是一種循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN),它通過循環(huán)時間步長和更新網(wǎng)絡(luò)狀態(tài)來處理輸入數(shù)據(jù)。網(wǎng)絡(luò)狀態(tài)包含在所有先前時間步長中記住的信息。您可以使用 LSTM 網(wǎng)絡(luò)使用先前的時間步長作為輸入來預(yù)測時間序列或序列的后續(xù)值。要訓(xùn)練 LSTM 網(wǎng)絡(luò)進行時間序列預(yù)測,請訓(xùn)練具有序列輸出的回歸 LSTM 網(wǎng)絡(luò),其中響應(yīng)(目標(biāo))是訓(xùn)練序列,其值偏移了一個時間步長。換句話說,在輸入序列的每個時間步,LSTM 網(wǎng)絡(luò)學(xué)習(xí)預(yù)測下一個時間步的值。

有兩種預(yù)測方法:開環(huán)預(yù)測和閉環(huán)預(yù)測。

  • ? ?開環(huán)預(yù)測僅使用輸入數(shù)據(jù)預(yù)測序列中的下一個時間步長。在對后續(xù)時間步進行預(yù)測時,您會從數(shù)據(jù)源中收集真實值并將其用作輸入。
  • ? ?閉環(huán)預(yù)測通過使用先前的預(yù)測作為輸入來預(yù)測序列中的后續(xù)時間步長。在這種情況下,模型不需要真實值來進行預(yù)測。

此圖顯示了一個示例序列,其中包含使用閉環(huán)預(yù)測的預(yù)測值。

此示例使用波形數(shù)據(jù)集,其中包含 2000 個具有三個通道的不同長度的綜合生成波形。該示例訓(xùn)練 LSTM 網(wǎng)絡(luò)以使用閉環(huán)和開環(huán)預(yù)測在給定先前時間步長的值的情況下預(yù)測波形的未來值。

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

Python用RNN神經(jīng)網(wǎng)絡(luò):LSTM、GRU、回歸和ARIMA對COVID19新冠疫情人數(shù)時間序列預(yù)測

左右滑動查看更多

01

02

03

04

加載數(shù)據(jù)

查看前幾個序列的大小。

data(1:5)

查看聲道數(shù)量。為了訓(xùn)練網(wǎng)絡(luò),每個序列必須具有相同數(shù)量的聲道。

nufdmChahgnnhels?=?3

可視化圖中的前幾個序列。

for?i?=?1:4????nexttsdile????staasdcgafdgkedplot(dadgta{i}')

將數(shù)據(jù)劃分為訓(xùn)練集和測試集。將 90% 的觀察結(jié)果用于訓(xùn)練,其余用于測試。

準備訓(xùn)練數(shù)據(jù)

要預(yù)測序列的未來時間步長的值,請將目標(biāo)指定為訓(xùn)練序列,其值移動一個時間步長。換句話說,在輸入序列的每個時間步,LSTM 網(wǎng)絡(luò)學(xué)習(xí)預(yù)測下一個時間步的值。預(yù)測變量是沒有最終時間步長的訓(xùn)練序列。

for?n?=?1:nasumel(dddataTrainsf)????Xd?=?dataTrgainsg{n};????XgfTrdfain{n}?=?dfX(:,1:efgdnd-1);????TTraign{n}?=?gXd(:,2:efnd);end

為了更好地擬合并防止訓(xùn)練發(fā)散,請將預(yù)測變量和目標(biāo)歸一化以具有零均值和單位方差。進行預(yù)測時,還必須使用與訓(xùn)練數(shù)據(jù)相同的統(tǒng)計數(shù)據(jù)對測試數(shù)據(jù)進行標(biāo)準化。要輕松計算所有序列的均值和標(biāo)準差,請在時間維度上連接序列。

定義 LSTM 網(wǎng)絡(luò)架構(gòu)

創(chuàng)建一個 LSTM 回歸網(wǎng)絡(luò)。

  • ? ?使用輸入大小與輸入數(shù)據(jù)的通道數(shù)相匹配的序列輸入層。
  • ? ?使用具有 128 個隱藏單元的 LSTM 層。隱藏單元的數(shù)量決定了層學(xué)習(xí)了多少信息。使用更多隱藏單元可以產(chǎn)生更準確的結(jié)果,但更有可能導(dǎo)致對訓(xùn)練數(shù)據(jù)的過度擬合。
  • ? ?要輸出與輸入數(shù)據(jù)具有相同通道數(shù)的序列,請包含一個輸出大小與輸入數(shù)據(jù)的通道數(shù)相匹配的全連接層。
  • ? ?最后,包括一個回歸層。

指定訓(xùn)練選項

指定訓(xùn)練選項。

  • ? ?使用 Adam 優(yōu)化進行訓(xùn)練。
  • ? ?訓(xùn)練 200 個 epoch。對于更大的數(shù)據(jù)集,您可能不需要訓(xùn)練盡可能多的 epoch 來獲得良好的擬合。
  • ? ?在每個小批量中,左填充序列,使它們具有相同的長度。

trainingOptions("adam",?...????MaxEpochs=200,?...

訓(xùn)練神經(jīng)網(wǎng)絡(luò)

指定的訓(xùn)練選項訓(xùn)練 LSTM 網(wǎng)絡(luò)?。

測試網(wǎng)絡(luò)

使用與訓(xùn)練數(shù)據(jù)相同的步驟準備用于預(yù)測的測試數(shù)據(jù)。

使用從訓(xùn)練數(shù)據(jù)計算的統(tǒng)計數(shù)據(jù)對測試數(shù)據(jù)進行標(biāo)準化。將目標(biāo)指定為測試序列,其值偏移一個時間步,將預(yù)測變量指定為沒有最終時間步的測試序列。

for?n?=?1:sifze(dsdatagsdTest,1)????Xsdg?=?datsdagesdt{n};????XTdsgsst{n}?=?(Xd(:,1:dend-1)?-?muX)?./?sdgdigmaX;????TTedgst{n}?=?(X(:,2:enddg)?-?muT)?./?sisggaT;end

使用測試數(shù)據(jù)進行預(yù)測。指定與訓(xùn)練相同的填充選項。

YTasedst?=?prsdfdict(nedst,fXTsdest,SeqfuencePaddfsdingDidfrecdtionf="ledfft");

為了評估準確性,對于每個測試序列,計算預(yù)測和目標(biāo)之間的均方根誤差 (RMSE)。

????rmse(i)?=?sqrt(mean((YTesdst{i}?-?TTfedft{i}).^2,"all"));

在直方圖中可視化錯誤。較低的值表示較高的準確性。

計算所有測試觀測值的平均 RMSE。

mean(rmse)

預(yù)測未來時間步長

給定輸入時間序列或序列,要預(yù)測多個未來時間步的值。對于每個預(yù)測,使用之前的預(yù)測作為函數(shù)的輸入。

在圖中可視化其中一個測試序列。

figurestfackddefdsplot(X'

開環(huán)預(yù)測

開環(huán)預(yù)測僅使用輸入數(shù)據(jù)預(yù)測序列中的下一個時間步長。在對后續(xù)時間步進行預(yù)測時,您會從數(shù)據(jù)源中收集真實值并將其用作輸入。例如,假設(shè)您想使用在時間步 1 到 t-1 中收集的數(shù)據(jù)來預(yù)測序列的時間步 t 的值。要對時間步 t+1 進行預(yù)測,請等到您記錄時間步 t 的真實值并將其用作輸入以進行下一個預(yù)測。當(dāng)您在進行下一次預(yù)測之前有真實值要提供給網(wǎng)絡(luò)時,請使用開環(huán)預(yù)測。

使用輸入數(shù)據(jù)的前 75 個時間步更新網(wǎng)絡(luò)狀態(tài)。

ngdfget?=?resasegftSdtsfte(net);offssdet?=?75;[nefgt,~]?=?predfgdictAndUpdateStdfgate(nfget,X(:,1:offsedfd));

為了預(yù)測進一步的預(yù)測,更新網(wǎng)絡(luò)狀態(tài)。通過循環(huán)輸入數(shù)據(jù)的時間步并將它們用作網(wǎng)絡(luò)的輸入來預(yù)測測試觀察的剩余時間步的值。

將預(yù)測值與目標(biāo)值進行比較。

for?i?=?1:numCashdananels????nexdttdfgileg????ploft(T(i,:))????holfgd?on????plot(offfset:gnumTimeSdfghjteps,[T(i,ofkklkset)?Y(i,:)],'--')

閉環(huán)預(yù)測

閉環(huán)預(yù)測通過使用先前的預(yù)測作為輸入來預(yù)測序列中的后續(xù)時間步長。在這種情況下,模型不需要真實值來進行預(yù)測。例如,假設(shè)您想僅使用在時間步 1 到 t-1 中收集的數(shù)據(jù)來預(yù)測序列的時間步 t 到 t+k 的值。要對時間步 i 進行預(yù)測,請使用時間步 i-1 的預(yù)測值作為輸入。使用閉環(huán)預(yù)測來預(yù)測多個后續(xù)時間步長,或者當(dāng)您在進行下一個預(yù)測之前沒有向網(wǎng)絡(luò)提供真實值時。

通過首先使用函數(shù)重置狀態(tài)來初始化網(wǎng)絡(luò)狀態(tài)?,然后?使用輸入數(shù)據(jù)的前幾個時間步長resetState?進行初始預(yù)測?。Z使用輸入數(shù)據(jù)的前 75 個時間步更新網(wǎng)絡(luò)狀態(tài)。

newt?=?resetyeriuiutState(net);ofrfstydet?=?sizety(X,2);[nest,h]?=?peeredictAnytdUpdtateState(net,X);

為了預(yù)測進一步的預(yù)測,循環(huán)時間步長并更新網(wǎng)絡(luò)狀態(tài)。通過迭代地將先前的預(yù)測值傳遞給網(wǎng)絡(luò)來預(yù)測接下來的 200 個時間步長。由于網(wǎng)絡(luò)不需要輸入數(shù)據(jù)來進行任何進一步的預(yù)測,因此您可以指定任意數(shù)量的時間步長進行預(yù)測。

numPreddshictihgonTimeshgSteps?=?200;dghXt?=?Z(:,endesrgs);Ysf?=?zergfsos(sfgsnumChannels,numPrhedictionTimlhelhhjSteps);for?t?=?1:numPredicthjjionlkjTimeSteps????[nexfdt,Y(:,t)]?=?predic'ltAndUpdatlkeStak;lte(net,Xt);????gXt?=?Y(:,t);end

在圖中可視化預(yù)測值。

numTimdgegSteps?=?offset?+?numPralkjedicltionTimeSteps;figuret?=?tiledlayjout(numklChannels,1);for?i?=?1:numChannselgs????nextgtilgfhe????plogghft(T(i,1:ogfhvset))????hobld?bvon????plot(offsenbt:nmnumTimesbn,Stesdps,[T(i,a)?Y(i,:)],'--')

閉環(huán)預(yù)測允許您預(yù)測任意數(shù)量的時間步長,但與開環(huán)預(yù)測相比可能不太準確,因為網(wǎng)絡(luò)在預(yù)測過程中無法訪問真實值。

點擊文末?“閱讀原文”

獲取全文完整資料。

本文選自《Matlab用深度學(xué)習(xí)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN長短期記憶LSTM進行波形時間序列數(shù)據(jù)預(yù)測》。

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

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ù)測、準確度檢查和結(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ò)分類


Matlab用深度學(xué)習(xí)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN長短期記憶LSTM進行波形時間序列數(shù)據(jù)預(yù)測|附代碼數(shù)據(jù)的評論 (共 條)

分享到微博請遵守國家法律
礼泉县| 佛坪县| 新巴尔虎左旗| 富阳市| 琼结县| 巴中市| 六枝特区| 沁水县| 赤水市| 肃南| 锦州市| 屏南县| 花莲县| 灌云县| 淮滨县| 边坝县| 册亨县| 东方市| 兴义市| 彝良县| 云安县| 邵阳市| 义马市| 溧水县| 手机| 文昌市| 文山县| 重庆市| 剑阁县| 内乡县| 蛟河市| 额敏县| 雷州市| 长泰县| 出国| 蕲春县| 屏东县| 平果县| 和龙市| 巫山县| 巴楚县|