卷积神经网络概述

卷积神经网络之卷积层理解(持续更新) 卷积神经网络中卷积层的理解与代码实现。 阅读详情

转自原博客:https://blog.youkuaiyun.com/yjl9122/article/details/70198357 卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层)

卷积层

用它来进行特征提取,如下:


输入图像是32*32*3,3是它的深度(即R、G、B),卷积层是一个5*5*3的filter(感受野),这里注意:感受野的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28*28*1的特征图,上图是用了两个filter得到了两个特征图;

我们通常会使用多层卷积层来得到更深层次的特征图。如下:



关于卷积的过程图解如下:



输入图像和filter的对应位置元素相乘再求和,最后再加上b,得到特征图。如图中所示,filter w0的第一层深度和输入图像的蓝色方框中对应元素相乘再求和得到0,其他两个深度得到2,0,则有0+2+0+1=3即图中右边特征图的第一个元素3.,卷积过后输入图像的蓝色方框再滑动,stride(步长)=2,如下:

如上图,完成卷积,得到一个3*3*1的特征图;在这里还要注意一点,即zero pad项,即为图像加上一个边界,边界元素均为0.(对原输入无影响)一般有

F=3 => zero pad with 1
F=5 => zero pad with 2
F=7=> zero pad with 3,边界宽度是一个经验值,加上zero pad这一项是为了使输入图像和卷积后的特征图具有相同的维度,如:

输入为5*5*3,filter为3*3*3,在zero pad 为1,则加上zero pad后的输入图像为7*7*3,则卷积后的特征图大小为5*5*1((7-3)/1+1),与输入图像一样;
而关于特征图的大小计算方法具体如下:


这里写图片描述

卷积层还有一个特性就是“权值共享”原则。如下图:


如没有这个原则,则特征图由10个32*32*1的特征图组成,即每个特征图上有1024个神经元,每个神经元对应输入图像上一块5*5*3的区域,即一个神经元和输入图像的这块区域有75个连接,即75个权值参数,则共有75*1024*10=768000个权值参数,这是非常复杂的,因此卷积神经网络引入“权值”共享原则,即一个特征图上每个神经元对应的75个权值参数被每个神经元共享,这样则只需75*10=750个权值参数,而每个特征图的阈值也共享,即需要10个阈值,则总共需要750+10=760个参数。

所谓的权值共享就是说,给一张输入图片,用一个filter去扫这张图,filter里面的数就叫权重,这张图每个位置就是被同样的filter扫的,所以权重是一样的,也就是共享。

激活函数

如果输入变化很小,导致输出结构发生截然不同的结果,这种情况是我们不希望看到的,为了模拟更细微的变化,输入和输出数值不只是0到1,可以是0和1之间的任何数,

激活函数是用来加入非线性因素的,因为线性模型的表达力不够
这句话字面的意思很容易理解,但是在具体处理图像的时候是什么情况呢?我们知道在神经网络中,对于图像,我们主要采用了卷积的方式来处理,也就是对每个像素点赋予一个权值,这个操作显然就是线性的。但是对于我们样本来说,不一定是线性可分的,为了解决这个问题,我们可以进行线性变化,或者我们引入非线性因素,解决线性模型所不能解决的问题。
这里插一句,来比较一下上面的那些激活函数,因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。
这就导致了tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来,但有是,在特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。
还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。

构建稀疏矩阵,也就是稀疏性,这个特性可以去除数据中的冗余,最大可能保留数据的特征,也就是大多数为0的稀疏矩阵来表示。其实这个特性主要是对于Relu,它就是取的max(0,x),因为神经网络是不断反复计算,实际上变成了它在尝试不断试探如何用一个大多数为0的矩阵来尝试表达数据特征,结果因为稀疏特性的存在,反而这种方法变得运算得又快效果又好了。所以我们可以看到目前大部分的卷积神经网络中,基本上都是采用了ReLU 函数。

