• DBN程序剖析_updated


    1.类DBN


    1. __init__

    创建类对象。

    DBN是一个多层感知器,它的每个中间层都分别和一个RBM共享权重。我们

    • 首先把DBN建造成一个深度多层感知器(MLP)。在建每一MLP层的时候,同时构建和它相同权重的RBM层。
    • 然后对这些RBM层进行训练。由于和MLP层权重是同一个,意味着MLP的权重改变。
    • 最后进行微调。通过对MLP进行随机梯度下降来完成

    按照上面思路,对于结构中的每一层,进行下面操作。

    • 计算sigmoid层。输入:输入,输入维数,输出维数,和激活函数
    • 计算RBM层。输入:输入,输入维数,输出维数,sigmoid层的W和b参数。

    然后再在MLP的顶层加上一个逻辑层

    2.pretraining_functions

    生成函数的列表,可以在给定层上实施一步梯度下降。

    对于每一个RBM层,进行下面的操作:

    • 计算cost和updates的列表。
    • 得到theano函数。输入:cost和updates。
    • 计算微调阶段的损失。定义为逻辑回归层(输出层)的负对数似然。
    • 计算在self.x和self.y上的错误数量。

    3.build_finetune_functions

    产生3个函数:

    a.函数train。进行一步微调。

    b.函数validate。从认证集中选取一批数据计算误差。

    c.函数test。从测试集中选取一批数据计算误差。

     具体过程如下:

    根据模型参数计算梯度

    计算微调更新。

    2.类test_DBN


    展示如何训练和测试一个DBN网络

    1.加载数据并构建DBN

    2.预训练模型

    获得预训练的函数

  • 相关阅读:
    package.json与package-lock.json的区别
    ES6(一) let和const
    JSON对象的代码中不能有注释语句
    详解webpack4打包--新手入门(填坑)
    解决“webpack不是内部或外部命令”(基于webpack4.X)
    解决“npm不是内部或外部命令“
    静态页之间传值
    详解animate.css动画插件用法
    基于PIL模块创建验证码图片
    python中单下划线的变量
  • 原文地址:https://www.cnblogs.com/Iknowyou/p/3657383.html
Copyright © 2020-2023  润新知