【Bi-LSTM】基于双向长短期记忆 (Bi-LSTM) 需求预测研究(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

使用双向长短期记忆(biLSTM)
进行需求预测 这是一个回归问题。在这个问题中,我们希望根据过去记录中的 3 个因素预测未来需求。
您可以更改选取数(过去的记录数)。此外,您还可以更改输入的数量。例如,您也可以包括过去的需求,或删除一些输入。

BiLSTM 网络由正向 LSTM 结构和反向 LSTM 结构结合而成,这种特殊结构使得隐含层所获得的特
征数据能够同时拥有过去和未来的信息。与 LSTM相比,BiLSTM 可以捕捉输入数据双向的依赖信息,有效提高了预测模型对输入数据的特征表达能力,网络结构如图5 所示。
从图 5 可以看到, BiLSTM 网络中正向 LSTM 结构计算过程与单个 LSTM 计算过程相似,将正向隐含层状态和反向隐含层状态组合得到 BiLSTM 网络的隐含层状态,其计算公式为:

📚2 运行结果

 

 

 

部分代码:

%% Train
inputSize = 3;
numHiddenUnits = 200;
layers = [ ...
    sequenceInputLayer(inputSize)
    bilstmLayer(numHiddenUnits,'OutputMode','last')
    fullyConnectedLayer(1)
    regressionLayer];
maxEpochs = 10000;
options = trainingOptions('adam', ...
    'MaxEpochs',maxEpochs, ...
    'InitialLearnRate',0.01, ...
    'GradientThreshold',1, ...
    'Shuffle','never', ...
    'Plots','training-progress',...
    'Verbose',0);
net = trainNetwork(X,Y',layers,options);
save('net.mat','net')
trainY=double(predict(net,X));
figure, ploterrhist(trainY-Y')
figure, plot(trainY,'-o')
hold on
plot(Y,'-^')
title('Train Results')
xlabel('Price Sequence #')
ylabel('Demand (MW)');
legend('biLSTM output','Actual Demand')
%% test network
clear X Y
demands=record(221:252,4);
orgin=record(221:252,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
testY=double(predict(net,X));
figure, ploterrhist(testY-Y'), title('test')
figure, plot(testY,'-o')
hold on
plot(Y,'-^')
title('Test Results')
xlabel('Price Sequence #')
ylabel('Demand (MW)');
legend('biLSTM output','Actual Demand')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Majid Farzaneh (2023). Demand prediction using bi-directional LSTM network .

[2]高明,郝妍.基于BiLSTM网络与误差修正的超短期负荷预测[J].综合智慧能源,2023,45(01):31-40.

🌈4 Matlab代码实现

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值