这里还是用caffemodel中导出的数据来使用,先上一个图
数据结构:
#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更简单,就不重复了,而像数组合层并无数据。
这部分完成。