• 大小: 45.78MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-17
  • 语言: C/C++
  • 标签: cnncc++  

资源简介

c-c++写的卷积神经网络,没有使用库,都是自己写的函数,是vs工程文件,minst手写库识别,最基础的cnn

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include “cnn.h“

void cnnsetup(CNN* cnnnSize inputSizeint outputSize)
{
cnn->layerNum=5;

nSize inSize;
int mapSize=5;
inSize.c=inputSize.c;
inSize.r=inputSize.r;
cnn->C1=initCovlayer(inSize.cinSize.r516);
inSize.c=inSize.c-mapSize+1;
inSize.r=inSize.r-mapSize+1;
cnn->S2=initPoollayer(inSize.cinSize.r266AvePool);
inSize.c=inSize.c/2;
inSize.r=inSize.r/2;
cnn->C3=initCovlayer(inSize.cinSize.r5612);
inSize.c=inSize.c-mapSize+1;
inSize.r=inSize.r-mapSize+1;
cnn->S4=initPoollayer(inSize.cinSize.r21212AvePool);
inSize.c=inSize.c/2;
inSize.r=inSize.r/2;
cnn->O5=initOutlayer(inSize.c*inSize.r*12outputSize);

cnn->e=(float*)calloc(cnn->O5->outputNumsizeof(float));
}

Covlayer* initCovlayer(int inputWidthint inputHeightint mapSizeint inChannelsint outChannels)
{
Covlayer* covL=(Covlayer*)malloc(sizeof(Covlayer));

covL->inputHeight=inputHeight;
covL->inputWidth=inputWidth;
covL->mapSize=mapSize;

covL->inChannels=inChannels;
covL->outChannels=outChannels;

covL->isFullConnect=true; // 默认为全连接

// 权重空间的初始化,先行再列调用,[r][c]
int ijcr;
srand((unsigned)time(NULL));
covL->mapData=(float****)malloc(inChannels*sizeof(float***));
for(i=0;i covL->mapData[i]=(float***)malloc(outChannels*sizeof(float**));
for(j=0;j covL->mapData[i][j]=(float**)malloc(mapSize*sizeof(float*));
for(r=0;r covL->mapData[i][j][r]=(float*)malloc(mapSize*sizeof(float));
for(c=0;c float randnum=(((float)rand()/(float)RAND_MAX)-0.5)*2; 
covL->mapData[i][j][r][c]=randnum*sqrt((float)6.0/(float)(mapSize*mapSize*(inChannels+outChannels)));
}
}
}
}
// 权重梯度变化
covL->dmapData=(float****)malloc(inChannels*sizeof(float***));
for(i=0;i covL->dmapData[i]=(float***)malloc(outChannels*sizeof(float**));
for(j=0;j covL->dmapData[i][j]=(float**)malloc(mapSize*sizeof(float*));
for(r=0;r covL->dmapData[i][j][r]=(float*)calloc(mapSizesizeof(float));
}
}
}

covL->basicData=(float*)calloc(outChannelssizeof(float));

int outW=inputWidth-mapSize+1;
int outH=inputHeight-mapSize+1;


covL->d=(float***)malloc(outChannels*sizeof(float**));
covL->v=(float***)malloc(outChannels*sizeof(float**));
covL->y=(float***)malloc(outChannels*sizeof(float**));
for(j=0;j covL->d[j]=(float**)malloc(outH*sizeof(float*));
covL->v[j]=(float**)malloc(outH*sizeof(float*));
covL->y[j]=(float**)malloc(outH*sizeof(float*));
for(r=0;r covL->d[j][r]=(float*)calloc(outWsizeof(float));
covL->v[j][r]=(float*)calloc(outWsizeof(float));
covL->y[j][r]=(float*)calloc(outWsizeof(float));
}
}

return covL;
}

Poollayer* initPoollayer(int inputWidthint inputHe

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-21 15:28  cnn\
     目录           0  2017-07-06 20:27  cnn\.vs\
     目录           0  2017-07-06 20:27  cnn\.vs\cnn\
     目录           0  2017-07-06 20:27  cnn\.vs\cnn\v14\
     文件       56832  2018-03-21 15:28  cnn\.vs\cnn\v14\.suo
     目录           0  2017-07-13 15:54  cnn\Debug\
     文件       69632  2018-03-21 15:26  cnn\Debug\Project1.exe
     文件      468328  2018-03-21 15:26  cnn\Debug\Project1.ilk
     文件     1118208  2018-03-21 15:26  cnn\Debug\Project1.pdb
     文件       15592  2017-07-13 15:46  cnn\Debug\minst.txt
     目录           0  2018-03-21 15:29  cnn\Minst\
     文件           4  2018-03-21 14:50  cnn\Minst\1
     文件           4  2018-03-21 14:39  cnn\Minst\1.txt
     文件           4  2018-03-21 14:50  cnn\Minst\2
     文件           4  2018-03-21 14:39  cnn\Minst\2.txt
     文件    25659768  2017-07-06 09:25  cnn\Minst\PNG格式MNIST数据库.rar
     文件          37  2017-04-27 18:40  cnn\Minst\ReadMe.txt
     文件     1648877  2017-07-06 09:55  cnn\Minst\t10k-images-idx3-ubyte.gz
     文件     7840016  1998-01-26 23:07  cnn\Minst\t10k-images.idx3-ubyte
     文件        4542  2017-07-06 09:54  cnn\Minst\t10k-labels-idx1-ubyte.gz
     文件       10008  1998-01-26 23:07  cnn\Minst\t10k-labels.idx1-ubyte
     文件     9912422  2017-07-06 09:55  cnn\Minst\train-images-idx3-ubyte.gz
     文件    47040016  1996-11-18 23:36  cnn\Minst\train-images.idx3-ubyte
     文件       28881  2017-07-06 09:54  cnn\Minst\train-labels-idx1-ubyte.gz
     文件       60008  1996-11-18 23:36  cnn\Minst\train-labels.idx1-ubyte
     目录           0  2018-03-21 15:26  cnn\Project1\
     目录           0  2018-03-21 15:26  cnn\Project1\Debug\
     文件         975  2017-07-12 14:05  cnn\Project1\Debug\Project1.Build.CppClean.log
     文件         361  2018-03-21 15:26  cnn\Project1\Debug\Project1.log
     目录           0  2018-03-21 15:26  cnn\Project1\Debug\Project1.tlog\
     文件        2198  2018-03-21 15:26  cnn\Project1\Debug\Project1.tlog\CL.command.1.tlog
............此处省略32个文件信息

评论

共有 条评论

相关资源