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

m分别使用ESN网络,ESN+RBF神经网络以及ESN+Volterra网络进行数据预测对比仿真

时间:2022/12/27 16:40:19 点击:

  核心提示:05_024_m,包括程序操作录像+说明文档+参考文献...

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

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

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

点击店铺

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

2.部分仿真图预览



3.算法概述

        ESN是Jaeger于2001年提出一种新型递归神经网络,ESN一经提出便成为学术界的热点,并被大量地应用到各种不同的领域中,包括动态模式分类、机器人控制、对象跟踪核运动目标检测、事件监测等,尤其是在时间序列预测问题上,取得了较为突出的贡献。

       使用RBF网络,对ESN得到的W权值进行迭代跟新,我这里,使用的方法为是将RBF网络构架整合到ESN中,使得ESN的权值输出为非线性模型,从而提升性能。

4.部分源码

%lorenz_series

sequenceLength = 2100;

load data.mat

%每个变量需提取的数目

ext            = 2; 

inputSequence  = zeros(2098,2*ext);

outputSequence = zeros(2098,1) ;

for i=ext+1:2100

    outputSequence(i-ext,1)=lorenz_series(i,1);

    for j=1:ext

        inputSequence(i-ext,j)=lorenz_series(i-j,1);

    end

    Ystart=ext+1;

    Yend=2*ext;

    for k=Ystart:Yend

        neednum=k-ext;

        inputSequence(i-ext,k)=lorenz_series(i-neednum,2);

    end

end

%ESN

%split the data into train and test

train_fraction = 0.5 ; % use 50% in training and 50% in testing

[trainInputSequence, testInputSequence]  = split_train_test(inputSequence,train_fraction);

[trainOutputSequence,testOutputSequence] = split_train_test(outputSequence,train_fraction);

%generate an esn 

nInputUnits    = 4; 

nInternalUnits = 100; 

nOutputUnits   = 1; 

esn = generate_esn(nInputUnits,nInternalUnits,nOutputUnits, ...

                   'spectralRadius',0.9,...

                   'inputScaling',[0.1;0.1;0.1;0.1],...

                   'inputShift',[0;0;0;0],...

                   'teacherScaling',0.3,...

                   'teacherShift',-0.2,...

                   'feedbackScaling',0,...

                   'type', 'plain_esn'); 

esn.internalWeights = esn.spectralRadius * esn.internalWeights_UnitSR;

%train the ESN

nForgetPoints            = 100 ; % discard the first 100 points

[trainedEsn,stateMatrix] = train_esn(trainInputSequence, trainOutputSequence, esn, nForgetPoints) ; 

predictedTrainOutput = test_esn(trainInputSequence, trainedEsn, nForgetPoints);

predictedTestOutput  = test_esn(testInputSequence,  trainedEsn, nForgetPoints) ; 

nPlotPoints          = length(predictedTestOutput);  

05_024_m

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