纯C++超分辨率重建espcn --改编--(一)数据结构

这里还是用caffemodel中导出的数据来使用,先上一个图

纯C++超分辨率重建espcn --改编--(一)数据结构_第1张图片

数据结构:

#define 总层数 3


struct espcn_x3模型
{
	int 层数; //3

	层数据 * 所有层;

	//构造函数
	espcn_x3模型();

};

espcn_x3模型::espcn_x3模型()
{
	层数=总层数; //

	int size;
	size = sizeof(层数据)*层数;//
	所有层=(层数据 *)malloc(size);

	层数据 * 层=所有层;
	for (int k = 0;k<总层数;k++)
	{
		switch(k)
		{
			case 0:
				strcpy(层->类型, "卷积层");
				层->权重长度=64*1*5*5;
				层->权重_数据=(float*)malloc(sizeof(float) * 层->权重长度);
	层->输入维度=1;
	层->输出维度=64;
	层->核宽=5;
				层->偏移长度=64;
				层->偏移_数据=(float*)malloc(sizeof(float) * 层->偏移长度);
				break;
			case 1:
				strcpy(层->类型, "卷积层");
				层->权重长度=32*64*3*3;
				层->权重_数据=(float*)malloc(sizeof(float) * 层->权重长度);
	层->输入维度=64;
	层->输出维度=32;
	层->核宽=3;
				层->偏移长度=32;
				层->偏移_数据=(float*)malloc(sizeof(float) * 层->偏移长度);
				break;
			case 2:
				strcpy(层->类型, "卷积层");
				层->权重长度=9*32*3*3;
				层->权重_数据=(float*)malloc(sizeof(float) * 层->权重长度);
	层->输入维度=32;
	层->输出维度=9;
	层->核宽=3;
				层->偏移长度=9;
				层->偏移_数据=(float*)malloc(sizeof(float) * 层->偏移长度);
				break;

		}
		层++;
	}

}

加载3个卷积层数据比fscrcnn更简单,就不重复了,而像数组合层并无数据。

这部分完成。

你可能感兴趣的:(超分辨率重建)