概述
深度置信网络DBN的实现方式在网上有很多说法。总结下来有几种。1、多层RBM堆叠,最后采用罗杰斯特回归进行分类选择;2、采用RBM堆叠,然后采用BP神经网络进行梯度下降训练,得到最终的权重;3、多层堆叠RBM,在最后一层加上标志位输入;4、多层堆叠RBM,采用睡醒方式训练;5、多层堆叠RBM,每层RBM上行和下行的权重不同,非首尾层RBM的上行权重为下行权重2倍。由于说法太多,又没有时间一一证明,就用1实现了一个。但是第5种实现方法好像理论依据比较充足,后期有时间再实现吧。老规矩,先上试验代码:
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <vector>
#include "bp.hpp"
#include "activate_function.hpp"
#include "restricked_boltzman_machine.hpp"
#include "dbn.hpp"
int main(int argc, char** argv)
{
using dbn_type = dbn<double, 6, 3, 3, 2>;
// 定义dbn类型
dbn_type dbn_net;
while (true)
{
using mat_type = mat<6, 1, double>;
std::vector<mat_type> vec;
vec.push_back(mat_type({ 1,1,1,0,0,0 }));
vec.push_back(mat_type({ 1,0,1,0,0,0 }));
vec.push_back(mat_type({ 1,1,1,0,0,0 }
最后
以上就是欢喜香氛为你收集整理的C++元编程——DBN实现的全部内容,希望文章能够帮你解决C++元编程——DBN实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复