全国服务热线:0755-26993877
当前位置: 首页 > 案例展示

【48812】卷积神经网络(CNN)基础常识收拾

发布时间:2024-04-28 07:50:36作者:爱游戏官网登录入口唯一

  这两天连续看了一些关于卷积神经网络的视频和博文,把我觉得比较有用的常识和内容整理一下,理顺逻辑,自己也可加深了解,写在这儿,日后想看,顺手就能翻来,永不会丢掉。

  已然叫卷积神经网络,这儿面首先是卷积,然后是神经网络,是2者的一个结合,卷积这个概念实践上来自于信号处理范畴,一般是对2个信号进行卷积运算,见下图:

  神经网络,这是机器学习的元老,是对人脑神经元作业机制的模仿,每个神经元是一个核算单元,输入的数据与权重进行相乘、求和,再加上偏置,得到的数据再通过激活函数,将成果进行输出,见下图,多个神经元相互衔接组成神经网络,详细就不打开说了。

  卷积神经网络在图画分类和辨认范畴的运用十分多,最早用于手写数字的分类辨认,后来逐步发展起来。

  那就从手写体图画辨认说起吧,一副图片假如是单色的,那就能看成是一个二维的数字矩阵,每个像素点的色彩都可以用灰度值来表明;那假如图画是五颜六色的,可以将图画看成是RGB三个单色图片叠加的组合。

  那么对一个五颜六色图画做卷积,究竟做了什么呢?下面这张动图,很好地展现了图画卷积核算的进程,原始图画有RGB三个通道channel1-3,对应有3个卷积核Kernel1-3,每一个通道的图片与对应的卷积核做乘加运算,每个通道得到的数值再相加,加上整体的偏置Bias得到特征图(feature map)里边的一个值。

  这儿面第一个问题,便是卷积核为什么是3*3巨细的,实践上这个尺度也是通过学者们不断研讨总结出的,现在以为3*3的感触野足够用,并且运算量也会相对低,还有1*1的卷积核在运用,其它的根本不必了。

  第二个问题,卷积核里边的参数是怎样来的,其实这儿面的参数机器学习要完成的,当咱们把一切的核参数都调整好,那这个模型也就确认了。也有一些先验的卷积核,如下面的核,进行卷积之后,能轻松完成锐化和边际提取的效果。

  那咱们对一幅图片进行卷积之后,就会构成一个Feature map,它会提取一些特征,用不同的核进行卷积就会输出多个Feature map,

  特征图/Feature map,当图画像素值通过过滤器后得到的便是特征图。

  下面2张图就很直观地展现了kernel和feature map的实践姿态。

  卷积神经网络处理进程中,跟着模型运算的深化,图画的尺度(h*w)会渐渐的小,可是提取的特征会越来越多。

  这儿面因为鸿沟的问题,每一次卷积之后,图画不可防止地会被紧缩一点,这就涉及到一个概念padding,假如设置padding的值为“same”,则会在原图画周围弥补1圈像素点,一般补0,这样后边的图画尺度都会与原图画相同。默许参数是“valid”,翻译过来是有用的意思,这儿的有用指的是与卷积核做运算的图片像素都是有用的,实践上就没有外圈的补0。

  下图展现的便是带padding的卷积效果,这个图的问题是用的是4*4的卷积核,实践中没有用4*4卷积核的。

  上图是步长为1的状况,假如步长为 2,便是适当每隔两行或许两列进行卷积,实践上起到了降维的效果,便是卷积后的feature map尺度会变小。

  池化最大的效果是把数据降维,也叫下采样,可以轻松又有用的防止过拟合。主要有两种池化方法,Max pooling/ avg pooling,一般状况下,池化区域是2*2巨细,池化之后,4*4的图片,会变成2*2巨细。

  卷积核的输入通道数(in depth)由输入矩阵的通道数(inChannels)所决议。比方:一个RGB格局的图片,其输入通道数为3。

  输出矩阵的通道数(out depth)由卷积核的输出通道数所决议,比方下面这个动画傍边,卷积核有8个,那么输出outChannels则为8。

  epoch:表明将练习数据会集的一切样本都过一遍(且仅过一遍)的练习进程。在一个epoch中,练习算法会依照设定的次序将一切样本输入模型进行前向传达、核算丢失、反向传达和参数更新。一个epoch一般包括多个step。

  batch:一般翻译为“批次”,表明一次性输入模型的一组样本。在神经网络的练习进程中,练习数据往往是许多的,比方几万条乃至几十万条——假如咱们一次性将这上万条的数据悉数放入模型,对核算机功能、神经网络模型学习才能等的要求太高了;那么就可以将练习数据划分为多个batch,并随后分批将每个batch的样本一同输入到模型中进行前向传达、丢失核算、反向传达和参数更新。但要留意,一般batch这个词用的不多,大都状况咱们都是只重视batch size的。

  Batch Size(批巨细): 表明在单次练习中传递给模型的图画数量,咱们在神经网络练习进程中,往往需求将练习数据划分为多个batch;而详细每一个batch有多少个样本,那么便是batch size指定的了。

  step:一般翻译为“进程”,表明在一个epoch中模型进行一次参数更新的操作。浅显地说,在神经网络练习进程中,每次完成对一个batch数据的练习,便是完成了一个step。

  实践上,上面的卷积处理进程,都是在对图片进行特征提取,而终究要进行分类或猜测就需求凭借神经网络了,所以一般在卷积处理之后需求对数据来进行压平(flatten)操作,使其变为1维的数据,便于送入神经网络的输入层。

  神经网络模型里边(见下图),全衔接层/Dense层是深度学习中常用的一种神经网络层,也称为密布衔接层或多层感知机层。它既能当输入层(input layer),又能当输出层(output layer),还能傍边间层(Hidden layer)。

  在神经网络中,激活函数用于引进非线性,使网络可以学习杂乱的映射联系。假如不必激活函数,每一层输出都是上层输入的线性函数,不管神经网络有多少层,输出都是输入的线性组合。以下是一些常用的激活函数。常用的有: