• 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.预训练模型

    获得预训练的函数

  • 相关阅读:
    函数的命名空间和作用域
    python 各个地方导航(方便查询,持续更新!)
    零基础学虚幻4(UE4):蓝图+VR 丁树凯教程
    UE4打包后的游戏,无法打卡其他关卡的解决办法
    【精辟】进制转换
    Git仓库的初始化
    【编程】杂碎知识点
    MFC制作带界面的DLL库
    StartImage.DLL使用说明
    MFC对话框程序:实现程序启动画面
  • 原文地址:https://www.cnblogs.com/Iknowyou/p/3657383.html
Copyright © 2020-2023  润新知