首页 > 其他分享 >卷积神经网络CNN

卷积神经网络CNN

时间:2024-09-04 16:03:53浏览次数:12  
标签:滤波器 卷积 步幅 神经网络 图像 CNN 输入 神经元

非原创,转录自知乎 https://zhuanlan.zhihu.com/p/156926543 ,仅作学习笔记之用。

一、卷积神经网络

1. 定义

  卷积神经网络(Convolutional Neural Networks)是一种包含卷积计算且具有深度结构的前馈神经网络,CNN具有表征学习的能力,能够按阶层对输入数据进行平移不变分类。

表征学习:也叫特征学习即将原始数据转换成为能够被机器学习来有效开发的一种形式。

2. CNN的架构

CNN架构图

二、 CNN的层级结构

1. 输入层

  • 去中心化,将样本中心值作为原点,具体实现为将样本值除以样本均值.
  • 归一化,将样本坐标幅度缩减到0-1之间,降低样本差异带来的干扰。
  • PCA降维,将高维数据投影到低维上,保留主要特征,降低数据复杂度。

2.卷积层

卷积层计算有两个关键步骤:

  • 局部关联:将每个神经元看做一个滤波器(filter)
  • 窗口滑动:filter对局部数据计算

  卷积的实现涉及三个参数,步幅(stride),滤波器的尺寸,填充(padding)。卷积的计算过程就是步幅控制着滤波器进行卷积操作,如下有一 7x7 的输入图像,滤波器尺寸为3x3,步幅为一。

卷积计算

感受野
  步幅的变化引起感受野的变化,感受野最初出现在1968Hubel和Wiesel的论文,这篇论文讲述猫和猴的视觉皮层含有对视野的小区域单独反应的神经元,在生物学中,感受野通常指的是视觉系统中的某个感知神经元(如视网膜神经元或大脑皮层中的视觉神经元)对视野中某一部分的光刺激做出反应的区域。在计算机领域,感受野是用来描述网络中某一层的神经元对输入图像的哪个区域敏感,感受野的大小决定了神经元能够捕捉到多少上下文信息

填充(padding)
  卷积计算会减小数据的空间维度,在网络的早期层,我们希望更多地保留原始输入内容的信息,方便提取底层的特征,此时我们可以用到填充的方式,如图所示,我们有一个32x32x3的输入图像,使用5x5x5的滤波器进行卷积,输出为28x28x3,为了使得输出图像维度为32x32x3,我们可以在输入图像外侧进行零填充,应用大小为2的零填充后,输入图像更新为36x36x3,这样使用5x5x3的滤波器仍能得到32x32x3的输出。
  如果步幅为1,计算零填充的大小有如下公式,K为滤波器尺寸:

Zero Padding = \(\frac{K-1}{2}\)

  计算任意给定卷积层的输出大小公式为(其中O为输出尺寸,W为输入尺寸,K为滤波器大小,P为填充大小,S为步幅):

O = \(\frac{W-K+2P}{S}\) + 1

卷积层计算
  该动态图形象地展示了卷积层计算的过程,这里步幅设置为2,卷积计算的结果为输入图像矩阵乘以对应神经元的权重值w,再加上偏置值b。:

参数共享机制
  在卷积层中每个神经元连接数据窗的权重是一定的,每个神经元只关注一个特性,神经元就是图像处理中的滤波器,每个滤波器都会有自己关注的特性,逼比如垂直边缘,水平边缘,颜色纹理等等,所有神经元加起来就是整个图像的特征提取集合。

需要减少的权重参数:AlexNet 1亿 => 3.5w

3. 激活层

  激活层的作用是把卷积结果做非线性映射,CNN常用的激活函数为ReLU,它的特点是收敛快,求梯度简单,但较脆弱。

4. 池化层

  池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。
池化层的具体作用:

  • 特征不变性:
      图像压缩时只去掉一些无关紧要的信息,保留重要特征,比如一张小狗的图片缩小后我们仍然能认出图像中是一条狗。
  • 特征降维:
      去掉冗余特征,提取重要特征。
  • 在一定程度上防止过拟合,更方便优化。

  池化层常用的方法有两个Max pooling和Average pooling,Max pooling的思想非常简单,将选定的2x2窗口中的最大值作为池化结果。

