c语言实现图片卷积_编写C语言版本的卷积神经网络CNN之一:前言与Minst数据集(转载)...

本文介绍了使用C语言实现一个简单的卷积神经网络CNN,用于识别MINST手写数字数据库。代码结构清晰,无需依赖三方库,包含卷积层、Pooling层和全连接层。博客分为前言、网络结构、误差反向传播方法和学习测试结果四部分。提供了完整的项目文件,便于读者学习和复现。
摘要由CSDN通过智能技术生成

5a3f0a9d1b129d58ba29f4d0205d7e5f.png
原文作者:tostq
原文链接: http:// blog.csdn.net/tostq

前言

卷积神经网络是深度学习的基础,但是学习CNN却不是那么简单,虽然网络上关于CNN的相关代码很多,比较经典的是tiny_cnn(C++)、DeepLearnToolbox(Matlab)等等,但通过C语言来编写CNN的却比较少,本人因为想在多核DSP下运行CNN,所以便尝试通过C语言来编写,主要参考的代码是DeepLearnToolbox的内容,DeepLearnToolbox是用Matlab脚本编写,是我看过的最为简单的CNN代码,代码清晰,阅读方便,非常适合新手入门学习。

本文的CNN代码是一个最基本的卷积网络,主要用于手写数字的识别,选择的训练测试是数据库是Minst手写数字库,主要是包括了一个基本的多层卷积网络框架、卷积层、Pooling层、及全连接的单层神经网络输出层,不过CNN其他重要的概念如Dropout、ReLu等暂时没有涉及,但是个人对于新手,学习卷积网络的基本结构及其误差反向传播方法是完全足够。

这里要注意的是,本文的方法并不是深度学习之父Yann. LeCun在1998年就已经提出的成熟算法LeNet-5卷积网络,而只是DeepLearnToolbox内的cnn代码的c语言实现,不过我们会比较二者之间的区别,因为二者的基本原理是相似的。另外,为了不使博客篇幅过长,所以博客中贴的代码并不完整,完整代码请见附件。

这篇博客总共分为四节:

第一节:前言,介绍项目结构及Minst数据集测试训练数据集

第二节:主要介绍CNN的网络结构、相关数据结构

第三节:重点介绍CNN学习训练过程的误差反向传播方法,采用的是在线训练方式

第四节:CNN的学习及测试结果的比较

论文参考文献:

Y. LeCun, L. Bottou,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值