常用的激活函数
激活函数应该具有的性质:
(1)非线性。线性激活层对于深层神经网络没有作用,因为其作用以后仍然是输入的各种线性变换。。
(2)连续可微。梯度下降法的要求。
(3)范围最好不饱和,当有饱和的区间段时,若系统优化进入到该段,梯度近似为0,网络的学习就会停止。
(4)单调性,当激活函数是单调时,单层神经网络的误差函数是凸的,好优化。
(5)在原点处近似线性,这样当权值初始化为接近0的随机值时,网络可以学习的较快,不用可以调节网络的初始值。
目前常用的激活函数都只拥有上述性质的部分,没有一个拥有全部的~~

  • Sigmoid函数


    目前已被淘汰
    缺点:
    ∙ 饱和时梯度值非常小。由于BP算法反向传播的时候后层的梯度是以乘性方式传递到前层,因此当层数比较多的时候,传到前层的梯度就会非常小,网络权值得不到有效的更新,即梯度耗散。如果该层的权值初始化使得f(x) 处于饱和状态时,网络基本上权值无法更新。
    ∙ 输出值不是以0为中心值。

  • Tanh函数


    这里写图片描述

    其中σ(x) 为sigmoid函数,仍然具有饱和的问题。

  • ReLU函数


    这里写图片描述

    Alex在2012年提出的一种新的激活函数。该函数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题

    优点:
    ∙ x>0 时,梯度恒为1,无梯度耗散问题,收敛快;
    ∙ 增大了网络的稀疏性。当x<0 时,该层的输出为0,训练完成后为0的神经元越多,稀疏性越大,提取出来的特征就约具有代表性,泛化能力越强。即得到同样的效果,真正起作用的神经元越少,网络的泛化性能越好
    ∙ 运算量很小;
    缺点:
    如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。
    由优缺点可知max(0,x) 函数为一个双刃剑,既可以形成网络的稀疏性,也可能造成有很多永远处于‘die’的神经元,需要tradeoff。

  • Leaky ReLU函数


    这里写图片描述
    改善了ReLU的死亡特性,但是也同时损失了一部分稀疏性,且增加了一个超参数,目前来说其好处不太明确

  • Maxout函数


    这里写图片描述

泛化了ReLU和Leaky ReLU,改善了死亡特性,但是同样损失了部分稀疏性,每个非线性函数增加了两倍的参数

真实使用的时候最常用的还是ReLU函数,注意学习率的设置以及死亡节点所占的比例即可

池化层

对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征,如下:


这里写图片描述

池化操作一般有两种,一种是Avy Pooling,一种是max Pooling,如下:


这里写图片描述

同样地采用一个2*2的filter,max pooling是在每一个区域中寻找最大值,这里的stride=2,最终在原特征图中提取主要特征得到右图。
(Avy pooling现在不怎么用了,方法是对每一个2*2的区域元素求和,再除以4,得到主要特征),而一般的filter取2*2,最大取3*3,stride取2,压缩为原来的1/4.
注意:这里的pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补(这里的深度变为原来的2倍)。


在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合)。

