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

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络

  • 简介
  • 输入层
  • 卷积层
  • 感受野
  • 池化层
  • 全连接层
  • 代码实现

简介

卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图像识别领域的应用获得了巨大的成功。卷积神经网络中,一般包含5种类型的网络层:
在这里插入图片描述

输入层

输入层(Input Layer)通常是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅里叶变换的二维波形数据,甚至是自然语言处理任务中一维表示的句子向量。

以图像分类任务为例,输入层输入的图像一般包含 RGB 三个通道,是一个由长宽分别为 H H H W W W 组成的 3 维像素值矩阵 H × W × C H \times W \times C H×W×C,卷积网络会将输入层的数据传递到一系列卷积、池化等操作中进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。

根据计算能力、存储大小和模型结构的不同,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为 N N N,则输入层的输出数据为:
N × C × H × W N \times C \times H \times W N×C×H×W

其中:

  • N N N 是批量大小(Batch Size)。
  • C C C 是通道数,例如 RGB 图像有 C = 3 C=3 C=3 个通道。
  • H H H W W W 分别是图像的高度和宽度。

卷积层

卷积层(Convolution Layer)通常用作对输入层输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性的一种抽象。卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征。对应过程如下图所示:
在这里插入图片描述
卷积层中需要用到卷积核(滤波器或特征检测器)与图像特征矩阵进行点乘运算,利用卷积核与对应的特征感受域进行划窗式运算时,需要设定卷积核对应的大小、步长、个数以及填充的方式,
在这里插入图片描述
对应参数解释如表所示
在这里插入图片描述
卷积层有两个重要特性:局部连接权值共享

局部连接是指卷积层的节点仅仅和其前一层的部分节点相连接,只用来学习局部特征。局部感知结构的构思理念来源于动物视觉的皮层结构,其指的是动物视觉的神经元在感知外界物体的过程中起作用的只有一部分神经元。

在计算机视觉中,图像中的某一块区域中,像素之间的相关性与像素之间的距离同样相关,距离较近的像素间相关性强,距离较远则相关性就比较弱。由此可见,局部相关性理论也适用于计算机视觉的图像处理领域。因此,局部感知采用部分神经元接受图像信息,再通过综合全部的图像信息达到增强图像信息的目的。

权值共享是指计算同一深度的神经元时采用的卷积核参数是共享的。权值共享在一定程度上讲是有意义的,是由于在神经网络中,提取的底层边缘特征与其在图中的位置无关。但在某些场景中是无意的,例如在人脸识别任务中,我们期望在不同的位置学到不同的特征。

需要注意的是,权重只是对于同一深度切片的神经元是共享的。在卷积层中,通常采用多组卷积核提取不同的特征,即对应的是不同深度切片的特征,而不同深度切片的神经元权重是不共享的。相反,偏置这一权值对于同一深度切片的所有神经元都是共享的。

权值共享带来的好处是大大降低了网络的训练难度。假设在局部连接中隐藏层的每一个神经元连接的是一个 10 × 10 10 \times 10 10×10 的局部图像,因此有 10 × 10 10 \times 10 10×10 个权值参数。将这 10 × 10 10 \times 10 10×10 个权值共享给剩下的神经元,也就是说隐藏层中一个神经元的权值参数相同,那么此时无论隐藏层神经元的数量是多少,需要训练的参数就是这 10 × 10 10 \times 10 10×10 个权值参数(也就是卷积核的大小)。

感受野

在CONV层每个输出节点的值仅依赖CONV层输入的一个区域,这个区域之外的其他输入值都不会影响输出值,该区域就是感受野。
在这里插入图片描述
图中是个微型CNN,来自Inception‑v3论文,原图是为了说明一个conv5x5可以用两个conv3x3代替,从下到上称为第1 , 2 , 3层:

  • 第 2 层左下角的值:是第 1 层左下红框中 3 × 3 3 \times 3 3×3 区域的值经过卷积,也就是乘加运算计算出来的。即第 2 层左下角位置的感受野是第 1 层左下红框区域。

  • 第 3 层唯一值:是第 2 层所有 3 × 3 3 \times 3 3×3 区域卷积得到的,即第 3 层唯一位置的感受野是第 2 层所有 3 × 3 3 \times 3 3×3 区域。

  • 第 3 层唯一值:是第 1 层所有 5 × 5 5 \times 5 5×5 区域经过两层卷积得到的,即第 3 层唯一位置的感受野是第 1 层所有 5 × 5 5 \times 5 5×5 区域。


