当前位置: 首页 > news >正文

神经网络-CNN

卷积神经网络 CNN

感受野

感受野(Receptive Field)在卷积神经网络(CNN)中是一个非常重要的概念,它描述了网络中某一层的输出(通常是特征图上的一个像素点)所对应的输入图像上的空间范围。

1. 定义与基本概念

感受野:指的是神经网络中神经元“看到”的输入区域,即卷积神经网络每一层输出的特征图上的像素点在输入图片上映射的区域大小。再通俗点说,就是特征图上的一个点对应输入图上的区域。

局部连接:在卷积层中,每个神经元只与输入数据的一个局部区域相连接,这个局部区域通过卷积核(或滤波器)进行处理。

2. 感受野的特点

层次性:随着网络层次的加深,单个神经元的感受野会逐渐增大。这是因为每一层的输出会成为下一层的输入,从而使得信息的聚合范围扩大。

抽象程度:较低层的神经元通常具有较小的感受野,它们倾向于捕捉局部特征,如边缘等细节信息。而较高层的神经元具有较大的感受野,能够捕捉更抽象的特征,如形状、纹理或对象的部分。

3. 感受野的计算

感受野的大小可以通过数学方式进行计算,这通常涉及到考虑卷积核大小、步长(stride)、填充(padding)以及前面所有层的组合效应

初始感受野:在第一层,感受野直接等于卷积核的大小。

递归计算:对于后续的每一层,可以使用以下公式来计算感受野:

考虑池化层:如果在卷积层之间有池化层,池化层会减少感受野的增长。如果池化层的步长为Sp ,则需要调整感受野的计算。

4. 感受野的作用

影响网络的感知能力:较小的感受野可以捕捉到更细节的特征,但可能会忽略掉更大范围内的信息;较大的感受野可以捕捉到更全局的信息,但可能会忽略掉更细节的特征。

影响网络的计算复杂度:较小的感受野需要更多的卷积层来提取特征,从而增加了计算复杂度;较大的感受野可以通过较少的卷积层来提取特征,从而减少了计算复杂度。

卷积层

CNN 里面最重要的构建单元就是卷积层

神经元在第一个卷积层不是连接输入图片的每一个像素,只是连接它们感受野的像素, 以此类推,第二个卷积层的每一个神经元仅连接位于第一个卷积层的一个小方块的神经 元

在处理 MNIST(手写数字)数据集 的时候,把图像变成 1D 的,现在直接用 2D

卷积的计算

假设有一个 5*5 的图像,使用一个 3*3 的 filter 进行卷积,想得到一个 3*3 的 Feature Ma

bisa截距b

计算结果

彩色图片

在一个特征图里面,所有的神经元共享一样的参数(weights bias),权值共享

不同的特征图有不同的参数

3D图像就是三维图像三通道图像例如RGB图像

stride步长

设定卷积核(滤波器)2D图像水平垂直方向每次运动跨度

Padding 模式
1.VALID

不适用 zero padding,有可能会忽略图片右侧或底下,这个得看 stride 的设置

2.SAME

必要会加 zero padding,这种情况下,输出神经元个数等于输入神经元个数除以步长 ceil(13/5)=3

SAME 模式图像外围填充0左少方式

VALID模式对于不够下一次卷积部分丢弃导致一定的特征丢失

Pooling池化

目标就是降采样 subsample shrink,也可以理解为降维减少计算负荷,内存使用,参数数量(一定程度防止过拟合)

减少输入图片大小也使得神经网络可以经受一点图片平移,不受位置的影响

正如卷积神经网络一样,在池化层中的每个神经元被连接到上面一层输出的神经元,只 对应一小块感受野的区域。我们必须定义大小,步长,padding 类型

池化神经元没有权重值,它只是聚合输入根据取最大或者是求均值

2*2 的池化核,步长为 2,没有填充,只有最大值往下传递,其他输入被丢弃掉了

1.最大池化

2.  平均池化

上图卷积核

1 5

3 2

得到2取平均值向下取整

长和宽两倍小,面积 4 倍小,丢掉 75%的输入值

一般情况下,池化层工作于每一个独立的输入通道,所以输出的深度和输入的深度相同

http://www.lryc.cn/news/498435.html

相关文章:

  • 4.Vue-------this.$set()的使用和详细过程-------vue知识积累
  • 服务器上的常见Linux命令教程
  • 汽车总线协议分析-FlexRay总线
  • Java 集合:强大的数据管理工具
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十九,ffmpeg复用
  • python之Django连接数据库
  • 基于Springboot+Vue的在线答题闯关系统
  • 声音克隆GPT-SoVITS
  • 【STM32 Modbus编程】-作为主设备读取保持/输入寄存器
  • 前端开发入门指南Day 17:TypeScript高级类型(泛型,类型守卫,Partial<T>和 Required<T>等)
  • flex布局容易忽略的角色作用
  • 如何开发高效的企业内训APP?教育培训系统源码搭建实战详解
  • 【软考网工笔记】网络基础理论——传输层
  • 如何预防服务器后台爆破攻击
  • CMake笔记之在CMakeLists.txt文件中开启Debug模式
  • C++编程:模拟实现CyberRT的DataVisitor和DataDispatcher
  • 【Flutter】WillPopScope组件-监听物理返回键事件自定义返回事件
  • 【sqlserver】mssql 批量加载数据文件 bulk copy使用
  • flinkSql中累计窗口CUMULATE
  • 关于在ubuntu上无法运行EasyConnect的解决方法
  • 【Axure高保真原型】数值条件分组
  • python学习——字符串的拼接操作
  • 多线程篇-8--线程安全(死锁,常用保障安全的方法,安全容器,原子类,Fork/Join框架等)
  • el-select的搜索功能
  • MFC实现全屏功能
  • 网络安全技术详解:虚拟专用网络(VPN) 安全信息与事件管理(SIEM)
  • v-model 根据后端接口返回的数据动态地确定要绑定的变量
  • 图形开发基础之在WinForms中使用OpenTK.GLControl进行图形绘制
  • 离散数学重点复习
  • Javaweb梳理21——Servlet