精华内容
下载资源
问答
  • DBN网络

    2020-11-21 22:49:34
    原理网址:深度学习-深度信念(置信)网络DBN)-从原理到实现(DeepLearnToolBox) 需要注意:第一个网址中的代码要安装DeepLearnToolBox工具箱以后才可以运行 工具箱免费下载网址:github 工具箱安装网址:Matlab...
    
    

    另附:
    原理网址:链接1
    代码网址:链接2
    代码架构解释网址:链接3

    展开全文
  • 针对DBN网络隐含层层数难以选择的问题, 首先从数学生物学角度分析了随机初始化的梯度下降法导致网络训练失败的原因, 并进行验证, 证明了RBM重构误差与网络能量的正相关定理; 然后根据隐含层和误差的关系, 提出一种...
  • 在TensorFlow框架下实现DBN网络,帮助你快速的入门学习
  • 基于DBN网络和高阶累积量的通信信号调制识别研究。
  • 在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.
    Use from PIL import Image instead of import 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

    展开全文
  • 使用LBP特征提取算法提取人脸特征,DBN网络来实现人脸识别,测试数据库-ORL数据库,识别率可达90%以上 ###工程使用方法: clone下工程,要根据实际情况修改test_example_DBN.m中的文件路径 我们在该文件中,a=imread...
  • DBN网络详解

    2019-10-17 16:20:05
     经典的DBN网络结构 是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.    DBN 在训练模型的过程中主要分为两步:  第 1 步:分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到...
    版权声明:本文为博主转载过来的文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    原文链接:https://blog.csdn.net/NIeson2012/article/details/52184189

    深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功。本人在多年之前也曾接触过神经网络。本系列文章主要记录自己对深度神经网络的一些学习心得。


    简要描述深度神经网络模型。


    1.  自联想神经网络与深度网络


          自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入。很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在。所以,我们说,输出是对输入的一种重构。其网络结构可以很简单的表示如下:

      


              如果我们在上述网络中不使用sigmoid函数,而使用线性函数,这就是PCA模型。中间网络节点个数就是PCA模型中的主分量个数。不用担心学习算法会收敛到局部最优,因为线性BP网络有唯一的极小值。


          在深度学习的术语中,上述结构被称作自编码神经网络。从历史的角度看,自编码神经网络是几十年前的事情,没有什么新奇的地方。

     


             既然自联想神经网络能够实现对输入数据的重构,如果这个网络结构已经训练好了,那么其中间层,就可以看过是对原始输入数据的某种特征表示。如果我们把它的第三层去掉,这样就是一个两层的网络。如果,我们把这个学习到特征再用同样的方法创建一个自联想的三层BP网络,如上图所示。换言之,第二次创建的三层自联想网络的输入是上一个网络的中间层的输出。用同样的训练算法,对第二个自联想网络进行学习。那么,第二个自联想网络的中间层是对其输入的某种特征表示。如果我们按照这种方法,依次创建很多这样的由自联想网络组成的网络结构,这就是深度神经网络,如下图所示:

                                                   

          注意,上图中组成深度网络的最后一层是级联了一个softmax分类器。


          深度神经网络在每一层是对最原始输入数据在不同概念的粒度表示,也就是不同级别的特征描述。


          这种层叠多个自联想网络的方法,最早被Hinton想到了。


           从上面的描述中,可以看出,深度网络是分层训练的,包括最后一层的分类器也是单独训练的,最后一层分类器可以换成任何一种分类器,例如SVM,HMM等。上面的每一层单独训练使用的都是BP算法。 相信这一思路,Hinton早就实验过了。


    2. DBN神经网络模型

             

            使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络。然而,有一种更好的神经网络模型,这就是受限玻尔兹曼机。使用层叠波尔兹曼机组成深度神经网络的方法,在深度学习里被称作深度信念网络DBN,这是目前非常流行的方法。下面的术语,将把自联想网络称作自编码网络autoencoder.。通过层叠自编码网络的深度网络在深度学习里另外一个属于叫栈式自编码网络。


            经典的DBN网络结构 是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.

                        
                 DBN 在训练模型的过程中主要分为两步:
                 第 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网络开发工具包

    2013-12-06 12:35:05
    适合DBN,HMM,KFM,BN等相关内容,进行步态检测,路径规划,语音识别,视频跟踪等源代码。
  • function 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 ...

    function 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 hidden unit RBM and visualize its weights

    rand('state',0)

    dbn.sizes = [100];

    opts.numepochs =   1;

    opts.batchsize = 100;

    opts.momentum  =   0;

    opts.alpha     =   1;

    dbn = dbnsetup(dbn, train_x, opts);

    dbn = dbntrain(dbn, train_x, opts);

    figure; visualize(dbn.rbm{1}.W');   %  Visualize the RBM weights

    %%  ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NN

    rand('state',0)

    %train dbn

    dbn.sizes = [100 100];

    opts.numepochs =   1;

    opts.batchsize = 100;

    opts.momentum  =   0;

    opts.alpha     =   1;

    dbn = dbnsetup(dbn, train_x, opts);

    dbn = dbntrain(dbn, train_x, opts);

    %unfold dbn to nn

    nn = dbnunfoldtonn(dbn, 10);

    nn.activation_function = 'sigm';

    %train nn

    opts.numepochs =  1;

    opts.batchsize = 100;

    nn = nntrain(nn, train_x, train_y, opts);

    [er, bad] = nntest(nn, test_x, test_y);

    assert(er < 0.10, 'Too big error');

    怎么运行到这一句出错了呢?好郁闷

    epoch 1/1. Average reconstruction error is: 65.7645

    epoch 1/1. Average reconstruction error is: 65.7645

    epoch 1/1. Average reconstruction error is: 10.8421

    ??? Attempted to access lmisys(5); index out of bounds because numel(lmisys)=4.

    Error in ==> lmiunpck at 23

    rs=lmisys(4); rv=lmisys(5);  % row sizes of LMISET,LMIVAR

    Error in ==> nnsetup at 26

    [LMI_set,LMI_var,LMI_term,data]=lmiunpck(lmisys);

    Error in ==> dbnunfoldtonn at 10

    nn = nnsetup(size);

    Error in ==> test_example_DBN at 34

    nn = dbnunfoldtonn(dbn, 10);

    展开全文
  • 一、狭义的DNN(DBN) 1、什么是广义的DNN? 广义DNN是我们常说的 深度神经网络(deep neural network),它是区分 最多3层结构(隐层=1)感知器所构成... 狭义的DNN指的是全连接型的DNN网络,又名DBN 3、全连接...
  • dbn pytorch

    2021-04-26 11:45:23
    主要使用pytorch 实现的DBN网络,用于对数据做回归,单个数据维度为(N,21),其中N为不定长,输出则为(N,1),对应N个值
  • DBN深信度网络

    千次阅读 2015-06-29 17:02:02
    DBN深信度网络 1、以RBM(限制玻尔兹曼机)训练第1~n-1层的网络权重。 2、在第n层以线性感知机,随机初始化权重。并与之前隐层一起,转变为已训练起始参数的BP神经网络。 3、运用BP算法调整整个网络权重。
  • 深度置信网络DBN

    2018-08-17 21:09:58
    DBN实例,运行与matlab版本有关系,注释详细,建议用2014版
  • DBN深度信念网络介绍

    千次阅读 2019-06-25 17:10:57
    DBN神经网络模型 使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络。然而,有一种更好的神经网络模型,这就是受限玻尔兹曼机。使用层叠波尔兹曼机组成深度神经网络的方法...
  • DBN(深度置信网络)解析

    万次阅读 2016-12-14 22:42:01
    DBN: 将RBM像砖块一样叠加起来构建的一个网络DBN训练方法: 第 1 步:(预训练) 分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;(H0可以看作H1的可见层...
  • DBN源代码,有详细注释,运行前先把deeplearn工具箱解压到matlab目录下。
  • 深度信念网络DBN

    千次阅读 2017-03-08 20:28:14
    “深度学习”学习笔记之深度信念网络    本篇非常简要地介绍了深度信念网络的基本概念。文章先简要介绍了深度信念网络(包括其应用实例)。接着分别讲述了:(1) 其基本组成结构——受限玻尔兹曼机的的基本...
  • 机器学习——DBN深度信念网络详解

    万次阅读 2016-08-11 16:48:02
    使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络。...使用层叠波尔兹曼机组成深度神经网络的方法,在深度学习里被称作深度信念网络DBN,这是目前非常流行的方法。
  • DBN深度信念网络数学解析

    千次阅读 2016-12-06 04:24:09
    DBN深度信念网络数学解析
  • DBN深度信念网络详解

    千次阅读 2018-09-11 15:44:24
    1. 自联想神经网络与深度网络  自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入。很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在。所以,我们说,...
  • 深度置信网络DBN的matlab算法实现,可直接运行,程序运行采样的数据库为MNIST手写数字数据库。
  • 深度学习DBN深度置信网络

    万次阅读 多人点赞 2017-06-20 11:48:28
    深度信念网络DBN,Deep Belief Nets,神经网络的一种。既可以用于非监督学习,类似于一个自编码机;也可以用于监督学习,作为分类器来使用。 从非监督学习来讲,其目的是尽可能地保留原始特征的特点,同时降低...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,371
精华内容 2,548
关键字:

dbn网络