卷积神经网络CNN各层基本知识

news2025/3/1 15:54:19

卷积神经网络

卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层以及全连接层构成。

INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层)

在这里插入图片描述

简单来说:卷积用来提取特征,池化压缩特征,全连接层用来加权重

卷积层

卷积层的作用是用来提取特征,卷积层主要涉及的参数包括:滑动窗口步长,卷积核尺寸,填充边缘,卷积核个数。卷积核的工作原理如下图所示:

img

如下图所示:输入图像是32 * 32 * 3,3是它的深度也就是R、G、B三通道,通过卷积核,在图中卷积核是5 * 5 * 3的filter,其中filter的深度必须和输入图像的深度相同,也就是对应的3,filter可以有很多个。通过一个filter与输入图像的卷积的话,会得到一个28 * 28 * 1的特征图。
在这里插入图片描述

在这里插入图片描述

特得到的具体的特征图尺寸的计算公式如下:
在这里插入图片描述

如上上图中所示:输入的是32 * 32 * 3大小的图像,用10个5 * 5 *3 的fliter进行卷积操作,并指定步长为1,边缘填充为2:

( 32 − 5 + 2 ∗ 2 ) / 1 + 1 = 32 (32-5 + 2*2) / 1 +1 = 32 (325+22)/1+1=32

输出的规模为32 * 32 * 10,经过卷积操作后也可以保持特征图的长度和宽度不变

关于卷积的过程图解析如下:
在这里插入图片描述

输入图像和filter的对应位置元素相乘再求和,最后再加上 b0(偏置),得到特征图。

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

边缘填充:在这里还要注意一点,即zero pad项,即为图像加上一个边界,边界元素均为0,这就叫做边缘填充,是为了更好的提取边界的每个部分的特征,让边界点也可以多次的提取特征,这就是padding的作用。

通常,我们会通过多次的卷积,来提取特征。

卷积参数共享:

通过卷积操作,我们实现了输入图像的局部连接,从而大大减少了网络模型中的参数量。但这还不够,利用图像的另一特性,参数量可以进一步降低。

img

如图所示:10个shape(5,5)的卷积核,每个卷积核在原图中对应一个参数矩阵,大小为5*5。

  1. 如果不共享权值的话,将得到 5 ∗ 5 ∗ 3 ∗ 32 ∗ 32 ∗ 10 + 10 5 * 5 * 3 * 32 * 32* 10 +10 553323210+10 个参数

  2. 如果共享参数的话将有 5 ∗ 5 ∗ 3 ∗ 10 + 10 5 * 5 * 3 *10 + 10 55310+10 个参数

总结如下:

卷积层涉及参数

  1. 滑动窗口步长:能移动越多得到的特征图越大,提取的特征越细腻,常见步长为1
  2. 卷积核尺寸:选择区域的大小—最后得到结果个数的大小,一般3×3
  3. 边缘填充:由于步长选择,有些元素重复加权贡献的,越往里的点贡献多,越往外的点贡献少,是边界点贡献多些,在外面加上一圈0,可以弥补一些边界特征缺失)zero padding 以0为值进行边缘填充
  4. 卷积核个数:最后要得到多少个特征图,注意的是每个卷积核都是不一样的
  5. 卷积参数共享:用同样一组卷积和对图像中每一个区域进行特征提取

池化层

池化层是当前卷积神经网络中常用组件之一,它最早见于LeNet一文,称之为Subsampleor’downsample’即降采样。

池化层是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。
在这里插入图片描述

池化层的常见操作包含以下几种:最大值池化,均值池化,随机池化,中值池化,组合池化等。

池化层压缩过程:在通过卷积层后对特征图进行筛选,滑动窗口(例如:max pooling将该区域最大值提取出来),max pooling过程如下:

在这里插入图片描述

激活函数

激活函数的作用在于提供网络的非线性建模能力。如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机。
  如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

常见的激活函数有:

  • Sigmoid激活函数

    也称为S型生长曲线,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间 。公式如下:

    f ( x ) = 1 1 + e − x f(x)=\frac 1{1+e^{-x}} f(x)=1+ex1

    在这里插入图片描述

  • Tanh激活函数

    Tanh 激活函数又叫作双曲正切激活函数,在数学中,双曲正切"Tanh"是由基本双曲函数双曲正弦和双曲余弦推导而来。公式如下:

  f ( x ) = e z − e − z e z + e − z  f(x)=\frac {e^ {z} - e^ {-z} }{e^ {z} + e^ {-z} } f(x)=ez+ezezez

