卷积神经网络详解

这篇具有很好参考价值的文章主要介绍了卷积神经网络详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(一)网络结构

一个卷积神经网络里包括5部分——输入层、若干个卷积操作和池化层结合的部分、全局平均池化层、输出层:
● 输入层:将每个像素代表一个特征节点输入进来。
● 卷积操作部分:由多个滤波器组合的卷积层。
● 池化层:将卷积结果降维。
● 全局平均池化层:对生成的feature map取全局平均值。
● 输出层:需要分成几类,相应的就会有几个输出节点。每个输出节点都代表当前样本属于的该类型的概率。
卷积神经网络详解

(二)卷积操作

卷积分为窄卷积、全卷积和同卷积。

(1)步长

步长(stride)表示卷积核在图片上移动的格数.
卷积神经网络详解
● 当步长为1的情况下,如图中,第二行右边的feature map块里的第二个元素3,是由卷积核计算完第一个元素4,右移一格后计算得来的,相当于图片中的前3行和第1到第4列围成的3×3矩阵与卷积核各对应元素进行相乘相加操作(3=1×1+1×0+0×1+1×0+1×1+1×0+0×1+1×0+1×1)。
● 当步长为2的情况下,就代表每次移动2个格,最终会得到一个如图8-5中第二行左边的2×2矩阵块的结果。

(2)窄卷积

窄卷积(valid卷积),从字面上也可以很容易理解,即生成的feature map比原来的原始图片小,它的步长是可变的。假如滑动步长为S,原始图片的维度为N1×N1,那么卷积核的大小为N2×N2,卷积后的图像大小**(N1-N2)/S+1×(N1-N2)/S+1**。

(3)同卷积

同卷积(same卷积),代表的意思是卷积后的图片尺寸与原始图片的尺寸一样大,同卷积的步长是固定的,滑动步长为1。一般操作时都要使用padding技术(外围补一圈0,以确保生成的尺寸不变)。

(4)全卷积

全卷积(full卷积),也叫反卷积,就是把原始图片里的每个像素点都用卷积操作展开。如图示,白色的块是原始图片,浅色的是卷积核,深色的是正在卷积操作的像素点。反卷积操作的过程中,同样需要对原有图片进行padding操作,生成的结果会比原有的图片尺寸大。
卷积神经网络详解

(三)池化层

池化的主要目的是降维,即在保持原有特征的基础上最大限度地将数组的维数变小。池化中只关心滤波器的尺寸,不考虑内部的值。算法是,滤波器映射区域内的像素点取取平均值或最大值。

1.均值池化

就是在图片上对应出滤波器大小的区域,对里面的所有不为0的像素点取均值。这种方法得到的特征数据会对背景信息更敏感一些。注意:一定是不为0的像素点,这个很重要。如果把带0的像素点加上,则会增加分母,从而使整体数据变低。

2.最大池化

最大池化就是在图片上对应出滤波器大小的区域,将里面的所有像素点取最大值。这种方法得到的特征数据会对纹理特征的信息更敏感一些。

3.反向传播

对于最大池化,直接将其误差还原到对应的位置,其他用0填入;对于均值池化,则是将其误差全部填入该像素对应的池化区域。该部分的详细算法也与反池化算法完全相同

(四)卷积神经网络的相关函数

在TensorFlow中,使用tf.nn.conv2d来实现卷积操作,使用tf.nn.max_pool进行最大池化操作。通过传入不同的参数,来实现各种不同类型的卷积与池化操作。

1 卷积函数tf.nn.conv2d

   tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

● input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height,in_width, in_channels]这样的形状(shape),具体含义是“训练时一个batch的图片数量,图片高度,图片宽度,图像通道数”,注意这是一个四维的Tensor,要求类型为float32和float64其中之一。

● filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height,filter_width, in_channels, out_channels]这样的shape,具体含义是“卷积核的高度,滤波器的宽度,图像通道数,滤波器个数”,要求类型与参数input相同。有一个地方需要注意,第三维in_channels,就是参数input的第四维。

● strides:卷积时在图像每一维的步长,这是一个一维的向量,长度为4。

● padding:定义元素边框与元素内容之间的空间。string类型的量,只能是SAME和VALID其中之一,这个值决定了不同的卷积方式,padding的值为’VALID’时,表示边缘不填充,当其为’SAME’时,表示填充到滤波器可以到达图像边缘。

● use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true

● 返回值:tf.nn.conr2d函数结果返回一个Tensor,这个输出就是常说的feature map。

1.1padding规则介绍

1.padding为VALID情况

    output_width=(in_width-filter_width + 1)/strides_ width(结果向上取整)
    output_height=(in_height-filter_height+1)/strides_height(结果向上取整)
● 输入的尺寸中高和宽定义成in_height、in_width。
● 卷积核的高和宽定义成filter_height、filter_width。
● 输出的尺寸中高和宽定义成output_height、output_width。
● 步长的高宽方向定义成strides_height、strides_ width。
**2.padding为SAME情况**

``
    out_height = in_height / strides_height(结果向上取整)
	out_width  = in_width / strides_ width(结果向上取整)

