1 简介 Bi-LSTM网络理论 LSTM 网络是循环神经网络 (Recurrent Neural Network,RNN) 的变体,改善了 RNN 存在的无法解决长期依赖的问题。LSTM 单元结构如图 1 所示。其中,ct,ht 分别表示模型的记
1 简介
Bi-LSTM网络理论
LSTM 网络是循环神经网络 (Recurrent Neural Network,RNN) 的变体,改善了 RNN 存在的无法解决长期依赖的问题。LSTM 单元结构如图 1 所示。其中,ct,ht 分别表示模型的记忆状态和隐层状态,xt,yt 分别表示模型的输入与输出,σ 表示 sigmoid激活函数。LSTM 的单元内存在 4 个不同的全连接层,全连接层的每一个结点都与上一层的所有结点相连,其主要用途是把模型提取到的特征综合起来。主层是图中输出为 c~t 的层,其基本作用是分析当前输入xt 和前一个隐状态 ht -1。其他 3 个层是门限控制器,分别是:由 ft 控制的忘记门限,控制着哪些记忆状态应被丢弃;由 it 控制的输入门限,控制着 c~t 的哪些部分会被加入到记忆状态;由 ot 控制的输出门限,控制着哪些记忆状态应在这个时间迭代被读取和输出。随着记忆状态 ct -1 从左到右贯穿网络,它首先经过一个忘记门限丢弃一些记忆,然后通过输入门限选择添加一些新的记忆。因此,在每个时间迭代中,一些记忆被丢弃,同时一些记忆被增加。另外,经过额外操作,记忆状态被复制并传入 tanh 函数,然后其结果被输出门限过滤,从而产生新的隐状态ht。LSTM 就是在这样的循环之下,学习哪些记忆需要储存,哪些记忆需要丢弃,以及从哪些记忆中去
2 部分代码
clcclear
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 仿真结果
4 参考文献
[1]郭洪鹏, 刘斌, 肖尧. 基于Bi-LSTM网络的铁路短期货运量预测研究[J]. 铁道货运, 2022, 40(2):7.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。