Yym996 / CNN-use-C-achieve

LeNet-5 use c achieve

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CNN-use-C-achieve

LeNet-5 use c achieve 卷积神经网络的C语言实现

代码实现环境是vs2019,po主使用这个代码实现了lenet-5模型的向前传播过程。不过可以通过改变主函数中的参数来实现其他模型。由于作者学艺不精,本代码只能实现卷积步长为1,池化方式只能选择最大池化,激活函数目前只写了Relu。如果小伙伴们有其他需求,可以自己修改代码~~ 工程的实现主要分为两部分 第一部分是在python上做的分为以下几个步骤。 1.搭建模型以及训练模型及保存模型。 2.获取图片数据,po主的图片使用手机拍摄的所以要把图片转换为灰度图片,然后下载训练好的模型对图片数据进行预测。获取预测结果保存用来和C实现的预测过程进行对比。 3.获取模型参数,模型参数主要有模型的权重和bias,并把他们保存为.bin文件。 4.将输入图片保存为.bin文件。 5.(可做可不做,因为po主的最后结果不对,所以输出了每一层运算的结果来检查C的每一层输出) 第二部分工作是C实现,工程主要分为以下几个部分: 1.主函数,主函数类似于python中模型搭建,在主函数中调用各个层的的函数,完成向前传播的过程。 2.cnn.c,定义了输出层,卷积层,池化层,flatten层,全连接层和输出层的函数,以便在主函数中调用。 3.mat.c,卷积运算的实现。 注:在获取模型权重参数时,需要下载HDFView这个软件来获取各个层的名字

how to use python下 1.在python环境下训练模型,并保存模型(python->model_train.py) 2.模型预测,获取模型预测的结果(python->model_predict.py) 3.获取模型各层权重参数(python->get_model_weight) 4.将图片转为.bin格式(python->image_to_array.py) 5.获取模型各层结果(get_layers_results.py) C下: 1.根据需要修改网络结构,以及数据存放位置。 2.直接运行就可以了

About

LeNet-5 use c achieve


Languages

Language:C 69.1%Language:Python 30.9%