python边写边总结(十五)CNN理解记录
发布日期:2021-06-29 06:03:32 浏览次数:2 分类:技术文章

本文共 1354 字,大约阅读时间需要 4 分钟。

昨天尝试了一下使用mnist数据集,里面提到了CNN(卷积神经网络),以前也见过并使用过,今天就好好记录一下,学习资源来自这位作者写的很好

  • CNN出现的原因

我们在做的人工智能,抽象的说,就两个方面,回归和分类,直观的就有模式识别,机器视觉等实实在在的应用,很多时候我们需要用到图像,作为人工智能的运用对象,从图像里面取识别内容,但是图像有个特点,数据量大,现今一张很普通的相机拍出的图片就上百万像素,这就给人工只能的训练提出了极大的挑战,解决这个问题只有两个办法,一是提升硬件运算能力,就出现了各是各样的显卡,一个是优化算法,CNN就走了后面这一条路

  • CNN减少运算的原因

在普通的神经网络里面,我们得知SGD是一种能减少运算的方法,CNN与此相似,它是将全连接减少为句不感知

卷积神经网络

左边的图片采用的连接方式是全连接方式,图片上每一个像素都连接到输入层的神经元上,我们假如这是1000*1000的图片,而我们又提供1000*1000的输入层神经元时,就有1000000*1000000个权重值用于训练,这不是现在的硬件可以接受的,所以有些人就提出了减少神经元的个数,让10*10大小的过滤器去提取图像的特征,如果过滤器的步距也取10,那么就只需要100*100个这样的过滤器就解决了问题,生成的也不过就是100*100的特征图像,在这里我们默认了原图每10*10的小区域的权重值是相同的,所以理论的权值数量是10*10,对比一下1000000*100000,嗯,是不是少了很多

  • 过滤器可以被使用的假设

1 底层的特征是局部性的,也就是,这个过滤器过滤出来的内容能代表这一块区域的特征

2 图像上的不同片段,不同图像上的小片段的特征是类似的

这类比于生物的视觉神经元只响应特定区域的刺激

  • 卷积层与多核卷积

一种过滤器对应一个卷积核和一类特征,但是一幅图片可以有多种类型的特征,就比如求取边缘一样,垂直梯度需要一个卷积核,竖直梯度需要另外一个卷积核,这就形成了两个卷积核,有时候我们的图片是多通道的,我们的卷积核就应该具有处理多个通道的能力,另外,在卷积之后的下一步是加上偏置,再下一步就是利用激活函数计算出该层的激活值,利用卷积核对图像进行卷积操作,并进行激活,就形成了我们的卷积层,值得一提的时,因为我们可能用到多核卷积,所以我们得到的输出也可能是多通道的

  • 池化层

池化层出现的原因有两个,一是,我们的卷积之后,仍然还保留着大量的数据,不便训练,另外还有一个原因是池化的合理性,我们可以对不同位置的特征进行聚合统计,可以代表这个区域的总体特征水平

  • 卷积层与池化层的实现细节

padding:我们在对6*6的图片做卷积的时候,如果卷积核是3*3,步距是1,那么将生成一个4*4的图像,如果引入多层卷积,最终图像会很小,并且边缘的像素只被卷积运算了一次,一个解决办法是加入padding,对边缘进行补充。padding有两种模式,same即输入输出相同,valid即不加padding,在步距为1的情况下,输入为n*n的图像,卷积核大小为f*f,输出就为(n-f+1)*(n-f*1),

stride:即为步长,即卷积核在图像上的移动距离

  • CNN的训练

训练的核心算法依然是BP算法,即优化器仍然可以使用nn的优化器

 

 

 

 

 

 

转载地址:https://blog.csdn.net/zhouzhouasishuijiao/article/details/85238795 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python边写边总结(十六)RNN理解记录
下一篇:python边写边总结(十四)mnist的简单使用

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月10日 19时15分56秒