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

获得预训练的函数

 

转载于:https://www.cnblogs.com/Iknowyou/p/3657383.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值