C++元编程——多通道CNN实现

之前实现的CNN是多层卷积池化最后加上一个判别层形成的,但是只有一个通道一个核。对于三个通道的图像这样显然是不够好的,不能利用颜色信息。所以就大改了一波,形成一个多通道的CNN。还是先展示测试代码:


#include "cnn.hpp"

int main(int argc, char** argv) 
{

	using cnn_type = cnn <
		nadam, sigmoid, XavierGaussian		// 判别层使用的更新方法、激活函数和初始化方法
		, 3, 32, 32, 4						// 3通道、32*32图像、4输出的判别层
		, nadam, ReLu, XavierGaussian	// 卷积池化层使用的更新方法、激活函数和初始化方法
		, 3									// 3卷积核
		, 2, 2								// 卷积核尺寸
		, 2, 2								// 卷积核步幅
		, 2, 2								// 池化层尺寸
		, 3									// 层输出(下一层通道数)

		, 3									// 3卷积核
		, 2, 2								// 卷积核尺寸
		, 2, 2								// 卷积核步幅
		, 2, 2								// 池化层尺寸
		, 3									// 层输出(下一层通道数)

		, 2									// 2卷积核
		, 2, 2								// 卷积核尺寸
		, 2, 2								// 卷积核步幅
		, 2, 2								// 池化层尺寸
		, 2									// 最终输出
	> ;
	cnn_type cnn_layer;

	cnn_type::input_type mti(.4);
	cnn_type::ret_type mto(.8);
	weight_initilizer::cal(mti, 0., 1.);
	weight_initilizer

你可能感兴趣的:(元编程学习实践,cnn,c++,深度学习)