在这里插入图片描述

优点:比Sigmoid函数收敛速度更快,输出以0为中心。
缺点:由于饱和性产生的梯度消失

在实践中,Tanh 函数的使用优先性高于 Sigmoid 函数。负数输入被当作负值,零输入值的映射接近零,正数输入被当作正值。

为了解决梯度消失问题,我们来讨论另一个非线性激活函数-Relu函数,该函数明显优于前面两个函数,是现在使用最广泛的函数。

  • Relu激活函数

    公式如下:

    R e l u = m a x ( 0 , x ) Relu = max(0,x) Relu=max(0,x)
    在这里插入图片描述

当输入 x<0 时,输出为 0,当 x> 0 时,输出为 x。该激活函数使网络更快速地收敛。它不会饱和,即它可以对抗梯度消失问题,至少在正区域(x> 0 时)可以这样,因此神经元至少在一半区域中不会把所有零进行反向传播。由于使用了简单的阈值化(thresholding),ReLU 计算效率很高。

全连接层

全连接层之前的操作:卷积层、池化层、激活函数等的作用是用来提取特征(将原始数据映射到隐藏层特征空间),而全连接层的作用就是分类(将学到的特征表示映射到样本标记空间当中)

在 CNN 结构中,经多个卷积层和池化层后,连接着1个或1个以上的全连接层.与 MLP 类似,全连接层中的每个神经元与其前一层的所有神经元进行全连接.全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息.为了提升 CNN 网络性能,全连接层每个神经元的激活函数(按你的任务目的选择,分类or回归)。

参考:https://blog.csdn.net/weixin_45829462/article/details/106548749

https://www.zhihu.com/question/41037974/answer/150552142

假设你是一只小蚂蚁,你的任务是找小面包。你的视野还比较窄,只能看到很小一片区域。当你找到一片小面包之后,你不知道你找到的是不是全部的小面包,所以你们全部的蚂蚁开了个会,把所有的小面包都拿出来分享了。全连接层就是这个蚂蚁大会~

如果提前告诉你全世界就只有一块小面包,你找到之后也就掌握了全部的信息,这种情况下也就没必要引入FC层了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[VNCTF2022]easyj4va

看源码 输入 /file?url 1报错 用伪协议可以读取到内容 /file?urlfile:///etc/passwd 然后就是查看java字节码文件的目录 file?urlfile:///usr/local/tomcat/webapps/ROOT/WEB-INF 这里官方给了另外一个协议netdoc&#xff0c;跟file用法是一样的&#xff0c;但是这个netd…

JDK动态代理与Cglib动态代理使用详解