感受野计算时需要注意以下几点:

  • 最后一层(卷积层或池化层)输出特征图感受野的大小等于卷积核的大小。

  • i i i 层卷积层的感受野大小和第 ( i + 1 ) (i+1) (i+1) 层的卷积核大小和步长有关,同时也与第 ( i + 1 ) (i+1) (i+1) 层感受野大小有关。

  • 计算感受野大小时忽略了图像边缘的影响,即不考虑 padding 的大小。

如果感受野大小使用的计算方式是采用从最后一层往下计算的方法,即先计算最深层在前一层上的感受野,然后逐层传递到第一层,使用的公式可以表示如下:

R F i = ( R F i + 1 − 1 ) × s t r i d e i + K s i z e i RF_i = (RF_{i+1} - 1) \times stride_i + Ksize_i RFi=(RFi+11)×stridei+Ksizei

其中, R F i RF_i RFi 是第 i i i 层卷积层的感受野, R F i + 1 RF_{i+1} RFi+1 是第 ( i + 1 ) (i+1) (i+1) 层上的感受野, s t r i d e stride stride 是卷积的步长, K s i z e Ksize Ksize 是本层卷积核大小。

如上图感受野的计算过程为:

R F 2 = 3 RF_2 = 3 RF2=3

R F 1 = ( 3 − 1 ) × 1 + 3 = 5 RF_1 = (3 - 1) \times 1 + 3 = 5 RF1=(31)×1+3=5

池化层

池化层又称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征的尺寸,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出。最常用的是最大池化。
在这里插入图片描述

全连接层

全连接层( Full Connected Layer )负责对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低位常常对应任务目标.

代码实现

