LeNet的C语言实现

LeNet的C语言实现

先上代码地址https://github.com/yechaoqun/LeNetForc.git。本程序是参考LeNet的网络结构,用C语言编写的, 不同的地方在于S4层以后,直接把S4的输出展开成一维数组,然后通过sigmod直接输出10个预测值,输出的误差值采用的是均方差。具体结构对比如下图。
LeNet网络结构:
LeNet的C语言实现_第1张图片

我的网络结构:
LeNet的C语言实现_第2张图片

另, 说明下S2与C3层的连接也是参考LeNet的连接方式,如下图:
LeNet的C语言实现_第3张图片

第一次跑时用loadMnist加载mnist数据库后,建议使用saveMnistStatic来保存,以后用loadMnistStatic来替代loadMnist,可以加速mnist数据库的读取和初始化。

整个训练耗时是5分钟左右(本人在使虚拟机环境下跑的), 准确率在95%到96%左右(估计跟初始化随机值有关)。

小结:对于CNN,本人也是一枚萌新,之前从事的视音频工作,也是出于兴趣在慢慢的看DL这方面的相关资料。放代码的目的,也是因之前看CNN资料时,发现各种公式符号,不利程序员理解,顾贴个C的代码好方便大家用代码的方式理解forward和backward的运算过程,如有错误,请各位大大不吝赐教。

你可能感兴趣的:(cnn神经网络)