5. 全连接层

  两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的

标签:滤波器,卷积,步幅,神经网络,图像,CNN,输入,神经元
From: https://www.cnblogs.com/fqlb/p/18396470

相关文章

  • 基于CNN卷积神经网络迁移学习的图像识别实现
    基于CNN卷积神经网络迁移学习的图像识别实现基于CNN卷积神经网络迁移学习的图像识别实现写在前面一,原理介绍迁移学习的基本方法1.样本迁移(InstancebasedTL)2.特征迁移(FeaturebasedTL)3.模型迁移(ParameterbasedTL)4.关系迁移(RelationbasedTL)二.准备工作1.依赖库安......
  • 【机器学习-神经网络】循环神经网络
    【作者主页】FrancekChen【专栏介绍】⌈⌈⌈Python机器学习⌋......
  • 深入理解神经网络:从基础到深度学习
    深入理解神经网络:从基础到深度学习前言1.神经元模型的构建代码示例:M-P神经元模型2.感知机与多层网络的实现代码示例:简单感知机模型3.误差逆传播算法(BP)的实践代码示例:BP算法的简化实现4.探索全局最小与局部极小5.常见的神经网络模型6.深度学习的前沿应用结语......
  • 神经网络之卷积篇:详解池化层(Pooling layers)
    详解池化层除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,来看一下。先举一个池化层的例子,然后再讨论池化层的必要性。假如输入是一个4×4矩阵,用到的池化类型是最大池化(maxpooling)。执行最大池化的树池是一个2×2矩阵。执行过程......
  • SSA(麻雀优化算法)+CNN+LSTM时间序列预测算法(python代码)
    1.SSA(SparrowSearchAlgorithm)简介:SSA是一种新兴的群体智能优化算法,模拟麻雀觅食行为。麻雀群体中的“发现者”负责寻找食物,并将信息传递给“追随者”,后者根据这一信息进行觅食。SSA通过这种合作机制寻找最优解。SSA在优化问题中可以视为一种元启发式算法,擅长在复杂搜索......
  • 智能烟火识别预警软件 CNN
    智能烟火识别预警软件采用人工智能技术,智能烟火识别预警软件在工厂、工地等场所利用已经安装的摄像头,智能烟火识别预警软件对场内的烟花爆竹进行实时监测。当场内出现烟花爆竹时,智能烟火识别预警软件将自动发出警报,并通过人工智能算法通知现场管理人员进行处理。智能烟火识别预警软......
  • Blender多角度深度图depth map渲染,MVCNN数据生成
    现在在网上已有开源代码来生成论文中推荐的Phong渲染多视图,代码解析如下:https://blog.csdn.net/jorg_zhao/article/details/88345324,代码链接大佬传在了github上:https://github.com/zeaggler/ModelNet_Blender_OFF2Multiview该代码包针对phong渲染提供了Blender配置文件,渲......
  • 【深度学习】嘿马深度学习笔记第7篇:卷积神经网络,学习目标【附代码文档】
    本教程的知识点为:深度学习介绍1.1深度学习与机器学习的区别TensorFlow介绍2.4张量2.4.1张量(Tensor)2.4.1.1张量的类型TensorFlow介绍1.2神经网络基础1.2.1Logistic回归1.2.1.1Logistic回归TensorFlow介绍总结每日作业神经网络与tf.keras1.3神经网络基础......
  • pyro ExponentialLR 如何设置优化器 optimizer的学习率 pytorch 深度神经网络 bnn,
     第一。pyro不支持“ReduceLROnPlateau”,因为需要Loss作为输入数值,计算量大pytorch的学习率调整视频看这个博主的视频05-01-学习率调整策略_哔哩哔哩_bilibili第二,svi支持 scheduler注意点,属于 pyro.optim.PyroOptim的有三个AdagradRMSPropClippedAdamDC......
  • 【CPO-BP】基于冠豪猪优化算法优化BP神经网络的风电功率预测研究(Matlab代码实现)
         ......