model_DBM.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:restricted-boltzmann-machine-deep-belief-network-deep-boltzmann-machine-in-pytorch 作者: wmingwei 项目源码 文件源码
def forward(self, v_input, k_positive = 10, k_negative=10, greedy = True, ith_layer = 0, CD_k = 10): #for greedy training
        if greedy:
            v = v_input

            for ith in range(ith_layer):
                p_v, v = self.rbm_layers[ith].v_to_h(v)

            v, v_ = self.rbm_layers[ith_layer](v, CD_k = CD_k)

            return v, v_

        v = v_input
        even_layer = [v]
        odd_layer = []
        for i in range(1, self.n_even_layers):
            even_layer.append(torch.bernoulli(torch.sigmoid(self.bias[2*i].repeat(v.size()[0],1))))

        for _ in range(k_positive):
            p_odd_layer, odd_layer = self.even_to_odd(even_layer)
            p_even_layer, even_layer = self.odd_to_even(odd_layer)
            even_layer[0] = v

        positive_phase_even = [i.detach().clone() for i in even_layer]
        positive_phase_odd =  [i.detach().clone() for i in odd_layer]
        for i, d in enumerate(positive_phase_odd):
            positive_phase_even.insert(2*i+1, positive_phase_odd[i])
        positive_phase = positive_phase_even
        for _ in range(k_negative):
            p_odd_layer, odd_layer = self.even_to_odd(even_layer)
            p_even_layer, even_layer = self.odd_to_even(odd_layer)

        negative_phase_even = [i.detach().clone() for i in even_layer]
        negative_phase_odd =  [i.detach().clone() for i in odd_layer]
        for i, d in enumerate(negative_phase_odd):
            negative_phase_even.insert(2*i+1, negative_phase_odd[i])
        negative_phase = negative_phase_even
        return positive_phase, negative_phase
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号