为什么可以通过降低维度呢?
因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)来代表这个区域的特征。

  • 一般池化(General Pooling)

    池化作用于图像中不重合的区域(这与卷积操作不同),过程如下图。

    我们定义池化窗口的大小为sizeX,即下图中红色正方形的边长,定义两个相邻池化窗口的水平位移/竖直位移为stride。一般池化由于每一池化窗口都是不重复的,所以sizeX=stride。


    这里写图片描述

    最常见的池化操作为平均池化mean pooling和最大池化max pooling:
    平均池化:计算图像区域的平均值作为该区域池化后的值。
    最大池化:选图像区域的最大值作为该区域池化后的值。

  • 重叠池化(OverlappingPooling
    重叠池化正如其名字所说的,相邻池化窗口之间会有重叠区域,此时sizeX>stride。
    论文中Krizhevsky, I. Sutskever, andG. Hinton, “Imagenet classification with deep convolutional neural networks,”in NIPS,2012.中,作者使用了重叠池化,其他的设置都不变的情况下, top-1和top-5 的错误率分别减少了0.4% 和0.3%。

  • 空金字塔池化(Spatial Pyramid Pooling)
    空间金字塔池化可以把任何尺度的图像的卷积特征转化成相同维度,这不仅可以让CNN处理任意尺度的图像,还能避免cropping和warping操作,导致一些信息的丢失,具有非常重要的意义。
    一般的CNN都需要输入图像的大小是固定的,这是因为全连接层的输入需要固定输入维度,但在卷积操作是没有对图像尺度有限制,所有作者提出了空间金字塔池化,先让图像进行卷积操作,然后转化成维度相同的特征输入到全连接层,这个可以把CNN扩展到任意大小的图像
    这里写图片描述

    空间金字塔池化的思想来自于Spatial Pyramid Model,它一个pooling变成了多个scale的pooling。用不同大小池化窗口作用于卷积特征,我们可以得到1X1,2X2,4X4的池化结果,由于conv5中共有256个过滤器,所以得到1个256维的特征,4个256个特征,以及16个256维的特征,然后把这21个256维特征链接起来输入全连接层,通过这种方式把不同大小的图像转化成相同维度的特征。


    这里写图片描述
    对于不同的图像要得到相同大小的pooling结果,就需要根据图像的大小动态的计算池化窗口的大小和步长。假设conv5输出的大小为a*a,需要得到n*n大小的池化结果,可以让窗口大小sizeX为,步长为 。下图以conv5输出的大小为13*13为例。

全连接层

连接所有的特征,将输出值送给分类器(如softmax分类器)。

总的一个结构大致如下:
这里写图片描述

CNN概述 卷积神经网络(Convolutional Neural Networks, CNN)是一种专门用于处理网格状数据(如图像或时间序列)的深度学习神经网络。CNN通过引入卷积操作、池化操作和全连接层,能够高效地提取数据中的空间特征,特别适用于图像分类、目标检测、图像分割等任务。参数共享:卷积核在整个输入上滑动,减少了参数量。局部感知:通过感受野(receptive field)捕捉局部特征。平移不变性:对输入的平移具有一定的鲁棒性。 阅读详情

相关推荐

神经网络基础部件-卷积层详解

本文深度讲解了卷积计算的原理,并详细介绍了构成所有卷积网络主干的基本元素,包括卷积层本身、填充(padding)和步幅 (stride)的基本细节、用于在相邻区域汇聚信息的汇聚层(pooling),最后给出卷积层和汇聚层的代码示例和CNN框架结构图。

专注计算机视觉算法训练,算法优化部署以及SDK开发的知识分享。 2421

卷积层

深度学习基础理论-CNN篇卷积层卷积层(convolution layer)是卷积神经网络中的基础操作,甚至在网络最后起分类作用的全连接层在工程实现时也是由卷积操作替...

PaddlePaddle 1万+

卷积神经网络(CNN)从 Sobel 核到 ConvNeXt 的深度之旅

本文深入解析了卷积神经网络(CNN)的核心原理与数学本质。从1998年Yann LeCun提出CNN解决图像识别问题开始,逐步揭示CNN超越传统MLP的关键:局部连接、权重共享和平移不变性三大归纳偏置。通过7张交互式动图,详细演示了2D卷积的数学运算过程,包括多通道卷积、输出尺寸计算等核心概念。文章对比了CNN与全连接网络的参数量差异(1700参数vs1.5亿参数),解释了CNN在计算机视觉革命中的决定性作用。最后系统介绍了CNN的关键构件:Stride、Padding、Pooling和BatchNorm,

hello.reader 9409

卷积层详解

卷积神经网络卷积层在pycharm中实现并可视化展示

ss20211121的博客 6842

转录组分析中的Fastp和FastQC:如何快速检测数据质量并优化流程

本文深入探讨了转录组分析中数据质量控制的核心流程,重点介绍了Fastp和FastQC两款工具的组合应用。FastQC负责对原始测序数据进行全面质量评估,生成可视化报告;Fastp则能一站式完成接头切除、低质量序列过滤、长度筛选等关键质控步骤。文章提供了详细的参数解读、实战脚本和自动化流程构建指南,帮助研究人员快速检测数据质量并优化预处理流程,为下游的差异表达等分析奠定可靠基础。

weixin_28452161的博客 181

AHB协议中hreadyout和hready_in的区别

上面这张时序图表明master有两笔写传输,第一笔传输为slave1(s1),传输类型为SEQ,在第一笔传输的第二个周期,也就是第一笔传输的dataphase,此时slave1没有准备好被写数据,因此把s1_hreadyout拉低,但此时slave2已经看到自己的NONSEQ传输了,而且slave2已经是准备好了的。重新拿上面的仿真图看一下,由于前一个周期的s1_hreadyout为低电平,所以s2的hready_in也为低电平,那么该周期s2不会对addr以及控制信号进行采样。就不会出现上面的问题。...

weixin_44101336的博客 2865

CNN卷积神经网络图解概述

CNN卷积神经网络概述什么是神经网络神经网络的基本单位前馈神经网络卷积神经网络为什么要卷积神经网络什么是卷积一维卷积二维卷积卷积神经网络结构卷积层汇聚层全连接层 什么是神经网络 人工神经网络实质上是数学模型,这些模型主要是通过对人脑的神经元网络进行抽象,构建人工神经元,并按照一定拓扑结构来建立人工神经元之间的连接,来模拟生物神经网络. 神经网络的基本单位 神经元,是构成神经网络的基本单元,其主要是...

weixin_43731369的博客 6296

DMA+Timer 生成 PWM 波形错位问题分析与解决

本文深入分析了DMA与Timer协同生成PWM波形时出现的错位问题,揭示了DMA传输启动时机与定时器溢出中断的微妙关系。通过占空比强制清零法和预装载值调校技巧,提供了有效的解决方案,并总结了PWM+DMA配置的最佳实践,帮助开发者避免类似问题。

weixin_29191081的博客 348

CNN卷积神经网络概述

目录 1 概述 2  一般结构 (1)输入层 (2)卷积层 (3)激励层 sigmoid tanh ReLu (4)池化层 (5)全连接层 (6)输出层 (7)中间层 3 CNN应用 4 常见神经网络 主要对网上的一些神经网络信息进行总结。 1 概述 在卷积神经网络(Convolutional Neural Network,CNN)中,卷积层的神经元只与前一层的部分神经元节点相连,它的神经元间的连接是非全连接的,且同一层中某些神经元之间的连接的权重w和偏置b是共享的,大量地

Chriey的专栏 1085

数字设计与计算机体系结构习题答案,数字设计和计算机体系结构习题答案DigitalDesignandComputerArchitecture.pdf...

数字设计和计算机体系结构习题答案DigitalDesignandComputerArchitecture.pdfDavid Money Harris and Sarah L. Harris, Digital Design and Computer Architecture, © 2007 by Elsevier Inc.Exercise SolutionsC H A P T E R ...

weixin_39851408的博客 1785

MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)

   分析大脑解剖学差异最常用方法之一是基于体素的形态学方法(voxel-based morphometry, VBM)。 VBM的基本思想是测量大脑组织,尤其是灰质的局部浓度的差异。在大脑的每个体素处进行操作,然后在两个或多个实验组之间进行统计比较,从而在受调查的组之间建立特定大脑区域中脑组织浓度的统计学显着差异。 VBM分析基于(高分辨率)MRI脑部扫描,涉及大量处理步骤,主要是空间归一化,分割,平滑和统计分析,最终结果是统计图,显示了各组之间组织类型明显不同的区域[^1]。 参考 [^1] ..

意疏的学习笔记 3万+

CNN(卷积神经网络)概述

过去几年,深度学习(Deep learning)在解决诸如视觉识别(visual recognition)、语音识别(speech recognition)和自然语言处理(natural language processing)等很多问题方面都表现出非常好的性能。在不同类型的深度神经网络当中,卷积神经网络是得到最深入研究的。早期由于缺乏训练数据和计算能力,要在不产生过拟合(overfittin

RAO_OO的博客 5107

Visual Studio Community与Visual Studio Community与VS Code有啥区别

Visual Studio Code提供了基本的代码编辑、调试和版本控制功能,以及丰富的插件和扩展库。Visual Studio Community和Visual Studio Code在功能上有很大的差异,Visual Studio Community提供了比Visual Studio Code更多的功能,包括代码重构、智能提示、图形化设计等。他的优势在于它的轻量级和灵活性。此外,Visual Studio Code还具有丰富的扩展和插件生态系统,用户可以通过安装插件来扩展其功能,从而满足自己的需求。

m0_56551554的博客 2843

卷积神经网络CNN算法思想概述

卷积神经网络(CNN)的诞生源于传统神经网络处理图像时面临的数据量过大和参数爆炸问题。受生物视觉系统"感受野"概念启发,CNN通过局部连接和参数共享实现高效特征提取。其核心结构包含卷积层(使用可学习的滤波器检测边缘特征)、池化层(降维并保留关键特征)和全连接层(最终分类)。卷积层通过零填充和步长控制输出尺寸,多通道设计可处理复杂特征。池化层则提升计算效率和模型鲁棒性。CNN通过层次化特征学习,有效解决了图像处理中的维度灾难问题。

m0_64797742的博客 920

电气论文实现:前推回代在IEEE33节点中的潮流计算实现(matlab,python)

本文首先介绍了前推回代的原理。然后基于IEEE33节点算例,分别用python和matlab运用前推回代进行了潮流计算。

总裁余(余登武)博客 8608

Silvaco TCAD 半导体器件仿真全攻略:从入门到精通

本文介绍了Silvaco TCAD半导体器件仿真平台的核心功能与应用方法。主要内容包括: Silvaco TCAD的核心模块组成(ATHENA工艺仿真和ATLAS器件仿真)及其在半导体研发中的重要作用,能够通过数值仿真预测器件电学特性,显著降低研发成本。 环境配置要点,包括内存分配、文件目录管理和许可证验证,为仿真工作提供基础保障。 仿真核心概念:详细讲解了网格划分策略和物理模型选择原则,强调基于物理直觉的自适应加密网格方法。 以PN结二极管为例,提供了完整的仿真代码示例,涵盖从网格定义、掺杂设置到结果分析

huanghm88的专栏 198

深度学习~卷积神经网络(CNN)概述

卷积神经网络(Convolutional Neural Network,简化为ConvNet或CNN)是一种前馈神经网络,其中信息从输入到卷积运算符单向流动到输出[93]。 reference: H. Cecotti and A. Graser, “Convolutional neural networks for p300 detection with application to brain-computer interfaces,”IEEE transactions on pattern an

惟天有汉,故国有明的博客 3504

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【图像识别】卷积神经网络CNN详细概述

一 基本概念 卷积神经网络与普通神经网络非常相识,它们都是由神经元组成,有拥有学习性的权重和偏置。每隔 卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层(池化层)构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征图(featureMap),每个特征图由一些矩形排列的的神经元组成,同一特征图的神经元共...

See_Star的博客 4581

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【从诞生至2025初】CNN概述

多年来,卷积神经网络(CNN)得到了长足的发展,在图像分类、物体检测和分割等各种计算机视觉任务中取得了卓越的性能。本文概述了截至 2025 年最先进的 CNN 架构和概念

m0_59600417的博客 3619

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

卷积神经网络CNN概述

卷积神经网络(CNN),通过卷积层与池化层的叠加实现对输入数据的特征提取,最后连接全连接层实现分类。对于图像处理有出色表现,在计算机视觉(CV)中得到了广泛应用。从某种意义上说CNN主要用于图像类数据的处理。 卷积神经网络相比传统的机器学习算法,无须手工提取特征,也不需要使用诸如SIFT之类的特征提取算法来预提取,而是可以在训练中自动完成特征的提取和抽象,并同时进行模式分类,大大降低了应用图像识别的难度。 卷积神经网络是一种具有局部连接、权值共享等特性的深层前馈神经网络,因此是一个静态网络,信息的传递是单向

lovecode2008的博客 372

CNN发展史脉络 概述图整理

CNN发展史脉络概述图整理,自己学习论文心得,供参考。

just 1656
上一篇: numpy学习笔记1—ravel() 和 flatten()
下一篇: 向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等)
菜鸟方圆圆
博客等级 码龄10年 26粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值