C++元编程——BP神经网络实现

基于之前的元编程矩阵,接下来就可以实现BP神经网络了。先来看一下实例代码吧:

int main() 
{
	mat<3, 1> mt_input = { 1,2,3 };        // 训练数据集,只有一个数据[1,2,3]
	net<3, 3, 1> n(.01);                    // 定义学习率为0.01,神经元数分别为3,3,1的bp神经网络
	n.print();                            // 打印神经网络权值矩阵
	for (int i = 0; i < 500; ++i)
	{
		auto mt_out = n.forward(mt_input);
		n.backward(mat<1, 1>({ .7 }));    // 以矩阵[.7]为期望值,计算误差并反向传播,更新网络
		std::cout << "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" << std::endl;
		mt_out.print();                    // 输出结果打印
	}
	std::cout << "=====================================" << std::endl;
	n.print();
	_getch();
	return 0;
}

看上去足够简洁,接下来是基于之前元编程矩阵的一些改正,主要是转置的更正以及初始化的随机极小值。代码如下

你可能感兴趣的:(元编程学习实践,c++,人工智能)