-
2020-11-21 22:49:34
- 原理网址:深度学习-深度信念(置信)网络(DBN)-从原理到实现(DeepLearnToolBox)
- 需要注意: 第一个网址中的代码要安装DeepLearnToolBox工具箱以后才可以运行
- 工具箱免费下载网址:github-DeepLearnToolbox
- 工具箱安装网址:Matlab深度学习笔记——安装deep learning toolbox
更多相关内容 -
基于python实现的DBN网络对自己的数据集进行故障诊断
2022-04-04 21:45:28完整的DBN网络对自己的数据集进行故障诊断实例 -
DBN网络的深度确定方法
2021-01-14 02:36:00针对DBN网络隐含层层数难以选择的问题, 首先从数学生物学角度分析了随机初始化的梯度下降法导致网络训练失败的原因, 并进行验证, 证明了RBM重构误差与网络能量的正相关定理; 然后根据隐含层和误差的关系, 提出一种... -
在TensorFlow框架下实现DBN网络源码
2017-08-19 17:19:59在TensorFlow框架下实现DBN网络,帮助你快速的入门学习 -
DBN in python.rar_DBN分类_DBN网络python_dbn python分类_dbn 分类_python d
2022-07-15 07:11:25使用python语言实现的深信度置信网络(DBN),用于分类 -
DBN_深度学习_深度学习预测_深度置信_tensorflow实现DBN_深度置信网络
2021-09-11 07:57:25基于Tensorflow的典型深度学习模型-深度置信网络预测程序,方便拓展,测试文件在test文件夹下 -
DBN网络详解
2019-10-17 16:20:05经典的DBN网络结构 是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示. DBN 在训练模型的过程中主要分为两步: 第 1 步:分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到...版权声明:本文为博主转载过来的文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功。本人在多年之前也曾接触过神经网络。本系列文章主要记录自己对深度神经网络的一些学习心得。
简要描述深度神经网络模型。
1. 自联想神经网络与深度网络
自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入。很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在。所以,我们说,输出是对输入的一种重构。其网络结构可以很简单的表示如下:
如果我们在上述网络中不使用sigmoid函数,而使用线性函数,这就是PCA模型。中间网络节点个数就是PCA模型中的主分量个数。不用担心学习算法会收敛到局部最优,因为线性BP网络有唯一的极小值。
在深度学习的术语中,上述结构被称作自编码神经网络。从历史的角度看,自编码神经网络是几十年前的事情,没有什么新奇的地方。
既然自联想神经网络能够实现对输入数据的重构,如果这个网络结构已经训练好了,那么其中间层,就可以看过是对原始输入数据的某种特征表示。如果我们把它的第三层去掉,这样就是一个两层的网络。如果,我们把这个学习到特征再用同样的方法创建一个自联想的三层BP网络,如上图所示。换言之,第二次创建的三层自联想网络的输入是上一个网络的中间层的输出。用同样的训练算法,对第二个自联想网络进行学习。那么,第二个自联想网络的中间层是对其输入的某种特征表示。如果我们按照这种方法,依次创建很多这样的由自联想网络组成的网络结构,这就是深度神经网络,如下图所示:
注意,上图中组成深度网络的最后一层是级联了一个softmax分类器。
深度神经网络在每一层是对最原始输入数据在不同概念的粒度表示,也就是不同级别的特征描述。
这种层叠多个自联想网络的方法,最早被Hinton想到了。
从上面的描述中,可以看出,深度网络是分层训练的,包括最后一层的分类器也是单独训练的,最后一层分类器可以换成任何一种分类器,例如SVM,HMM等。上面的每一层单独训练使用的都是BP算法。 相信这一思路,Hinton早就实验过了。
2. DBN神经网络模型
使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络。然而,有一种更好的神经网络模型,这就是受限玻尔兹曼机。使用层叠波尔兹曼机组成深度神经网络的方法,在深度学习里被称作深度信念网络DBN,这是目前非常流行的方法。下面的术语,将把自联想网络称作自编码网络autoencoder.。通过层叠自编码网络的深度网络在深度学习里另外一个属于叫栈式自编码网络。
经典的DBN网络结构 是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.
第 1 步:分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;
第 2 步:在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.而且每一层 RBM 网络只能确保自身层内的 权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.上述训练模型中第一步在深度学习的术语叫做预训练,第二步叫做微调。最上面有监督学习的那一层,根据具体的应用领域可以换成任何分类器模型,而不必是BP网络。
3. 深度信念网络的应用
由于自编码网络可以对原始数据在不同概念的粒度上进行抽象,深度网络一种自然的应用是对数据进行压缩或者叫降维。
胡邵华等,他们用一种自编码网络实现了对经典的"瑞士卷"数据的重构:
" 瑞士卷"数据是经典的机器学习中难于分类的数据之一,其隐含的数据内在模式难以在二维数据中描述。然而, 胡邵华等,采用深度信念网络实现了对三维瑞士卷数据的2维表示,其自编码网络节点大小依次为3-100-50-25-10-2. 具体的实现细节请参考文献:胡邵华、宋耀良:基于autoencoder网络的数据降维与重构。
深度神经网络的另一个常见的应用是特征提取。
文献:Philippe Hamel and Douglas Eck, LEARNING FEATURES FROM MUSIC AUDIO WITH DEEP BELIEF NETWORKS.
通过训练一个5层的深度网络提取音乐的特征,用于音乐风格的分类,其分类精度比基于梅尔倒谱系数特征分类的方法提到了14个百分点。
他们的实现思路非常简单,用上述层叠的多个RBM网络组成深度网络结构来提取音乐的特征。输入的原始数据是经过分帧,加窗之后的信号的频谱。分类器采用的是支撑矢量机SVM。对比的方法则是提取MFCC特征系数,分类器同样采用SVM。更多的细节和实验结果可以参考上面提到的文献。
深度网络是一种良好的无监督学习方法,其特征提取功能能够针对不同概念的粒度大小,能够在很多领域得到广泛的应用。通常,DBN主要用于对一维数据的建模比较有效,例如语音。而通过级联多层卷积网络组成深度网络的模型主要用于二维数据,例如图像等。
通过下面的图以及上面的内容,可以更加深入的理解DBN:深度信念网络算法。
参考文献:
[1]Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks. Science, vol. 313, pp. 504-507, 2006.
[2]Hinton G E, Osindero S, Teh Y W. A fast learning algorithm for deep belief nets. Neural computation, vol. 18, pp. 1527-1554, 2006.
[3]Xie, Jipeng, et al. "Learning features from High Speed Train vibration signals with Deep Belief Networks." Neural Networks (IJCNN), 2014 International Joint Conference on. IEEE, 2014.
[4]Bengio Y, Lamblin P, Popovici D, et al. Greedy layer-wise training of deep networks. Advances in neural information processing systems, vol. 19, pp. 153-160, 2007.
[5]Salakhutdinov R. Learning deep generative models. Diss. University of Toronto, 2009.
[6]Hinton G. A practical guide to training restricted Boltzmann machines. Neural Networks: Tricks of the Trade, pp. 599-619, 2012.
[7]Bengio Y. Learning deep architectures for AI. Foundations and trends® in Machine Learning, vol. 2, pp. 1-127, 2009.[8]http://blog.csdn.net/celerychen2009/article/details/9079715
-
DBN深度置信网络源代码
2021-08-01 16:20:12DBN源代码,有详细注释,运行前先把deeplearn工具箱解压到matlab目录下。 -
回归预测 | MATLAB实现DBN(深度置信网络)多输入单输出(完整源码和数据)
2022-05-07 19:51:56回归预测 | MATLAB实现DBN(深度置信网络)多输入单输出(完整源码和数据) 多输入单输出,运行环境MATLAB2018b及以上。 -
深度置信网络_预测未来负荷大小_DBN_matlab源码
2022-03-02 21:13:10资源名:深度置信网络_预测未来负荷大小_DBN_matlab源码 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:... -
matlab的egde源代码-LBP-DBN-face-recognition:使用LBP特征提取算法提取人脸特征,DBN网络来实现人脸识别,
2021-05-22 00:04:33使用LBP特征提取算法提取人脸特征,DBN网络来实现人脸识别,测试数据库-ORL数据库,识别率可达90%以上 ###工程使用方法: clone下工程,要根据实际情况修改test_example_DBN.m中的文件路径 我们在该文件中,a=imread... -
深度置信网络(DBN)【经典的DBN网络结构是由若干层 RBM(受限波尔兹曼机)和一层 BP 组成的一种深层神经...
2022-07-26 23:20:45经典的DBN网络结构是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示. DBN 在训练模型的过程中主要分为两步: 第1步:按照顺序依次训练每一层RBM网络,确保特征向量映射到不同特征空间时,能保留尽...DBN (deep belief network,深度置信网络),是使用RBM(Restricted Boltzmann Machines,受限波尔兹曼机 )构成的一种深度神经网络。
一、RBM简介
RBM属于一种无监督学习的方法,无监督学习的目的是最大可能地拟合训练数据。
下图为RBM的结构,其中下层神经元组成显层 (visible layer),由显元 (visible units) 组成,用于输入数据;上层神经元组成隐层(Hidden layer),由隐元 (hidden units) 组成,用于特征提取。
二、训练DBN
训练 DBN 的过程是一层一层地进行的。在每一层中,用数据向量来推断隐层,再把这一隐层当作下一层 (高一层) 的数据向量。
经典的DBN网络结构是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.
DBN 在训练模型的过程中主要分为两步:-
第1步:按照顺序依次训练每一层RBM网络,确保特征向量映射到不同特征空间时,能保留尽可能多的特征信息;
-
第2步:在DBN最后一层设置BP网络,同时将最后一个RBM的输出特征向量作为BP网络的输入特征向量,有监督地训练实体关系分类器。接着反向传播网络将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络。
在训练模型中,第1步称作预训练,第2步称作微调。有监督学习不一定是BP网络,可以根据需要换成任何分类器模型。
DBN算法本质
从其非监督学习的部分来讲,目的是尽可能地保留原始特征的特点,同时降低特征的维度;
从其有监督学习的部分来讲,目的在于使得分类错误率尽可能地小。
不论是监督学习还是非监督学习,DBN算法本质都是Feature Learning的过程,即如何得到更好的特征表达。
参考资料:
深度置信网络(DBN) -
-
DBN_DBN神经网络matlab_DBN预测_dbn_DBN预测
2021-09-11 03:05:0717亲自编写可以使用 -
基于DBN网络和高阶累积量的通信信号调制识别研究。
2021-03-15 01:41:17基于DBN网络和高阶累积量的通信信号调制识别研究。 -
【预测模型】基于深度置信网DBN网络实现电机侧有功功率预测matlab源码含GUI.md
2021-08-09 13:11:11【预测模型】基于深度置信网DBN网络实现电机侧有功功率预测matlab源码含GUI.md -
深度置信网络DBN算法实现 matlab
2018-07-25 17:26:22深度置信网络DBN的matlab算法实现,可直接运行,程序运行采样的数据库为MNIST手写数字数据库。 -
在TensorFlow框架下实现DBN网络
2017-06-07 17:33:20前言 在上一篇博客‘Windows下安装Tensorflow’的基础上,实现深度学习网络——DBN网络,以经典的手写字体识别为例子。一、下载手写字体数据集,官方前言
在上一篇博客‘Windows下安装Tensorflow’的基础上,实现深度学习网络——DBN网络,以经典的手写字体识别为例子。一、下载手写字体数据集,官方网址为:http://yann.lecun.com/exdb/mnist/
下载:
train-images-idx3-ubyte.gz: training set images (9912422 bytes)
train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)二、参考github上的DBN实现源码为:https://github.com/myme5261314/dbn_tf
原作者实现的过程:https://gist.github.com/myme5261314/005ceac0483fc5a581cc
注:博主选择的python编辑器为pycharm编辑器,在windows下安装tensorflow后,需要在pycharm中配置路径,具体参考:http://blog.csdn.net/wx7788250/article/details/60877166
三,将github上下载的代码导入到pycharm中,会有几处错误,下面一一修改:
问题1:官方PIL(python image library)目前只支持python2.7及以下版本,所以当导入代码后,会提示ImportError: No module named 'Image'
也就是没有import到image这个库。
解决办法:下载非官方库从http://www.lfd.uci.edu/~gohlke/pythonlibs/ 该网址上提供了支持64位系统的PIL文件,网站上叫做Pillow,下载下来,是个 .whl 结尾的文件,这个其实就是python使用的一种压缩文件,后缀名改成zip,可以打开。
这个需要用 pip 安装,在cmd下,进入该.whl下载的文件夹,输入pip install Pillow‑4.1.1‑cp35‑cp35m‑win_amd64.whl
即可安装。
注意,这里有一段 Pillow is a replacement for PIL, the Python Image Library, which provides image processing functionality and supports many file formats.
Usefrom PIL import Image
instead ofimport Image
.
意思就是说,要用 ‘ from PIL import Image’ 代替 ‘import Image’
也就是将导入的程序代码中import Image 改为 from PIL import Image 即可。from PIL import Image
问题2:代码中会有几处print的错误,由于版本问题在python3.X中,print的输出要加‘()’,所以修改后的样子为:
print (sess.run( err_sum, feed_dict={X: trX, rbm_w: n_w, rbm_vb: n_vb, rbm_hb: n_hb}))
问题3: 修改上述问题后,看似没有错误了,运行代码rbm_MNIST_test.py发现依旧存在问题,问题描述如下:
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe D:/hlDL/tensorflow-DBN/dbn_tf-master/rbm_MNIST_test.py Traceback (most recent call last): File "D:/hlDL/tensorflow-DBN/dbn_tf-master/rbm_MNIST_test.py", line 16, in <module> mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) Extracting MNIST_data/train-images-idx3-ubyte.gz File "D:\hlDL\tensorflow-DBN\dbn_tf-master\input_data.py", line 150, in read_data_sets train_images = extract_images(local_file) File "D:\hlDL\tensorflow-DBN\dbn_tf-master\input_data.py", line 39, in extract_images buf = bytestream.read(rows * cols * num_images) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\gzip.py", line 274, in read return self._buffer.read(size) TypeError: only integer scalar arrays can be converted to a scalar index
修改方式:在input_data.py中找到代码
def _read32(bytestream): dt = numpy.dtype(numpy.uint32).newbyteorder('>') return numpy.frombuffer(bytestream.read(4), dtype=dt)
修改为:
def _read32(bytestream): dt = numpy.dtype(numpy.uint32).newbyteorder('>') return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]
在末尾出加上[0],再次运行,问题得到解决。这个问题似乎是新版本的Numpy存在的,最近的更新中,将单个元素数组作为一个标量来进行索引。
四、运行结果
注:根据具体代码,输出结果每10000次输出一次精度,共迭代60000次,同时每10000次输出一个识别结果的image,命名为:rbm_x.png。这里贴出第一幅识别结果和最后一次识别结果图如下:
rbm_0
rbm_5 -
DBN1_DNNPYTHON_
2021-10-03 07:43:22DBN手写数字识别的python代码,不足之处请多多指教 -
DBN_;DBN_nan_深度信念_dbn回归_深度信念网络
2021-09-11 10:08:54深度信念网络程序详解,可以实现数据回归和分类,自动提取关键成分。 -
DBN(深度置信网络)
2022-06-01 16:11:03所以反向传播网络还将错误信息自上向下传播至每一层DBM,微调整个DBN网络,RBM网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练... -
DBN网络开发工具包
2013-12-06 12:35:05适合DBN,HMM,KFM,BN等相关内容,进行步态检测,路径规划,语音识别,视频跟踪等源代码。 -
DBN深度置信网络原文PDF
2021-11-07 20:39:46深度置信网络、受限波尔曼兹机原文PDF -
dbn pytorch
2021-04-26 11:45:23主要使用pytorch 实现的DBN网络,用于对数据做回归,单个数据维度为(N,21),其中N为不定长,输出则为(N,1),对应N个值 -
DBN网络例子代码有错
2021-04-20 03:39:19function test_example_DBN clear; clc; load mnist_uint8; train_x = double(train_x) / 255; test_x = double(test_x) / 255; train_y = double(train_y); test_y = double(test_y); %% ex1 train a 100 ... -
DBN_dbn_深度置信网络_
2021-10-02 10:17:47DBNs由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层...这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。 -
DBN深度信念网络
2022-04-07 21:10:42三、DBN 3.1 生成模型 深度信念网络是一个生成模型,用来生成符合特定分布的样本。隐变量用来描述在可观测变量之间的高阶相关性。假如加入服从分布 ()的训练数据,通过训练得到一个深度信念网络。 生成样本时,先在... -
【DBN预测】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码
2022-01-04 21:36:001 简介 ...已成为深度学习领域的研究热点.DBN连接权重采用结合粒子群优化算法优化,避免出现由随机初始化导致的局部最优解现象,从而提高了DBN网络预测性能.最后,案例测试显示了所提出模型的有效性. -
【学习笔记】【DBN】十九——深度信念网络DBN
2021-10-12 20:06:15本篇简要介绍深度信念网络DBN,是一个不太常见的神经网络。 一、DBN概述 深度信念网络(Deep Belief Nets,DBN),既可用于非监督学习,类似于一个自编码机;也可以用于监督学习,作为分类器使用。 从非监督学习... -
DBN实例1深度信念网络,dbn深度置信网络,matlab
2021-09-10 17:38:19Matlab编写的深度学习,DBN深度信念神经网络