C++元编程——DBN实现

深度置信网络DBN的实现方式在网上有很多说法。总结下来有几种。1、多层RBM堆叠,最后采用罗杰斯特回归进行分类选择;2、采用RBM堆叠,然后采用BP神经网络进行梯度下降训练,得到最终的权重;3、多层堆叠RBM,在最后一层加上标志位输入;4、多层堆叠RBM,采用睡醒方式训练;5、多层堆叠RBM,每层RBM上行和下行的权重不同,非首尾层RBM的上行权重为下行权重2倍。由于说法太多,又没有时间一一证明,就用1实现了一个。但是第5种实现方法好像理论依据比较充足,后期有时间再实现吧。老规矩,先上试验代码:


#include 
#include 
#include 
#include 

#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;					// 定义dbn类型
	dbn_type dbn_net;
	while (true)
	{
		using mat_type = mat<6, 1, double>;
		std::vector 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++,开发语言)