cnn c语言,编写C语言版本的卷积神经网络CNN之一:前言与Minst数据集

ImgArr read_Img(const char* filename) // 读入图像

{

FILE *fp=NULL;

fp=fopen(filename,"rb");

if(fp==NULL)

printf("open file failed\n");

assert(fp);

int magic_number = 0;

int number_of_images = 0;

int n_rows = 0;

int n_cols = 0;

//从文件中读取sizeof(magic_number) 个字符到 &magic_number

fread((char*)&magic_number,sizeof(magic_number),1,fp);

magic_number = ReverseInt(magic_number);

//获取训练或测试image的个数number_of_images

fread((char*)&number_of_images,sizeof(number_of_images),1,fp);

number_of_images = ReverseInt(number_of_images);

//获取训练或测试图像的高度Heigh

fread((char*)&n_rows,sizeof(n_rows),1,fp);

n_rows = ReverseInt(n_rows);

//获取训练或测试图像的宽度Width

fread((char*)&n_cols,sizeof(n_cols),1,fp);

n_cols = ReverseInt(n_cols);

//获取第i幅图像,保存到vec中

int i,r,c;

// 图像数组的初始化

ImgArr imgarr=(ImgArr)malloc(sizeof(MinstImgArr));

imgarr->ImgNum=number_of_images;

imgarr->ImgPtr=(MinstImg*)malloc(number_of_images*sizeof(MinstImg));

for(i = 0; i < number_of_images; ++i)

{

imgarr->ImgPtr[i].r=n_rows;

imgarr->ImgPtr[i].c=n_cols;

imgarr->ImgPtr[i].ImgData=(float**)malloc(n_rows*sizeof(float*));

for(r = 0; r < n_rows; ++r)

{

imgarr->ImgPtr[i].ImgData[r]=(float*)malloc(n_cols*sizeof(float));

for(c = 0; c < n_cols; ++c)

{

// 因为神经网络用float型计算更为精确,这里我们将图像像素转为浮点型

unsigned char temp = 0;

fread((char*) &temp, sizeof(temp),1,fp);

imgarr->ImgPtr[i].ImgData[r][c]=(float)temp/255.0;

}

}

}

fclose(fp);

return imgarr;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值