您现在的位置:首页 >> 机器学习 >> 内容

基于LSTM网络的时间序列数据预测matlab性能仿真

时间:2023/3/13 23:01:18 点击:

  核心提示:A504,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJaXlJ9u

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

       LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出 。LSTM有很多个版本,其中一个重要的版本是GRU(Gated Recurrent Unit),根据谷歌的测试表明,LSTM中最重要的是Forget gate,其次是Input gate,最次是Output gate。

4.部分源码

......................................................................

numFeatures     = wd;

numResponses    = 1;

numHiddenUnits  = 128;

layers = [ sequenceInputLayer(numFeatures)

    lstmLayer(numHiddenUnits)

    dropoutLayer(0.12)

    lstmLayer(2*numHiddenUnits)

    dropoutLayer(0.12)

    fullyConnectedLayer(numResponses)

    regressionLayer];

options = trainingOptions('adam', ...

    'MaxEpochs',200, ...

    'GradientThreshold',1, ...

    'InitialLearnRate',0.005, ...

    'LearnRateSchedule','piecewise', ...

    'LearnRateDropPeriod',125, ...

    'LearnRateDropFactor',0.2, ...

    'Verbose',0, ...

    'Plots','training-progress');

net    = trainNetwork(XTrain,YTrain,layers,options);

Xall   = wdata_origin(:, 1:end-1)';

Yall   = wdata_origin(:, end)';

YPred  = predict(net,Xall,'MiniBatchSize',1);

rmse   = mean((YPred(:)-Yall(:)).^2)

figure

subplot(211)

plot(data_x(1:length(Yall)), Yall)

hold on

plot(data_x(1:length(Yall)),YPred,'r-o')

legend(["Real" "Predict"])

ylabel("Data")

 

subplot(212)

stem(data_x(1:length(Yall)), YPred - Yall)

xlabel("Time")

ylabel("Error")

title('LSTM预测误差');

A504

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168