回归预测 | MATLAB实现DBN-ELM深度置信网络结合极限学习机多输入单输出回归预测

回归预测 | MATLAB实现DBN-ELM深度置信网络结合极限学习机多输入单输出回归预测

目录

    • 回归预测 | MATLAB实现DBN-ELM深度置信网络结合极限学习机多输入单输出回归预测
      • 预测效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

1
2
3

基本介绍

1.MATLAB实现DBN-ELM深度置信网络结合极限学习机多输入单输出回归预测;
2.多输入单输出回归预测。
3.深度信念网络,DBN,Deep Belief Nets,神经网络的一种。既可以用于非监督学习,类似于一个自编码机;也可以用于监督学习,作为分类器来使用。DBN由若干层神经元构成,组成元件是受限玻尔兹曼机(RBM)。
RBM是一种神经感知器,由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接。限制玻尔兹曼机和玻尔兹曼机相比,主要是加入了“限制”。限制玻尔兹曼机可以用于降维(隐层少一点),学习特征(隐层输出就是特征),深度信念网络(多个RBM堆叠而成)等。

1

模型描述

受限玻尔兹曼机(RBM)是一种具有随机性的生成神经网络结构,它本质上是一种由具有随机性的一层可见神经元和一层隐藏神经元所构成的无向图模型。它只有在隐藏层和可见层神经元之间有连接,可见层神经元之间以及隐藏层神经元之间都没有连接。并且,隐藏层神经元通常取二进制并服从伯努利分布,可见层神经元可以根据输入的类型取二进制或者实数值。

2

程序设计

  • 完整源码和数据获取方式:私信博主回复MATLAB实现DBN-ELM深度置信网络结合极限学习机多输入单输出回归预测
%受限玻尔兹曼机预训练程序
% This program trains Restricted Boltzmann Machine in which
% visible, binary, stochastic pixels are connected to
% hidden, binary, stochastic feature detectors using symmetrically
% weighted connections. Learning is done with 1-step Contrastive Divergence.   
% The program assumes that the following variables are set externally:
% maxepoch  -- maximum number of epochs
% numhid    -- number of hidden units 
% batchdata -- the data that is divided into batches (numcases numdims numbatches)
% restart   -- set to 1 if learning starts from beginning 
% 参数设置
epsilonw      = 0.01;   % Learning rate for weights 权值学习率
epsilonvb     = 0.01;   % Learning rate for biases of visible units可视节点的偏置学习率 
epsilonhb     = 0.01;   % Learning rate for biases of hidden units 隐含节点的偏置学习率
weightcost  = 0.0008;   %权重衰减系数
initialmomentum  = 0.5; %初始动量项
finalmomentum    = 0.9; %确定动量项[numcases,numdims ,numbatches]=size(batchdata);if restart ==1,restart=0;epoch=1;% Initializing symmetric weights and biases. vishid     = 0.1*randn(numdims, numhid);%可视节点到隐含节点之间的权值初始化hidbiases  = zeros(1,numhid);%隐含节点的初始化为0visbiases  = zeros(1,numdims);%可视节点偏置初始化为0poshidprobs = zeros(numcases,numhid);%初始化单个迷你块正向传播时隐含层的输出概率neghidprobs = zeros(numcases,numhid);posprods    = zeros(numdims,numhid);negprods    = zeros(numdims,numhid);vishidinc  = zeros(numdims,numhid);hidbiasinc = zeros(1,numhid);visbiasinc = zeros(1,numdims);%整个数据集正向传播时隐含层的输出概率batchposhidprobs=zeros(numcases,numhid,numbatches);
endfor epoch = epoch:maxepoch,%所有迭代次数%fprintf(1,'epoch %d\r',epoch); errsum=0;for batch = 1:numbatches, %每次迭代都遍历所有的数据块%fprintf(1,'epoch %d batch %d\r',epoch,batch); %%%%%%%%% 开始正向阶段的计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%data = batchdata(:,:,batch);      %每次迭代选择一个迷你块的数据,,每一行代表一个样本值%这里的数据并非二值的,严格来说,应该将其进行二值化poshidprobs = 1./(1 + exp(-data*vishid - repmat(hidbiases,numcases,1)));   %计算隐含层节点的输出概率,所用的是sigmoid函数%%%计算正向阶段的参数统计量%%%%%%%%%%%%%%%%%%%%batchposhidprobs(:,:,batch)=poshidprobs;posprods    = data' * poshidprobs;%用可视节点向量和隐含层节点向量的乘积计算正向散度统计量poshidact   = sum(poshidprobs);   %针对样本值进行求和,用于计算隐含节点的偏置posvisact = sum(data);             %对数据进行求和,用于计算可视节点的偏置,当迷你块中样本的个数为1时,% 求得的偏置向量中的又换宿相同,此时会影响预训练的结果%%%%%%%%% 正向阶段结束  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%poshidstates = poshidprobs > rand(numcases,numhid);%将隐含层的概率激活值poshidprobs进行0.1二值化,按照概率值大小来判定。rand(m,n)产生%m*n大小的矩阵,将poshidprobs中的值和rand产生的比较,如果大于随机矩阵对应位置的值,则将其相应位置为1,否则为0%%%%%%%%% 开始反向阶段的计算  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%negdata = 1./(1 + exp(-poshidstates*vishid' - repmat(visbiases,numcases,1)));%反向阶段计算可视节点的值neghidprobs = 1./(1 + exp(-negdata*vishid - repmat(hidbiases,numcases,1)));    %计算隐含层节点的概率值negprods  = negdata'*neghidprobs;%计算反向散度统计量neghidact = sum(neghidprobs);negvisact = sum(negdata); %%%%%%%%% 反向阶段结束 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%err= sum(sum( (data-negdata).^2 ));%计算训练集中原始数据和重构数据之间的重构误差errsum = err + errsum;if epoch>5,momentum=finalmomentum;         %在迭代更新参数过程中,前4次使用初始动量项,之后使用确定动量项elsemomentum=initialmomentum;end;%%%%%%%%%以下代码用于更新权值和偏置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vishidinc = momentum*vishidinc + ...%权值更新时的增量epsilonw*( (posprods-negprods)/numcases - weightcost*vishid);visbiasinc = momentum*visbiasinc + (epsilonvb/numcases)*(posvisact-negvisact);%可视层偏置更新时的增量hidbiasinc = momentum*hidbiasinc + (epsilonhb/numcases)*(poshidact-neghidact);%隐含层偏置更新时的增量vishid = vishid + vishidinc;%更新权值visbiases = visbiases + visbiasinc;%更新可视层偏置hidbiases = hidbiases + hidbiasinc;%更新隐含层偏置%%%%%%%%%%%%%%%% END OF UPDATES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end%fprintf(1, 'epoch %4i error %6.1f  \n', epoch, errsum); 
end;
%%%每次迭代结束后,显示训练集的重构误差

