【LSTM預(yù)測】基于雙向長短時記憶(biLSTM)實現(xiàn)數(shù)據(jù)回歸預(yù)測含Matlab源碼
1 簡介
Bi-LSTM網(wǎng)絡(luò)理論
LSTM 網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò) (Recurrent Neural Network,RNN) 的變體,改善了 RNN 存在的無法解決長期依賴的問題。LSTM 單元結(jié)構(gòu)如圖 1 所示。其中,ct,ht 分別表示模型的記憶狀態(tài)和隱層狀態(tài),xt,yt 分別表示模型的輸入與輸出,σ 表示 sigmoid激活函數(shù)。LSTM 的單元內(nèi)存在 4 個不同的全連接層,全連接層的每一個結(jié)點都與上一層的所有結(jié)點相連,其主要用途是把模型提取到的特征綜合起來。主層是圖中輸出為 c~t 的層,其基本作用是分析當(dāng)前輸入xt 和前一個隱狀態(tài) ht -1。其他 3 個層是門限控制器,分別是:由 ft 控制的忘記門限,控制著哪些記憶狀態(tài)應(yīng)被丟棄;由 it 控制的輸入門限,控制著 c~t 的哪些部分會被加入到記憶狀態(tài);由 ot 控制的輸出門限,控制著哪些記憶狀態(tài)應(yīng)在這個時間迭代被讀取和輸出。隨著記憶狀態(tài) ct -1 從左到右貫穿網(wǎng)絡(luò),它首先經(jīng)過一個忘記門限丟棄一些記憶,然后通過輸入門限選擇添加一些新的記憶。因此,在每個時間迭代中,一些記憶被丟棄,同時一些記憶被增加。另外,經(jīng)過額外操作,記憶狀態(tài)被復(fù)制并傳入 tanh 函數(shù),然后其結(jié)果被輸出門限過濾,從而產(chǎn)生新的隱狀態(tài)ht。LSTM 就是在這樣的循環(huán)之下,學(xué)習(xí)哪些記憶需要儲存,哪些記憶需要丟棄,以及從哪些記憶中去




2 部分代碼
clc
clear
close all
%%
load final.mat
for i=1:size(record,2)
? ?record(:,i)=record(:,i)/max(record(:,i));
end
demands=record(1:220,4);
orgin=record(1:220,1:3);
in=orgin;
out=demands;
i=1;
while ~isempty(in)
? ?pick=3;
? ?if pick<=size(in,1)
? ? ? ?X{i}=(in(1:pick,:))';
? ? ? ?Y(i)=out(pick);
? ? ? ?in(1,:)=[];
? ? ? ?out(1,:)=[];
? ? ? ?i=i+1;
? ?else
? ? ? ?X{i}=in';
? ? ? ?Y(i)=out(end);
? ? ? ?break;
? ?end
end
3 仿真結(jié)果


4 參考文獻
[1]郭洪鵬, 劉斌, 肖堯. 基于Bi-LSTM網(wǎng)絡(luò)的鐵路短期貨運量預(yù)測研究[J]. 鐵道貨運, 2022, 40(2):7.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻,若有侵權(quán)聯(lián)系博主刪除。

標(biāo)簽: