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

卷积神经网络各层介绍

目录

1 卷积层

2 BN层

3 激活层

3.1 ReLU(Rectified Linear Unit)

3.2 sigmoid

3.3 tanh(双曲正切)

3.4 Softmax

4 池化层

5 全连接层

6 模型例子


1 卷积层

        卷积是使用一个卷积核(滤波器)对矩阵进行内积(相乘后求和)的操作,通过该操作可以获得输入矩阵(图片)的重要信息,在此基础上,更深层次的卷积操作会获得更重要的特征信息。

一个 padding = 1, stride = 2,kernel size = 3 的单通道卷积过程示意图如下:

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

参数:

  • in_channels (int): 输入通道数,即输入图像的深度。例如,对于 RGB 图像,这个值通常为 3。
  • out_channels (int): 输出通道数,即卷积核的数量。每个卷积核会提取一个特征图。
  • kernel_size (int 或 tuple): 卷积核的大小。如果是正方形,可以只用一个整数表示,例如 3 表示 3x3 的卷积核。
  • stride (int 或 tuple, 可选): 卷积操作的步长,默认为 1。
  • padding (int 或 tuple, 可选): 输入的每一边要填充的像素数量,默认为 0。
  • dilation (空洞卷积,int 或 tuple, 可选): 卷积核元素之间的间距,默认为 1。
  • groups (分组卷积,int, 可选): 控制输入和输出之间的连接方式,默认为 1。groups 值大于 1 时,相当于对输入进行组卷积。
  • bias (bool, 可选): 如果 True,添加一个学习偏置,默认为 True。
  • padding_mode (str, 可选): 填充模式,可以是 'zeros'(默认,零填充)、'reflect'(反射填充,矩阵边缘为对称轴)、'replicate'(复制矩阵边缘的值) 或 'circular'。

卷积操作输出图片大小的计算公式:

多通道输入

输入图片是多通道的,则卷积核对应也是多通道(多维)的,之后对卷积结果进行求和得到一个二维矩阵

参考文档

卷积操作原理解析与nn.Conv2d用法详解icon-default.png?t=O83Ahttps://blog.csdn.net/sazass/article/details/116790155

PyTorch Conv2d中的四种填充模式解析icon-default.png?t=O83Ahttps://www.jianshu.com/p/a6da4ad8e8e7

2 BN层

BN层的作用

  • 加快网络的训练和收敛的速度
  • 控制梯度爆炸防止梯度消失
  • 防止过拟合(存在争议)

注:BN层一般接在线性层和卷积层后面

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  • num_features: 整数,表示输入特征的数量,即输入通道数。例如,对于一个三通道的RGB图像,num_features 应该设置为3。对于卷积层的输出,这个值通常是卷积核的数量。
  • eps: 浮点数,一个非常小的值,用于数值稳定性。默认值为1e-5。在计算方差时,会加上这个值以避免除以零的情况。
  • momentum: 浮点数,动量因子,用于更新运行均值和方差。默认值为0.1。动量可以帮助稳定均值和方差的估计,特别是在小批量数据的情况下。
  • affine: 布尔值,是否使用可学习的仿射变换参数。如果设置为 True(默认值),则会学习缩放和平移参数。如果设置为 False,则不使用这些参数,仅进行标准化处理。

参考文档

神经网络中BN层的原理与作用icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_42080490/article/details/108849715

BN(Batch Normalization)层原理与作用icon-default.png?t=O83Ahttps://blog.csdn.net/chaipp0607/article/details/112853861

3 激活层

        为什么要用激活函数?激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

下图是使用sigmoid激活函数去逼近一个非线性函数

下图中不同的参数c、b、w构成的sigmoid函数(这里就这样表述吧)也不同

如下图所示,不同的sigmoid函数(蓝色显示)可以构成一个新的sigmoid函数(红色显示)

下图x是输入,y是输出,函数是我们训练的模型,其它的是训练得到的参数

3.1 ReLU(Rectified Linear Unit)

  • 公式:
  • 优点:
    • 计算简单,梯度下降时计算效率高。
    • 在正域内不会产生梯度消失问题。
  • 缺点:
    • 负域内的梯度为0,可能导致“神经元死亡”现象。
    • 不是以0为中心的输出。

3.2 sigmoid

  • 公式
  • 优点:
    • 求导容易,输出范围在0到1之间,可以作为概率解释。
  • 缺点:
    • 容易产生梯度消失问题。
    • 计算复杂度较高。

3.3 tanh(双曲正切)

  • 公式
  • 优点:
    • 输出范围在-1到1之间,适合作为初始化权重。
  • 缺点:
    • 同样容易产生梯度消失问题。
    • 计算复杂度比sigmoid高。

3.4 Softmax

公式:

  • 优点:
    • 概率解释性:Softmax函数将输入向量转换为一个概率分布,其中每个元素的值都在0到1之间,且所有元素的总和为1。这种特性使得Softmax函数在多分类问题中特别有用,因为可以直接将输出解释为属于各个类别的概率。
    • 非负性:Softmax函数的输出值介于0和1之间,确保了概率的非负性。
  • 缺点:
    • 易造成梯度消失:当输入值非常大或非常小时,Softmax函数的梯度可能会变得非常小,导致梯度消失问题。这会影响神经网络的训练效果,使得网络难以学习到有效的特征。
    • 幂运算复杂:Softmax函数涉及指数运算,这会增加训练时间。
    • 输出非零均值:Softmax函数的输出是非零均值的,这可能会导致后续层的神经元接收到的输入也是非零均值的,从而影响神经网络的收敛速度。

参考文档

激活函数 - 维基百科,自由的百科全书icon-default.png?t=O83Ahttps://zh.wikipedia.org/wiki/%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0盘点当前最流行的激活函数及选择经验icon-default.png?t=O83Ahttp://giantpandacv.com/academic/%E7%AE%97%E6%B3%95%E7%A7%91%E6%99%AE/%E7%BB%BC%E8%BF%B0%E7%B1%BB/%E7%9B%98%E7%82%B9%E5%BD%93%E5%89%8D%E6%9C%80%E6%B5%81%E8%A1%8C%E7%9A%84%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0%E5%8F%8A%E9%80%89%E6%8B%A9%E7%BB%8F%E9%AA%8C/

4 池化层

        人类用眼睛识别物体时不是把眼睛所看到的所有信息全部传递入大脑进行处理,而是有重点的选择部分信息进行处理。池化操作也是类似。池化可以缩减模型的大小,减少冗余的信息,提高神经网络运算效率并防止过拟合,常用的池化有最大池化、平均池化。

        池化层的具体操作与卷积层类似,都是利用一个窗口在图像上滑动,它的参数包括 filter size (n) ,stride (s) 和跳跃步长 (s)。一般情况下设置 n=s,即每( n×n )个像素提取一个像素,这样图像尺寸为原先的 1/n。

最大池化,选择某个矩阵中的最大值;平均池化,取矩阵中所有值的平均值

参考文档

卷积神经网络中的池化(Pooling)层icon-default.png?t=O83Ahttps://0809zheng.github.io/2021/07/02/pool.html

5 全连接层

        全连接层(fully connected layers,FC)是神经网络的一种基本层类型,通常位于网络的最后几层,用于分类任务的输出层。在全连接层中,输入向量通过一个权重矩阵进行线性变换,然后加上一个偏置项,最后通过激活函数(如ReLU、Sigmoid、Tanh等)进行非线性变换。通常会将全连接层的维度设为类别数量或通过Softmax函数输出每个类别的概率分布(有时全连接层不需要加入激活函数,如使用CrossEntropyLoss损失函数计算损失时会用到Softmax激活函数),从而实现对输入数据的分类。另一种说法是,全连接可以是卷积核大小为输入特征大小的卷积运算,卷积的结果为一个节点,对应全连接层的一个点。如输入特征是3x3x5,那么需要一个3x3x5的卷积核进行运算,得到一个数值,对应全连接的一个神经元。

我们现在的任务是区别下面的这张图片是不是猫

假设猫有以下几个特征

红色的神经元表示这些被找到了(激活了),然后通过全连接将这些特征拼接起来,即卷积获取的是局部特征,全连接就是把这些局部特征连接起来。

参考文档

CNN 入门讲解:什么是全连接层(Fully Connected Layer)?icon-default.png?t=O83Ahttps://zhuanlan.zhihu.com/p/33841176

6 模型例子

import torch.nnclass Net(torch.nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = torch.nn.Sequential(# 5x5卷积核torch.nn.Conv2d(1, 10, kernel_size=5),# 激活函数torch.nn.ReLU(),# 最大池化torch.nn.MaxPool2d(kernel_size=2),)self.conv2 = torch.nn.Sequential(torch.nn.Conv2d(10, 20, kernel_size=5),torch.nn.ReLU(),torch.nn.MaxPool2d(kernel_size=2),)self.fc = torch.nn.Sequential(#输入320,输出50的线性层torch.nn.Linear(320, 50),torch.nn.Linear(50, 10)# 未加入激活函数,计算损失时,CrossEntropyLoss损失函数会用到Softmax激活函数)def forward(self, x):batch_size = x.size(0)x = self.conv1(x)  # 一层卷积层,一层池化层,一层激活层(图是先卷积后激活再池化,差别不大)x = self.conv2(x)  # 再来一次x = x.view(batch_size, -1)  # flatten 变成全连接网络需要的输入 (batch, 20,4,4) ==> (batch,320), -1 此处自动算出的是320x = self.fc(x)return x  # 最后输出的是维度为10的,也就是(对应数学符号的0~9)

比如输入一个手写数字“5”的图像,它的维度为(batch,1,28,28)即单通道高宽分别为28像素。

  • 首先通过一个卷积核为5×5的卷积层,其通道数从1变为10,高宽分别为24像素;
  • 然后通过一个卷积核为2×2的最大池化层,通道数不变,高宽变为一半,即维度变成(batch,10,12,12);
  • 然后再通过一个卷积核为5×5的卷积层,其通道数从10变为20,高宽分别为8像素;
  • 再通过一个卷积核为2×2的最大池化层,通道数不变,高宽变为一半,即维度变成(batch,20,4,4);
  • 之后将其view展平,使其维度变为320(20*4*4)之后进入全连接层,用线性函数将其输出为10类,即“0-9”10个数字。

参考文档

用PyTorch实现MNIST手写数字识别(最新,非常详细)icon-default.png?t=O83Ahttps://blog.csdn.net/qq_45588019/article/details/120935828

相关文章:

卷积神经网络各层介绍

目录 1 卷积层 2 BN层 3 激活层 3.1 ReLU(Rectified Linear Unit) 3.2 sigmoid 3.3 tanh(双曲正切) 3.4 Softmax 4 池化层 5 全连接层 6 模型例子 1 卷积层 卷积是使用一个卷积核(滤波器)对矩阵进…...

Python应用指南:高德拥堵延时指数

随着城市化进程的加快,交通拥堵问题日益严重,成为影响城市居民生活质量的重要因素之一。为了科学评估和管理交通拥堵,各种交通拥堵指数应运而生。其中,高德地图提供的“拥堵延时指数”因其数据丰富、实时性强和应用广泛而备受关注…...

ISO 21434标准:汽车网络安全管理的利与弊

ISO 21434标准在提升汽车网络安全性方面起到了重要作用,但任何标准都不是完美无缺的,ISO 21434标准也存在一些不足之处。以下是对其不足之处的分析: 一、标准的灵活性与适应性 缺乏具体技术细节:ISO 21434标准更多地提供了网络安…...

无插件H5播放器EasyPlayer.js视频流媒体播放器如何开启electron硬解码Hevc(H265)

在数字化时代,流媒体播放器技术正经历着前所未有的变革。随着人工智能、大数据、云计算等技术的融合,流媒体播放器的核心技术不断演进,为用户提供了更加丰富和个性化的观看体验。 EasyPlayer.js H5播放器,是一款能够同时支持HTTP、…...

excel版数独游戏(已完成)

前段时间一个朋友帮那小孩解数独游戏,让我帮解,我看他用电子表格做,只能显示,不能显示重复,也没有协助解题功能,于是我说帮你做个电子表格版的“解题助手”吧,不能直接解题,但该有的…...

接口上传视频和oss直传视频到阿里云组件

接口视频上传 <template><div class"component-upload-video"><el-uploadclass"avatar-uploader":action"uploadImgUrl":on-progress"uploadVideoProcess":on-success"handleUploadSuccess":limit"lim…...

Arcgis 地图制作

地图如下,不同历史时期&#xff1a;...

【每日一题1121】python校招笔试题、面试题

1、Python字符串不是通过NUL或者’\0’来结束的 C语言中字符串使用’\0’作为结束符&#xff0c;以防止越界。但是在python中&#xff0c;字符串值只包含所定义的东西。 2、执行以下程序&#xff0c;输出结果为&#xff08;&#xff09; class Base(object):count 0def __in…...

Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现

Spring Boot Vue 基于 RSA 的用户身份认证加密机制实现 什么是RSA&#xff1f;安全需求介绍前后端交互流程前端使用 RSA 加密密码安装 jsencrypt库实现敏感信息加密 服务器端生成RSA的公私钥文件Windows环境 生成rsa的公私钥文件Linux环境 生成rsa的公私钥文件 后端代码实现返…...

Docker搭建有UI的私有镜像仓库

Docker搭建有UI的私有镜像仓库 一、使用这个docker-compose.yml文件&#xff1a; version: 3services:registry-ui:image: joxit/docker-registry-ui:2.5.7-debianrestart: alwaysports:- 81:80environment:- SINGLE_REGISTRYtrue- REGISTRY_TITLEAtt Docker Registry UI- DE…...

Qt打开文件对话框选择文件之后弹出两次

项目场景&#xff1a; 在 Qt 中&#xff0c;使用 ui 自动生成的 UI 文件会为每个控件自动生成一些默认的槽函数。如果您手动创建的槽函数名称与这些自动生成的槽函数名称相同&#xff0c;就会导致信号被多次连接&#xff0c;从而引发多次弹出文件对话框的问题。 原因分析&…...

【JAVA】正则表达式中的正向肯定预查

在Java中&#xff0c;正向肯定预查&#xff08;Positive Lookahead&#xff09;是一种正则表达式的高级特性&#xff0c;用于在匹配某个模式之前检查某个条件是否满足。正向肯定预查不会消耗字符&#xff0c;也就是说&#xff0c;它不会将匹配的字符从剩余的字符串中移除&#…...

django从入门到实战(一)——路由的编写规则与使用

Django 路由的编写规则与使用 在 Django 中&#xff0c;路由&#xff08;URLconf&#xff09;是将 URL 映射到视图函数的机制。它允许我们定义网站的 URL 结构&#xff0c;并将请求分发到相应的处理函数。以下是关于 Django 路由的定义规则及使用的详细介绍。 1. Django 的路…...

vue框架开发的前端项目,build和package的区别

在使用 Vue 框架开发前端项目时&#xff0c;build 和 package 是两个常见的操作&#xff0c;它们有不同的目的和作用。下面是它们的区别&#xff1a; 1. Build&#xff08;构建&#xff09; build 是将前端源代码&#xff08;如 Vue 组件、JavaScript 文件、CSS 样式等&#…...

视频智能分析软件LiteAIServer摄像机实时接入分析平台噪声监测算法介绍

在视频监控领域&#xff0c;噪声问题一直是一个令人头疼的难题。无论是低光环境、摄像机传感器的高灵敏度&#xff0c;还是编码压缩过程中的失真&#xff0c;都可能导致视频中出现噪声&#xff0c;从而影响监控画面的清晰度和准确性。这些噪声不仅降低了视频的可读性&#xff0…...

鸿蒙UI开发与部分布局

UI开发 1. 布局概述 1.1 开发流程 1.先确定开发流程 -> 2.分析页面元素构成 ->3.选用合适的布局容器组件 1.3 布局元素组成&#xff1a;盒模型 2.1 布局分类 2.1 线性布局 线性布局是开发中最常用、最基础的布局&#xff0c;通过线性容器Row和Column构建 2.1.1 线性布…...

redis的map底层数据结构 分别什么时候使用哈希表(Hash Table)和压缩列表(ZipList)

在Redis中&#xff0c;Hash数据类型的底层数据结构可以是压缩列表&#xff08;ZipList&#xff09;或者哈希表&#xff08;HashTable&#xff09;。这两种结构的使用取决于特定的条件&#xff1a; 1. **使用ZipList的条件**&#xff1a; - 当Hash中的数据项&#xff08;即f…...

css水平居中+垂直居中

display:“flex”,position: “absolute”,top:“50%”,left:“50%”,transform: ‘translate(-50%, -50%)’...

设计模式之 组合模式

组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过将对象组合成树形结构来表示“部分-整体”层次。组合模式允许客户端统一处理单个对象和对象集合。换句话说&#xff0c;组合模式让客户端可以像处理单个对象一样处理对象的集合&#…...

LCR 001 两数相除

一.题目&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 二.原始解法-超时&#xff1a; class Solution: def divide(self, a: int, b: int) -> int: # 1&#xff09;分析&#xff1a; # 除法计算&#xff0c;不能使用除法符号&#xff0c;可以理解为实现除法 # 除法…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...