参考资料

[1] https://blog.csdn.net/article/details/126195343?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/article/details/126189867?spm=1001.2014.3001.5501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/80669.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何深入理解 Node.js 中的流(Streams)

Node.js是一个强大的允许开发人员构建可扩展和高效的应用程序。Node.js的一个关键特性是其内置对流的支持。流是Node.js中的一个基本概念,它能够实现高效的数据处理,特别是在处理大量信息或实时处理数据时。 在本文中,我们将探讨Node.js中的流…

计算机竞赛 基于GRU的 电影评论情感分析 - python 深度学习 情感分类

文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖,适合作为竞…

【Cortex-M3权威指南】学习笔记1 - 概览与基础

介绍 三种主流 Cortex 款式 款式 A:设计用于高性能的“开放应用平台” 款式 R:用于高端的嵌入式系统,尤其是那些带有实时要求的 款式 M:用于深度嵌入的,单片机风格的系统中 指令集发展 ARM 处理器一直支持两种形式上…

【Unity自制手册】游戏基础API大全

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Eduma主题 - 线上教育WordPress主题/网站

Eduma主题 – 线上教育WordPress主题是为教育网站、LMS、培训中心、课程中心、学院、大学、学校、幼儿园而制作的。基于我们使用以前的主题eLearning WP构建WordPress LMS的经验,Education WP是下一代,也是围绕WordPress最好的教育主题之一,它…

清华源的链接太多老崩溃,我把它拷过来,需要什么点什么

建议按照字母分个类可能会好点 把链接这里改为 哈哈就不卡了,浏览器也不崩溃了还能很快就链接成功 Links for pandas这是链接 这个小技巧教给大家请给我点个赞

详细手机代理IP配置

嗨,亲爱的朋友们!作为一家代理产品供应商,我知道有很多小伙伴在使用手机进行网络爬虫和数据采集时,常常会遇到一些IP限制的问题。别担心!今天我要给大家分享一下手机IP代理的设置方法,让你们轻松应对这些限…

【LUBAN】【功能验证】至简投屏功能之Android有线连接方式测试

1、概述 至简投屏功能之Android有线连接方式支持至简自带应用至加的投屏功能和谷歌官方的Android auto功能。 支持的功能范围列举如下: 1、屏幕投屏(支持自动旋转屏)2、音视频播放(抖音、百度地图等)3、车机反控手机…

Spring 为什么使用三级缓存解决循环依赖

文章目录 前言1. 什么是循环依赖1.1 互相依赖1.2 递归依赖 2. Sping中循环依赖有什么问题?3. 什么是三级缓存4. Spring 可以解决哪些情况的循环依赖? 二级缓存作用——普通循环依赖实操环节1. 实例化类A对象2. 实例化类B对象3. B对象完成创建4.继续创建A…

C 实现Window/DOS 键盘监听事件

今天是重新复习C语言实现的第一天,今天想编写C 对Windwos/Dos 键盘事件的学习。但是我在安装Visual Studio 2022 没有安装MFC 框架,今天记录下VS追加 MFC框架。 Visual Studio 2022 追加MFC 1、打开vs,点击创建新项目,右侧滑动框…

大数据风控介绍

众所周知,金融是数据化程度最高的行业之一,也是人工智能和大数据技术重要的应用领域。随着大数据收集、存储、分析和模型技术日益成熟,大数据技术逐渐应用到金融风控的各个环节。个推作为专业的数据智能服务商,拥有海量数据资源&a…

Unity - 制作package 插件包

1.将制作的插件包代码放置一个根目录下 2.在跟目录下创建package.json文件 //package.json {"name": "com.unity.customlibrary", //插件包名:com.组织名.包名"displayName": "CustomLibrary", //显示的插件名"v…