``

2.池化函数tf.nn.max_pool(avg_pool)

tf.nn.max_pool(input, ksize, strides, padding, name=None)
tf.nn.avg_pool(input, ksize, strides, padding, name=None)

● value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape。
● ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。
● strides:和卷积参数含义类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]。
● padding:和卷积参数含义一样,也是取VALID或者SAME, VALID是不padding操作,SAME是padding操作。
● 返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式。文章来源地址https://www.toymoban.com/news/detail-457564.html

到了这里,关于卷积神经网络详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 卷积神经网络模型之——AlexNet网络结构与代码实现

    AlexNet原文地址:https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf AlexNet诞生于2012年,由2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。 AlexNet的贡献点: 首次使用GPU加速网络训练 使用ReLU激活函数,代替不是传统的Sigmoid和Tanh,解决了Sigmo

    2024年02月08日
    浏览(34)
  • 用C语言构建一个数字识别卷积神经网络

     卷积神经网络的具体原理和对应的python例子参见末尾的参考资料2.3. 这里仅叙述卷积神经网络的配置, 其余部分不做赘述,构建和训练神经网络的具体步骤请参见上一篇: 用C语言构建一个手写数字识别神经网路 卷积网络同样采用简单的三层结构,包括输入层conv_layer,中间层

    2024年02月14日
    浏览(32)
  • CNN(卷积神经网络)的实现过程详解

        在图像处理领域,CNN(卷积神经网络)处于绝对统治地位,但对于CNN具体是如何用神经网络实现的,能找到的介绍要么是一大堆数学公式,要么是大段晦涩的文字说明,读起来很是辛苦,想写好一片完整的而且有深度的文章出来非常难,所以本文适合入门的朋友对CNN的学习

    2024年02月15日
    浏览(28)
  • (草履虫级别的精讲)卷积神经网络的基本组成结构

    目录 前言 卷积神经网络的基本组成结构 一.卷积层 1.标准卷积层 2.形变卷积 3.空洞卷积 二.池化层 1.最大池化层 2.平均池化层 三.激活函数 1.Sigmoid 2.Tanh 3.ReLU 4.Leaky_ReLU  5.Mish 四.损失函数 1.回归损失函数 2.分类损失函数 交叉熵损失函数(CrossEntropy Loss)          平衡交叉熵损失

    2024年02月04日
    浏览(34)
  • 深度学习卷积神经网络YOLOv5详解

    Yolov5官方代码中,给出的目标检测网络中一共有4个版本,分别是 Yolov5s、Yolov5m、Yolov5l、Yolov5x 四个模型。 学习一个新的算法,最好在脑海中对 算法网络的整体架构 有一个清晰的理解。 但比较尴尬的是, Yolov5代码 中给出的网络文件是 yaml格式 ,和原本Yolov3、Yolov4中的 cfg 不

    2024年02月04日
    浏览(36)
  • 卷积神经网络(CNN)详细介绍及其原理详解

      本文总结了关于卷积神经网络(CNN)的一些基础的概念,并且对于其中的细节进行了详细的原理讲解,通过此文可以十分全面的了解卷积神经网络(CNN),非常适合于作为Deep Learning的入门学习。下面就是本篇博客的全部内容!   卷积神经网络(Convolutional Neural Networks, C

    2024年02月08日
    浏览(31)
  • 卷积神经网络全解!CNN结构、训练与优化全维度介绍!

    本文全面探讨了卷积神经网络CNN,深入分析了背景和重要性、定义与层次介绍、训练与优化,详细分析了其卷积层、激活函数、池化层、归一化层,最后列出其训练与优化的多项关键技术:训练集准备与增强、损失函数、优化器、学习率调整、正则化技巧与模型评估调优。旨

    2024年02月12日
    浏览(26)
  • 【计算机视觉】万字长文详解:卷积神经网络

    以下部分文字资料整合于网络,本文仅供自己学习用! 如果输入层和隐藏层和之前一样都是采用全连接网络,参数过多会导致 过拟合 问题,其次这么多的参数存储下来对计算机的内存要求也是很高的 解决这一问题,就需要用到——卷积神经网络 这是一种理解卷积的角度(

    2024年02月19日
    浏览(43)
  • 动手学深度学习—卷积神经网络(原理解释+代码详解)

    多层感知机对图像处理是百万维度,模型不可实现。 如果要在图片中找到某个物体,寻找方法应该和物体位置无关。 适合 计算机视觉 的神经网络架构: 平移不变性 :不管检测对象出现在图像中的哪个位置,神经网络前几层应该对相同图像区域有相似的反应。 局部性 :神

    2024年02月14日
    浏览(38)
  • 【深度学习】计算机视觉(五)——卷积神经网络详解

    卷积神经网络(CNN) 卷积神经网络基本上应用于图像数据。假设我们有一个输入的大小(28 * 28 * 3),如果我们使用正常的神经网络,将有2352(28 * 28 * 3)参数。并且随着图像的大小增加参数的数量变得非常大。我们“卷积”图像以减少参数数量。 CNN的输入和输出没什么特别

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包