import torch 
from torch import nn 
%matplotlib inline 
class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Sequential(         # input shape (1, 28, 28)nn.Conv2d(in_channels=1,              # input heightout_channels=16,            # n_filterskernel_size=5,              # filter sizestride=1,                   # filter movement/steppadding=2,                  # padding to keep same width/height),                              # output shape (16, 28, 28)nn.ReLU(),                      # activationnn.MaxPool2d(kernel_size=2),    # choose max value in 2x2 area, output shape (16, 14, 14))self.conv2 = nn.Sequential(         # input shape (16, 14, 14)nn.Conv2d(16, 32, 5, 1, 2),     # output shape (32, 14, 14)nn.ReLU(),                      # activationnn.MaxPool2d(2),                # output shape (32, 7, 7))self.out = nn.Linear(32 * 7 * 7, 10)  # fully connected layer, output 10 classesdef forward(self, x):x = self.conv1(x)x = self.conv2(x)x = x.view(x.size(0), -1)           # flatten the output of conv2 to (batch_size, 32 * 7 * 7)output = self.out(x)return output
cnn = CNN() 
print(cnn)  # 网络结构

在这里插入图片描述

相关文章:

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图…...

基于FPGA的出租车里程时间计费器

基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 (1);里程计费功能:3公里以内起步价8元,超过3公里后每公里2元,其中…...

三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇

一、引言 1.1 研究背景与意义 随着医疗卫生体制改革的不断深化以及信息技术的飞速发展,三甲医院评审作为衡量医院综合实力与服务水平的重要标准,对数据集成与共享提出了更为严苛的要求。在传统医疗模式下,医院内部各业务系统往往各自为政,形成诸多“信息孤岛”,使得数据…...

VUE条件树查询 自定义条件节点

之前实现过的简单的条件树功能如下图&#xff1a; 经过最新客户需求确认&#xff0c;上述条件树还需要再次改造&#xff0c;以满足正常需要&#xff01; 最新暴改后的功能如下红框所示&#xff1a; 页面功能 主页面逻辑代码&#xff1a; <template><div class"…...

什么是打流,怎么用iperf3打流

什么是打流 在网络安全和黑灰产领域&#xff0c;“打流”具有不同的含义&#xff0c;常用于形容通过技术手段制造流量假象或发起流量攻击。 流量攻击&#xff08;DDoS&#xff09;中的“打流”&#xff1a; “打流”指向目标服务器或网络发起 大规模的数据请求&#xff0c;造…...

使用MySQL APT源在Linux上安装MySQL

全新安装MySQL的步骤 以下说明假定您的系统上尚未安装任何版本的MySQL&#xff08;无论是由Oracle还是其他方分发&#xff09; 添加MySQL的Apt源。 将MySQL的APT存储库添加到系统的软件存储库列表中。 1、转到MySQL APT存储库的下载页面MySQL :: Download MySQL APT Reposi…...

redux react-redux @reduxjs/toolkit

redux团队先后推出了redux、react-redux、reduxjs/toolkit&#xff0c;这三个库的api各有不同。本篇文章就来梳理一下当我们需要在项目中集成redux&#xff0c;从直接使用redux&#xff0c;到使用react-redux&#xff0c;再到react-redux和reduxjs/toolkit配合使用&#xff0c;…...

【偏好对齐】通过ORM直接推导出PRM

论文地址&#xff1a;https://arxiv.org/pdf/2412.01981 相关博客 【自然语言处理】【大模型】 ΨPO&#xff1a;一个理解人类偏好学习的统一理论框架 【强化学习】PPO&#xff1a;近端策略优化算法 【偏好对齐】PRM应该奖励单个步骤的正确性吗&#xff1f; 【偏好对齐】通过OR…...

Python与其他编程语言的区别是什么?

Python是一种广泛使用的高级编程语言&#xff0c;以其简洁的语法、强大的库支持和广泛的应用领域而著称。与其他编程语言相比&#xff0c;Python具有许多独特的特点和优势。以下将从多个方面详细探讨Python与其他编程语言的区别&#xff0c;并通过示例进行说明。 一、语法简洁…...

cuda11.6和对应的cudnn(windows)

因为每次不同的torch版本要下对应的cuda&#xff0c;这次刚好在Windows上下好了一个cuda11.6和对应的cudnn&#xff0c;直接放到网盘中&#xff0c;大家有需要对应版本的可以直接下载&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/f153a53830d4 大家自取&#xff0c;c…...

24年无人机行业资讯 | 12.23-12.29

24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司&#xff0c;助力低空经济规范发展2、商务部支持无人机民用国际贸易&#xff0c;强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…...

uniapp:微信小程序文本长按无法出现复制菜单

一、问题描述 在集成腾讯TUI后&#xff0c;为了能让聊天文本可以复制&#xff0c;对消息组件的样式进行修改&#xff0c;主要是移除下面的user-select属性限制&#xff1a; user-select: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms…...

qml Item详解

1、概述 Item是QML&#xff08;Qt Modeling Language&#xff09;的基础元素&#xff0c;所有其他可视化元素都继承自它。它代表了一个可视化的对象&#xff0c;虽然Item对象本身没有可视外观&#xff0c;但它定义了所有可视项之间通用的属性&#xff0c;比如位置、大小、旋转…...

【Java回顾】Day4 反射机制

反射机制 之前学过一部分&#xff0c;笔记在20250103Java包_网络编程.md里,这里在之前的笔记的基础上做一些补充。 反射&#xff1a;得到class对象后反向获取对象的各种信息。 包 Field 类或接口中的字段(成员变量)&#xff0c;动态访问和修改类的字段 模板 获取Class 对象 …...

【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动

终极解读《沉默的羔羊》&#xff1a;弗洛伊德精神分析学视角下的深层剖析 关键词 沉默的羔羊弗洛伊德精神分析学角色心理意识与潜意识性别与身份 弗洛伊德精神分析学简介 弗洛伊德的精神分析学是心理学的一个重要分支&#xff0c;主要关注人类行为背后的无意识动机和冲突。…...

[深度学习] 大模型学习1-大语言模型基础知识

大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是一类基于Transformer架构的深度学习模型&#xff0c;主要用于处理与自然语言相关的各种任务。简单来说&#xff0c;当用户输入文本时&#xff0c;模型会生成相应的回复或结果。它能够完成许多任务&…...

如何解决数据库和缓存不一致的问题

目录 一、Cache-Aside模式&#xff08;旁路缓存模式&#xff09; 二、Write-Through模式&#xff08;写透缓存模式&#xff09; 三、Write-Behind模式&#xff08;写回缓存模式&#xff09; 四、先删除缓存再更新数据库&#xff08;不推荐&#xff0c;存在风险&#xff09;…...

剑指Offer|LCR 021. 删除链表的倒数第 N 个结点

LCR 021. 删除链表的倒数第 N 个结点 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1…...

【NX入门篇】

NX入门篇 一、UG NX 由来二、软件如何启动&#xff08;UG NX 12.0&#xff09;三、使用步骤四、常用命令 一、UG NX 由来 UG NX由来&#xff1a; 1969 年&#xff1a;UG 的开发始于美国麦道航空公司&#xff0c;基于 C 语言开发实现&#xff1b;1976 年&#xff1a;UG问世&am…...

ubuntu如何禁用 Snap 更新

.禁用 Snap 更新&#xff08;通过修改 snapd 配置&#xff09; 打开并编辑 /etc/apt/apt.conf.d/50unattended-upgrades文件。 这个文件控制自动更新的行为。 sudo vim /etc/apt/apt.conf.d/50unattended-upgrades 里面有一行将里面的auto改为false即可禁用更新&#xff1a;…...

AI辅助开发新体验:描述需求即可让快马AI生成智能浏览器下载插件

今天想和大家分享一个用AI辅助开发浏览器插件的实战经验。最近在InsCode(快马)平台上尝试开发了一个智能下载插件&#xff0c;整个过程让我深刻体会到AI如何改变传统开发流程。 需求分析 这个插件的核心目标是让下载变得更智能。传统下载工具需要我们手动选择保存位置&#xff…...

Graphormer在药物发现中的应用:催化剂吸附预测落地实践

Graphormer在药物发现中的应用&#xff1a;催化剂吸附预测落地实践 1. 项目背景与价值 在药物研发和材料科学领域&#xff0c;分子属性预测一直是一项耗时且昂贵的任务。传统实验方法需要大量试错&#xff0c;而计算化学方法又面临精度与效率的平衡问题。Graphormer作为一款基…...

短视频创作新利器:Sonic数字人工作流生成口型自然的表情包视频

短视频创作新利器&#xff1a;Sonic数字人工作流生成口型自然的表情包视频 1. 数字人视频创作新趋势 在短视频内容爆炸式增长的今天&#xff0c;创作者们面临着一个共同挑战&#xff1a;如何高效产出高质量视频内容。传统视频制作需要专业设备、复杂后期和大量时间投入&#…...

Git-RSCLIP真实场景测试:城市新区地物分类,住宅区识别效果惊艳

Git-RSCLIP真实场景测试&#xff1a;城市新区地物分类&#xff0c;住宅区识别效果惊艳 1. 模型背景与核心能力 Git-RSCLIP是北航团队基于SigLIP架构专门开发的遥感图像理解模型&#xff0c;在1000万对遥感图文数据集(Git-10M)上进行了深度预训练。与通用视觉模型不同&#xf…...

YOLO26涨点改进| CVPR 2026 | 独家创新首发、注意力改进篇| 引入SDGW空间偏差引导加权模块,含多种二次创新改进,助力图像去噪、红外小目标检测、图像分割、变换检测、关键点检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 SDGW空间偏差引导加权模块 改进YOLO26网络模型,可以在空间域对每个像素位置进行自适应加权,动态增强目标信号、抑制噪声,使网络在特征提取阶段对低亮度、小目标或高噪声区域更加敏感,从而提升检测精度和召回率,同时减少假阳性。该模…...

S2-Pro自动化运维脚本生成:应对Linux服务器常见管理任务

S2-Pro自动化运维脚本生成&#xff1a;应对Linux服务器常见管理任务 1. 运维工程师的新助手 最近遇到个挺有意思的事。我们团队新来的运维小哥&#xff0c;处理服务器问题时总要先翻半天文档&#xff0c;再到处搜脚本模板。看着他手忙脚乱的样子&#xff0c;我突然想起自己刚…...

Pixel Epic效果展示:支持Markdown+LaTeX混合输出的学术论文初稿生成案例

Pixel Epic效果展示&#xff1a;支持MarkdownLaTeX混合输出的学术论文初稿生成案例 1. 像素史诗&#xff1a;科研写作的新范式 在传统学术写作工具普遍沉闷单调的背景下&#xff0c;Pixel Epic带来了一场视觉与功能双重革新的科研体验。这款基于AgentCPM-Report大模型的智能终…...

Fay数字人框架终极指南:30分钟打造你的AI虚拟助手

Fay数字人框架终极指南&#xff1a;30分钟打造你的AI虚拟助手 【免费下载链接】Fay Fay 是一个开源的数字人类框架&#xff0c;集成了语言模型和数字字符。它为各种应用程序提供零售、助手和代理版本&#xff0c;如虚拟购物指南、广播公司、助理、服务员、教师以及基于语音或文…...

Java整型溢出:越界运算后结果如何

Java整形溢出详细说明:越界操作后的结果和类型在Java程序中&#xff0c;理解数据类型的值范围非常重要。本文将深入探讨越界操作后int类型的行为&#xff0c;并解释int类型的值范围和越界操作结果。Javaint类型的值范围为-2、147、483、648至2、147、483、647。当计算结果超出此…...

Mergo入门指南:10分钟学会Go结构体与映射合并技巧

Mergo入门指南&#xff1a;10分钟学会Go结构体与映射合并技巧 【免费下载链接】mergo Mergo: merging Go structs and maps since 2013 项目地址: https://gitcode.com/gh_mirrors/me/mergo Mergo是一个强大的Go语言库&#xff0c;专门用于合并结构体&#xff08;struct…...