多层感知机和神经网络_CNN采用多层感知机进行分类

多层感知机和神经网络_CNN采用多层感知机进行分类单独的ESN仿真:ESN的运行结果如下所示:这个部分的误差为:0.0435ESN部分就不多做介绍了,你应该了解的,下面我们对ESN和BP改进和极限学习改进分别进行修改和说明,并进行仿真。ESN+BP的仿真:首先,在原始的ESN中,权值的计算是通过pseudoinverse.m这个函数进行计算的,其主要内容就是:即:这里,我们的主要方法…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

单独的ESN仿真:

        ESN的运行结果如下所示:

多层感知机和神经网络_CNN采用多层感知机进行分类

         这个部分的误差为:

         0.0435

         ESN部分就不多做介绍了,你应该了解的,下面我们对ESN和BP改进和极限学习改进分别进行修改和说明,并进行仿真。

ESN+BP的仿真:

        首先,在原始的ESN中,权值的计算是通过pseudoinverse.m这个函数进行计算的,其主要内容就是:

       多层感知机和神经网络_CNN采用多层感知机进行分类

即:

      多层感知机和神经网络_CNN采用多层感知机进行分类

        这里,我们的主要方法为:

        将多层感知机和神经网络_CNN采用多层感知机进行分类计算得到的权值作为bp神经网络迭代的初始值,然后以这个初始值为迭代过程的第一个值,不断的训练迭代,最后得到ESN-BP输出的权值,然后进行测试。

         因此,其基本思路就是通过B-1T得到初始权值,然后通过bp网络进行迭代,得到最后优化后的值。

多层感知机和神经网络_CNN采用多层感知机进行分类

 计算后的误差为0.0427

        从上面的对比可知,采用BP神经网络进行权值系数的非线性更新之后,其误差可以进一步降低。但提升性能有限。

ESN+极限学习算法的仿真:

        这个部分的原理和上面的相同,不同的是,我们需要使用极限学习方法对ESN网络的中的权值进行更新。

多层感知机和神经网络_CNN采用多层感知机进行分类

 误差为:0.1050

下面给出整个算法的流程框图:

多层感知机和神经网络_CNN采用多层感知机进行分类

2.部分核心代码 

clc;
clear; 
close all;
warning off;
RandStream.setDefaultStream(RandStream('mt19937ar','seed',1));
addpath 'func\data_process\'
addpath 'func\Initial_ESN\'
addpath 'func\train_esn\'
addpath 'func\test_esn\'
 
load data.mat
%数据分割
train_fraction                           = 0.5;
[trainInputSequence, testInputSequence]  = split_train_test(inputSequence,train_fraction);
[trainOutputSequence,testOutputSequence] = split_train_test(outputSequence,train_fraction);

%generate an esn 
nInputUnits          = 2; 
nInternalUnits       = 32; 
nOutputUnits         = 1; 
esn                  = generate_esn(nInputUnits,nInternalUnits,nOutputUnits,'spectralRadius',0.5,'inputScaling',[0.1;0.1],'inputShift',[0;0],'teacherScaling',[0.3],'teacherShift',[-0.2],'feedbackScaling',0,'type','plain_esn'); 
esn.internalWeights  = esn.spectralRadius * esn.internalWeights_UnitSR;

%train the ESN
%discard the first 100 points
nForgetPoints        = 100; 
%这里,就固定设置一种默认的学习方式,其他的就注释掉了
[trainedEsn,stateMatrix] = train_esn(trainInputSequence,trainOutputSequence,esn,nForgetPoints) ; 

%test the ESN
nForgetPoints        = 100 ; 
predictedTrainOutput = test_esn(trainInputSequence, trainedEsn, nForgetPoints);
predictedTestOutput  = test_esn(testInputSequence,  trainedEsn, nForgetPoints) ; 

figure;
plot(testOutputSequence(nForgetPoints+4:end),'b');
hold on
plot(predictedTestOutput,'r');
legend('原数据','预测数据');
title('ESN-ELM:测试数据的预测');


%计算测试数据的预测结果:
estimatedOutput = predictedTestOutput(1:end-3);
correctOutput   = testOutputSequence(nForgetPoints+4:end);

nEstimatePoints = length(estimatedOutput) ; 
nForgetPoints   = length(correctOutput) - nEstimatePoints ;  
correctVariance = 1;
meanerror       = sum((estimatedOutput - correctOutput).^2)/nEstimatePoints ; 
err             =(sqrt(meanerror./correctVariance));
err

3.参考文献

A05-22

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179752.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ItemDataBound的用法

    ItemDataBound的用法原理:在生成datalist列时ItemDataBound触发,也就是说每生成一列就触发一次。这个事件的触发要早于itemcommand.  datalist里面嵌套datalist:内层控件数据绑定与事件声明在外层的ItemDataBind中实现private void dlFileType_ItemDataBound(object sender, System.Web.UI….

    2022年10月13日
    5
  • Android 垂直同步和三重缓冲[通俗易懂]

    Android 垂直同步和三重缓冲[通俗易懂]帧率是每秒钟内游戏能够渲染的画面数量,取决于电脑的硬件配置。屏幕刷新率是屏幕在每秒钟能刷新的次数,单位是赫兹(Hz),这取决于显示器的硬件配置。假设CPU/GPU性能高在你的游戏中能够获得超过200帧的画面,但是由于显示器刷新率只有30Hz,只能“抓取”其中的30帧进行显示,最终你所看到的画面也是30帧。屏幕刷新率越高,你在每秒钟内就能看到越多的画面,因此对你来说,画面也就更加“流畅”、“清晰”。一个页面的渲染流程大致分为一下几步,CPU将界面处理对应的图形数据,然后GPU将图形数据栅格化,最后屏

    2022年5月21日
    79
  • 2022.01idea激活码[最新免费获取]

    (2022.01idea激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    155
  • 运行出现Server Tomcat v8.5 Server at localhost failed to start.和A child container failed during start…[通俗易懂]

    出现问题:解决方法:1、看servlet文件中的@WebServlet“()”,里面是否少了/字符,如图:加上即可,有问题随时留言,欢迎您的咨询!转载于:https://www.cnblogs.com/weibanggang/p/9303015.html…

    2022年4月8日
    48
  • DjangoRestFramework序列化完整图片url

    DjangoRestFramework序列化完整图片urlDRF图片默认序列化目录格式一般为media/xxx.png,但这不是url,没法直接访问,在前端还需要进行一次字符串拼接,十分麻烦。serializer=CategorySerializer(category)returnResponse(serializer.data,status=status.HTTP_200_OK)如上面的代码,此时如果CategorySerializ…

    2022年9月22日
    4
  • laravel获取当前认证用户登录

    laravel获取当前认证用户登录

    2021年11月5日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号