OpenCL与CNN篇四:CNN从入门到使用

本文深入浅出地介绍了从神经网络基础知识到CNN的具体实现,包括卷积、池化和全连接层。以一个简单的CNN结构为例,详细阐述了正向计算和误差反向传播过程,使用Sigmoid激活函数。文章还涵盖了权值更新的步骤,适合初学者理解CNN的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 文中比较重要的引用了几个篇博客,开篇给与博主感谢
  2. 记录我从零到实现一个具体CNN网络中最有用的知识干货
  3. 以细节为切入点,分享我对CNN网络的简洁
  4. 本文致力于让你一篇文章理解CNN的具体实现与训练方法
  5. 涉及理论不一一追述背景,主要讲解其如何应用
  6. 开源的优秀CNN代码很多,我选择的入门可能不是最棒的,但对我是最容易理解的

开始

一、神经网络与卷积

1、如果你不了解神经网络,这篇 CNN笔记:通俗理解卷积神经网络 够了。
2、如果你不了解神经网络,这篇 CNN笔记:通俗理解卷积神经网络 也够了。
3、看黑板标重点,看完文章请确保理解:卷积、池化(采样)、全连接
4、这一条只是单纯地给上文的博主点10个贊。。。。。。。。。

二、一个简单的CNN结构

1、首先我们需要了解一个数据集MINST,刚去搜了一篇介绍比较详细的博客MNIST数据集解析,不过代码是Python如果不懂请选择忽略,看他关于MINST的介绍就好。不过你也可以先跳过这步,这只是输入数据,并不关乎我们的CNN构架。
2、如果上文你了解了卷积,那么现在可以给你介绍一个简单的CNN手写识别网络了。这也有一篇很好的博客编写C语言版本的卷积神经网络CNN之网络的总体结构,篇末有一份博主的C语言代码连接,纯C语言的自己注意修改一下代码中加载的文件路径,运行起来不是很难。不过文章的配图,和公式说明比较复杂,所以就只建议阅读tostq的专栏的篇二(就是上一个连接)。
3、在此送一张我自己画的图,姑且称为图一

简单的CNN网络

三、根据图一而来的 正向计算

先说明一下本文采用的激活函数Sigmoid(),表达式 S(x)=1/[1+exp(x)] 。它有一个很好的特性其导函数与其输出有关,即 S~(x)=S(x)[1S(x)]
在之后的文章里我们用 f(y)=y(1y)=S(x)[1S(x)]=S~(x) 表示激活函数的导函数,文章内引用不再重复说明。

3.1、卷积层C1、C3的计算

ym(x,y) 表示第m张输出图位置(x,y)的像素信息, bm 表示偏置, Xp(x,y) 示第p张输入图, Kpm(j,i) 表示当前输入图与输出图之间的卷积核,W、H分别表示卷积核的宽、高。可以得到输出图每个像素值的计算公式,如下:

ym(x,y)=S([pNiHjWXp(x+j,y+i)Kpm(j,i)]+b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值