JDK动态代理与Cglib动态代理使用详解一、JDK动态代理准备使用二、Cglib动态代理准备使用Enhancer.create(Class type, Callback callback)Enhancer.create((Class superclass, Class[] interfaces, Callback callback))Enhancer.create(Class superclass, Class[] interfaces, …

【学习笔记35】JavaScript计算两个指定日期的时间差

一、要求 计算两个指定日期的时间差&#xff08;2023年元旦到来的时间&#xff09; 二、分析 先获取到两个时间距离1970&#xff08;格林尼时间&#xff09;~~~毫秒数计算两个毫秒数的差值 ----> 得到了总毫秒数计算总毫秒数内, 有多少个完整的天 parseInt(总毫秒数 / 一天的…

会话跟踪技术-session和cookie

会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。 Cookie通过在客户端记录信息确定用户身份&#xff0c;Session通过在服务器端记录信息确定用户身份。 Cookie对象与HttpSession对象简…

nginx(六十七)http_ssl模块 client与nginx的ssl握手

一 HTTPS握手机制 关注点&#xff1a; SSL/TLS握手的细节与nginx配置指令的关系核心&#xff1a; 讲解客户端(下游)与作为server端的nginx之间的握手最佳实践&#xff1a; 建议在http块中通过include ssl.conf把共工部分抽离处理ssl/tls报错原因&#xff1a;可能是客户端或服…

Flutter高仿微信-第56篇-搜索好友

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; /*** Author : wangning* Email : maoning20080809163.co…

Java---Stream流详解

目录​​​​​​​ 一、Stream流详解 二、Stream流的获取 &#xff08;1&#xff09;单列集合 &#xff08;2&#xff09;双列集合 &#xff08;3&#xff09;数组 &#xff08;4&#xff09;一些零散数据 三、Stream流中常用的API方法 &#xff08;1&#xff09;中间…

含可再生能源的热电联供型微网经济运行优化_粒子群PSO算法_matlab程序

含可再生能源的热电联供型微网经济运行优化matlab程序 参考文献&#xff1a;含可再生能源的热电联供型微网经济运行优化 热电联供系统具有节能! 环保! 经济等特点" 有着良好的发展前景和应用价值# 文中针对由 风电机组! 光伏电池! 燃料电池! 余热锅炉! 燃气锅炉! 蓄电池以…

含电热联合系统的微电网运行优化附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

SpringBoot+Vue项目投稿和稿件处理系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

MYSQL中的锁

全局锁 就是对整个数据库进行加锁&#xff0c;加锁之后整个数据库就处于只读状态&#xff0c;后续的DML写语句&#xff0c;DDL语句&#xff0c;以及对更新事务的提交操作都会被阻塞&#xff0c;典型地使用场景就是做整个数据库的逻辑备份&#xff0c;对所有的表进行锁定&#x…

非凡社群管理之如何高效的进行社群管理

一、初始成员的严格筛选 我们建立社群初期&#xff0c;就要严格筛选初始会员&#xff0c;争取让我们找到的第一批种子用户&#xff0c;就是有着共同的连接点。而不是找到一群人之后&#xff0c;再去培养大家的同好。这样不仅吃力不讨好&#xff0c;往往效果也不太高&#xf…

Kafka系列之:实现Kafka Connect集群访问认证

Kafka系列之:实现Kafka Connect集群访问认证 一、Kafka Connect访问控制二、Kafka Connect技术知识三、详细介绍Kafka connect访问认证实现过程四、启动Kafka Connect集群五、测试Kafka Connect集群访问认证一、Kafka Connect访问控制 实现的效果如下所示: 错误的用户名和密…

nginx降权及匹配php

1.nginx降权 1.1 capabilities的介绍与运用 1.2 用普通用户启动nginx 1.3 root用户权限赋予 1.4 查看普通用户的nginx权限 1.5 查看nginx的欢迎网页 2.nginx与php的相互匹配 2.1 安装php及php-fpm包 2.2 检查php-fpm服务运行状态 2.3 php-fpm上的配置 2.4 nginx上的配…

基于matlab的精馏塔作业模拟仿真

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 原料物性表如下&#xff1a; 表3-1原料物理性质表 组分 质量流率 质量分数 摩尔流率 摩尔分数 分子量 常压沸点 丙烷 472.938 7.567…

SpringBoot SpringBoot 原理篇 1 自动配置 1.9 bean 的加载方式【七】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.9 bean 的加载方式【七】1.9.1 ImportBeanDefinitionRegistrar1 …

mysql 到底是 join性能好,还是in一下更快呢

先总结&#xff1a; 数据量小的时候&#xff0c;用join更划算数据量大的时候&#xff0c;join的成本更高&#xff0c;但相对来说join的速度会更快数据量过大的时候&#xff0c;in的数据量过多&#xff0c;会有无法执行SQL的问题&#xff0c;待解决 事情是这样的&#xff0c;去…

浅谈Spring Cloud Gateway源码

本文不谈Spring Cloud Gateway相关的使用&#xff0c;仅梳理在微服务项目中&#xff0c;在使用Spring Cloud Gateway做为服务网关后&#xff0c;接收到请求后的大体执行流程。 文章目录大致流程图具体流程一、DispatcherHandler二、getHandler1、getHandlerInternal2、lookupRo…

【GlobalMapper精品教程】027:路径剖面和和视线工具的使用

文章目录 一、路径剖面简介二、创建剖面图1. 加载DEM2. 创建剖面图3. 计算填挖方3. 保存剖面图一、路径剖面简介 路径剖面视线工具允许您使用加载的高程数据集沿用户指定的路径获取垂直剖面。 要定义生成3D路径剖面所遵循的路径,只需单击鼠标左键选择路径的点,然后石键单击…

[acwing周赛复盘] 第 60 场周赛20220716

[acwing周赛复盘] 第 60 场周赛20220716 一、本周周赛总结二、 4722. 数列元素1. 题目描述2. 思路分析3. 代码实现三、4723. 队列1. 题目描述2. 思路分析3. 代码实现四、4724. 靓号1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 第一次打acwing&#xff0c;…