首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ReLU基于角色的模型堆叠到DBN中

将ReLU基于角色的模型堆叠到DBN中
EN

Stack Overflow用户
提问于 2017-06-25 23:53:07
回答 1查看 239关注 0票数 0

我正在实现一个带有整流线性单元的受限玻尔兹曼机器。我在任何地方都没有找到简单的实现,所以我想问一下是否有人愿意验证一下这个设计。

下面是CD1的计算:

代码语言:javascript
复制
def propup(self, vis):
    activation = numpy.dot(vis, self.W) + self.hbias        
    # ReLU activation of hidden units
    return activation * (activation > 0)

def sample_h_given_v(self, v0_sample):
    h1_mean = self.propup(v0_sample)
    # Sampling from a rectified Normal distribution
    h1_sample = numpy.maximum(0, h1_mean + numpy.random.normal(0, sigmoid(h1_mean)))
    return [h1_mean, h1_sample]

def propdown(self, hid):
    activation = numpy.dot(hid, self.W.T) + self.vbias
    return sigmoid(activation)

def sample_v_given_h(self, h0_sample):
    v1_mean = self.propdown(h0_sample)
    v1_sample = self.numpy_rng.binomial(size=v1_mean.shape, n=1, p=v1_mean)
    return [v1_mean, v1_sample]

这是我计算梯度的方法:

代码语言:javascript
复制
def get_cost_updates(self, lr, decay, mom, l1_penalty, p_noise, epoch, persistent=None, k=1):
    ph_mean, ph_sample = self.sample_h_given_v(input)
    nv_means, nv_samples,nh_means, nh_samples = self.gibbs_hvh(ph_sample)      

    W_grad = numpy.dot(self.input.T, ph_mean) - numpy.dot(nv_samples.T, nh_means)
    vbias_grad = numpy.mean(self.input - nv_samples, axis=0)
    hbias_grad = numpy.mean(ph_mean - nh_means, axis=0)

我的问题是,如何将这些内容分层到DBN中?

其目的是构建一个自动编码器,但我不确定如何处理第二层中也是实数变量的可见单元。

EN

回答 1

Stack Overflow用户

发布于 2018-05-13 20:37:02

我可以看到这个问题已经提出了一段时间,但由于没有答案,我将添加我的问题。正如你所写的,DBN是用贪婪的学习算法实现的,它把每一层都当作一个RBM。实际上,我最近做了一次演讲,你可以找到我在这里使用的一个数字示例的演示文稿:https://www.slideshare.net/mobile/AvnerGidron/generative-models/AvnerGidron/generative-models

我认为,如果你能理解演示文稿,你自己做这件事不会花太长时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44748036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档