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

卷积神经网络学习记录

目录

神经网络基础定义:

基本组成部分

工作流程

卷积层(卷积定义)【CONV】:

卷积层(Convolutional Layer)

特征提取:卷积层的主要作用是通过卷积核(或滤波器)运算提取输入数据(如图像)中的特征。​编辑

卷积核:卷积层由多个卷积核组成,每个卷积核负责检测输入数据中的特定特征。​编辑

局部连接:与全连接层不同,卷积层中的神经元只与输入数据的一个局部区域相连接,这个局部区域对应于卷积核的大小。

共享权重:卷积层中的卷积核在整个输入数据上滑动时,使用的是相同的权重(即卷积核的值),这意味着网络可以学习到在整个输入数据中通用的特征。​编辑

稀疏连接:由于局部连接的特性,卷积层的连接数远少于全连接层,这使得卷积层在参数数量上更加稀疏,有助于减少计算量和过拟合的风险。

步长和填充:卷积操作可以通过调整步长(stride)和填充(padding)来控制输出特征图的大小。​编辑左上角+pad 1:边缘填充全为0的数一圈                生成一个7*7的长度与宽度的输入数据​编辑

输出特征图:每个卷积核都会生成一个特征图(Feature Map),表示输入数据在该卷积核下的特征响应。一个卷积层可以有多个卷积核,因此会产生多个特征图。​编辑​编辑​编辑

激活函数:卷积操作后通常会跟一个非线性激活函数,如ReLU,以引入非线性,使网络能够学习更复杂的特征关系。​编辑如红色矩阵框最下面的,Bias b0的置是1,计算过程中要加上这个1,这个就是激活函数,偏置函数

多通道和多特征图:在处理彩色图像时,输入数据可能有多个通道,每个卷积核可以独立地在每个通道上操作,然后将结果相加,以生成特征图。

卷积操作:在神经网络中,卷积操作可以定义为将卷积核与输入数据的局部区域进行元素乘积后求和,这个过程在输入数据的每个位置重复进行,直到覆盖整个输入数据

重要参数:

卷积核(Convolutional Kernel)

特征图(Feature Map)

步长(Stride)

填充(Padding)

卷积操作

多通道和多特征图

激活函数

池化层(POOL):

最大池化(Max Pooling)

平均池化(Average Pooling)

求和池化(Sum Pooling)

全局池化(Global Pooling)

空间金字塔池化(Spatial Pyramid Pooling)

自适应池化(Adaptive Pooling)

全连接层(FC):

几层神经网络如何计算:


神经网络基础定义:

神经网络是一种模仿人脑神经元处理和传递信息方式的计算模型,它由大量的节点(或称为“神经元”)组成,这些节点通常被组织成层。神经网络通过学习输入数据之间的复杂关系和模式来执行任务,如分类、识别、预测等。

基本组成部分

  1. 神经元(Neurons):神经网络的基本单元,负责处理信息。
  2. 层(Layers):神经元被组织成层,包括输入层、隐藏层和输出层。
  3. 连接(Connections):神经元之间的连接,它们决定了信息如何在网络中流动。
  4. 权重(Weights):连接的强度,决定了输入对输出的影响程度。
  5. 偏置(Biases):加在神经元输入上的常数,用于调整激活函数的输出。
  6. 激活函数(Activation Functions):决定一个神经元是否应该被激活的函数,常见的有Sigmoid、ReLU等。

工作流程

  1. 前向传播(Forward Propagation):输入数据通过网络,每层神经元计算其输出并传递给下一层。
  2. 损失函数(Loss Function):衡量模型预测与实际结果之间的差异。
  3. 反向传播(Backpropagation):根据损失函数计算的梯度,通过网络反向传播,更新权重和偏置。
  4. 优化算法(Optimization Algorithms):如梯度下降,用于更新权重和偏置以最小化损失函数。

卷积层(卷积定义)【CONV】:

在神经网络中,特别是在卷积神经网络(Convolutional Neural Networks, CNNs)中,卷积是一种数学运算,用于提取输入数据(通常是图像)的特征。以下是神经网络中卷积的定义和关键概念:

卷积层(Convolutional Layer)

卷积层是CNN中的基本构建块,它使用卷积运算来处理输入数据。每个卷积层由多个卷积核(或滤波器)组成,每个卷积核负责检测输入数据中的特定特征。

  1. 特征提取:卷积层的主要作用是通过卷积核(或滤波器)运算提取输入数据(如图像)中的特征。
  2. 卷积核:卷积层由多个卷积核组成,每个卷积核负责检测输入数据中的特定特征。
  3. 局部连接:与全连接层不同,卷积层中的神经元只与输入数据的一个局部区域相连接,这个局部区域对应于卷积核的大小。
  4. 共享权重:卷积层中的卷积核在整个输入数据上滑动时,使用的是相同的权重(即卷积核的值),这意味着网络可以学习到在整个输入数据中通用的特征。
  5. 稀疏连接:由于局部连接的特性,卷积层的连接数远少于全连接层,这使得卷积层在参数数量上更加稀疏,有助于减少计算量和过拟合的风险。
  6. 步长和填充:卷积操作可以通过调整步长(stride)和填充(padding)来控制输出特征图的大小。左上角+pad 1:边缘填充全为0的数一圈                生成一个7*7的长度与宽度的输入数据
  7. 输出特征图:每个卷积核都会生成一个特征图(Feature Map),表示输入数据在该卷积核下的特征响应。一个卷积层可以有多个卷积核,因此会产生多个特征图。
  8. 激活函数:卷积操作后通常会跟一个非线性激活函数,如ReLU,以引入非线性,使网络能够学习更复杂的特征关系。如红色矩阵框最下面的,Bias b0的置是1,计算过程中要加上这个1,这个就是激活函数,偏置函数
  9. 多通道和多特征图:在处理彩色图像时,输入数据可能有多个通道,每个卷积核可以独立地在每个通道上操作,然后将结果相加,以生成特征图。
  10. 卷积操作:在神经网络中,卷积操作可以定义为将卷积核与输入数据的局部区域进行元素乘积后求和,这个过程在输入数据的每个位置重复进行,直到覆盖整个输入数据

重要参数:

1.输入图像宽度,长度,深度(w,h,c)

2.有多少个不同的卷积核(filter)

3.步长(每次横向,纵向移动的长度)

4.边界填充(边界填充的数值都为0)

5.激活函数(偏置函数)

卷积核(Convolutional Kernel)

卷积核是一个小型的矩阵(通常为正方形),它在输入数据上滑动(或卷积),并在每个位置计算卷积核与输入数据的元素乘积之和。这个操作会产生一个新的二维数组,称为特征图(Feature Map)。

特征图(Feature Map)

特征图是卷积操作的输出,它代表了输入数据在特定卷积核下的特征。每个卷积核都会产生一个特征图,而一个卷积层可以有多个卷积核,因此会产生多个特征图。

步长(Stride)

步长定义了卷积核在输入数据上滑动的间隔。如果步长为1,卷积核会在每个像素上滑动;如果步长大于1,卷积核会在每隔一个像素上滑动。

填充(Padding)

填充是在输入数据的边缘添加额外的像素,以控制输出特征图的大小。填充可以是零填充(Zero Padding),即添加零值像素,或者可以是反射填充(Reflect Padding),即添加输入数据的边缘像素的反射。

卷积操作

在神经网络中,卷积操作可以定义为:

  1. 定义卷积核:选择一个小型矩阵(卷积核),用于检测输入数据中的特定特征。
  2. 滑动窗口:将卷积核作为滑动窗口在输入数据上移动。
  3. 元素乘积:在每个位置,计算卷积核与输入数据的元素对应位置的乘积。
  4. 求和:将上一步得到的乘积求和,得到一个单一的数值。
  5. 生成特征图:重复上述步骤,直到覆盖整个输入数据,生成一个新的二维数组(特征图)。

多通道和多特征图

在处理彩色图像时,输入数据可能有多个通道(如RGB)。每个卷积核可以独立地在每个通道上操作,然后将结果相加,以生成特征图。此外,一个卷积层可以有多个卷积核,每个卷积核生成一个特征图,从而产生多个特征图。

激活函数

在卷积操作之后,通常会应用一个非线性激活函数(如ReLU),以引入非线性,使网络能够学习更复杂的特征。

卷积神经网络通过堆叠多个卷积层、池化层(Pooling Layers)和全连接层(Fully Connected Layers)来构建,以实现对输入数据的深度特征提取和分类。

池化层(POOL):

池化(Pooling)是卷积神经网络(CNN)中的一种操作,它通常跟在卷积层之后,用于降低特征图的空间维度,同时保留重要的特征信息。池化操作有助于减少模型的参数数量和计算量,同时也增加了模型的抽象能力,使其对输入数据的微小变化更加鲁棒。以下是池化的几种常见类型:

最大池化(Max Pooling)

用的最多

最大池化是最常见的池化类型。在最大池化中,每个池化窗口(通常为2x2或3x3)覆盖输入特征图的一个区域,然后输出该区域内的最大值。这种操作可以有效地保留最显著的特征,同时减少特征图的尺寸。

平均池化(Average Pooling)

平均池化与最大池化类似,但它输出的是池化窗口内所有元素的平均值。平均池化可以平滑特征图,减少噪声的影响。

求和池化(Sum Pooling)

求和池化输出的是池化窗口内所有元素的总和。这种池化方式不如最大池化和平均池化常见。

全局池化(Global Pooling)

全局池化是一种特殊的池化操作,它将整个特征图作为一个池化窗口。全局最大池化和全局平均池化分别输出整个特征图中的最大值和平均值。全局池化常用于网络的末端,以减少特征图的尺寸,为全连接层做准备。

空间金字塔池化(Spatial Pyramid Pooling)

空间金字塔池化是一种多尺度的池化方法,它将不同尺度的特征图组合起来,以捕获不同尺度的特征信息。

自适应池化(Adaptive Pooling)

自适应池化可以根据输出特征图的期望尺寸动态调整池化窗口的大小,以确保输出特征图的尺寸是固定的。

池化操作的参数通常包括:

  • 窗口大小(Window Size):池化窗口的尺寸,决定了每个池化操作覆盖的输入特征图区域的大小。
  • 步长(Stride):池化窗口在输入特征图上滑动的间隔。如果步长等于窗口大小,池化操作不会重叠;如果步长小于窗口大小,池化操作会重叠。

全连接层(FC):

  1. 定义: 全连接层是神经网络的一种基本层类型,通常位于网络的最后几层,用于分类任务的输出层。在全连接层中,每一个神经元与前一层的每一个神经元都相连接,这意味着每个输入都影响每个输出。

  2. 基本结构: 全连接层由输入层、隐藏层和输出层组成。输入层接收原始数据,隐藏层进行特征提取和非线性变换,输出层产生最终的分类或回归结果。

  3. 参数详解

    • 权重参数:全连接层中的每个连接都有一个对应的权重参数,这些权重在训练过程中学习得到。
    • 偏置参数:每个神经元都有一个偏置项,用于调整神经元的激活值。
  4. 计算方式: 全连接层的核心操作是矩阵向量乘积,即 y=Wx+by=Wx+b,其中 yy 为输出向量,WW 为权重矩阵,xx 为输入向量,bb 为偏置向量。

  5. 作用

    • 全连接层在整个网络中起到“分类器”的作用,将卷积层、池化层和激活函数等操作映射到的隐层特征空间,进一步映射到样本标记空间。
    • 在分类任务中,全连接层通常作为网络的最后一层,直接将全连接层的维度设为类别数量或通过Softmax函数输出每个类别的概率分布,从而实现对输入数据的分类

几层神经网络如何计算:

  1. CONV(Convolutional Layer) - 卷积层:

    • 卷积层是CNN中用于提取输入数据特征的层。它包含多个卷积核(或滤波器),每个卷积核在输入数据上滑动(卷积操作),并在每个位置计算卷积核与输入数据的元素乘积之和,生成新的特征图。
    • 卷积层能够捕捉输入数据的局部特征,如边缘、纹理等,并且通过共享权重减少模型参数。
  2. ReLU(Rectified Linear Unit) - 修正线性单元:

    • ReLU是一种常用的激活函数,定义为 f(x)=max⁡(0,x)f(x)=max(0,x),即当输入x小于0时输出0,大于0时输出x本身。
    • ReLU能够引入非线性到模型中,使得网络能够学习复杂的函数映射,同时它也有助于缓解梯度消失问题,加快训练速度。
  3. POOL(Pooling Layer) - 池化层:

    • 池化层用于降低特征图的空间维度,减少参数数量和计算量,同时提取重要特征。
    • 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化输出池化窗口内的最大值,而平均池化输出池化窗口内的平均值。
  4. FC(Fully Connected Layer) - 全连接层:

    • 全连接层是神经网络中的一种层,其中每个神经元都与前一层的所有神经元相连。
    • 在CNN中,全连接层通常位于网络的末端,用于整合卷积层和池化层提取的特征,进行最终的分类或回归任务。
    • 全连接层的每个神经元对输入特征进行加权求和,并通过激活函数(如ReLU或Softmax)生成输出

只有CONV,FC算作神经网络层数,RELU,POOL不算

Anaconda与pytorch下载:

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili

pytorch下载时用中科大镜像

清华源:

conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
 

相关文章:

卷积神经网络学习记录

目录 神经网络基础定义: 基本组成部分 工作流程 卷积层(卷积定义)【CONV】: 卷积层(Convolutional Layer) 特征提取:卷积层的主要作用是通过卷积核(或滤波器)运算提…...

5种常见的k8s云原生数据管理方案详解

Kubernetes(K8s)是云原生架构的核心组件,提供高效的容器编排和管理功能。在数据存储方面,K8s通过PersistentVolumes(PV)和PersistentVolumeClaims(PVC)机制实现数据持久化&#xff0…...

[C++]了解内置类型升级

内置类型升级 1.调用模板T时,为什么可以使用T()类型的匿名对象来传参2.内置类型被升级成为类后的使用事项 1.调用模板T时,为什么可以使用T()类型的匿名对象来传参 当我们在定义或声明一个函数时,如果想使用模板T类型的默认构造(例…...

docker镜像源配置、换源、dockerhub国内镜像最新可用加速源(仓库)

一、临时拉取方式 在docker pull后先拼接镜像源域名,后面拼接拉取的镜像名 $ docker pull dockerpull.org/continuumio/miniconda3 二、永久配置方式 vim修改/etc/docker/daemon.json,并重启docker服务。 # 创建目录 sudo mkdir -p /etc/docker# 写…...

什么是 WPF 中的依赖属性?有什么作用?

依赖属性(Dependency Property)是 WPF 的一个核心概念,它为传统的 .NET 属性提供了增强功能,支持绑定、样式、动画和默认值等功能。通过依赖属性,WPF 提供了一种灵活的数据驱动的方式来处理 UI 属性。 1. 什么是依赖属…...

241125学习日志——[CSDIY] [ByteDance] 后端训练营 [16]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...

如何优化 PHP 性能?

以下是一些常见的优化 PHP 性能的方法: 启用缓存,例如使用 OPcache 来加速 PHP 脚本的执行。合理使用数据库索引,优化数据库查询语句。避免不必要的计算和重复操作,尽量复用数据和结果。减少文件包含的数量和复杂度。优化代码逻辑…...

【Linux服务器】内存问题排查

概述 项目制作过程中经常出现内存问题,在该处对排查思路进行汇总,也对常见问题进行总结,以期待下一次遇到相似问题时可以快速排查,然后解决问题 排查流程总结 首先检查内存的整体情况 使用工具htop和seme快速得知系统内存使用的…...

ModuleNotFoundError: No module named ‘simple_knn‘

【报错】复现 GaussianEditor 时引用 3D Gaussian Splatting 调用simple_knn 时遇到 ModuleNotFoundError: No module named ‘simple_knn‘ 报错: 【原因】 之前安装时直接进行配置pip install simple-knn 【解决办法】 查看 requirements.txt,才发现需…...

【论文分享】采用现场测量、卫星影像和机器学习方法研究空气温度与城市发展强度之间的关系

鉴于城市热问题的严重性,城市化与空气温度之间的关系已成为全球关注的关键问题。本次我们给大家带来一篇SCI论文的全文翻译。该论文提取了常见城市规划指标,这些指标通过卫星影像来确定城市发展的强度。该论文确定的关系可以帮助在城市化和植被平衡的决策…...

Linux -初识 与基础指令1

博客主页:【夜泉_ly】 本文专栏:【Linux】 欢迎点赞👍收藏⭐关注❤️ 文章目录 📚 前言🖥️ 初识🔐 登录 root用户👥 两种用户➕ 添加用户🧑‍💻 登录 普通用户⚙️ 常见…...

页的初步认识

关于准备 我们在之前的学习中,已经学习了相当一部分有关段的知识,CPU提供了段的机制来给我们的内存进行保护,但实际上我们在x86下的段base是0,实际上并没有偏移 两种分页模式 我们有两种分页模式,29912分页和101012…...

[C++]:IO流

1. IO 流 1.1 流的概念 在C中,存在一种被称为“流”的概念,它描述的是信息流动的过程,具体来说就是信息从外部输入设备(比如常见的键盘)传输到计算机内部(像内存区域),以及信息从内…...

Excel如何批量导入图片

这篇文章将介绍在Excel中如何根据某列数据,批量的导入与之匹配的图片。 准备工作 如图,我们准备了一张员工信息表以及几张员工的照片 可以看到,照片名称是每个人的名字,与Excel表中的B列(姓名)对应 的卢易…...

TCP socket api详解

文章目录 netstat -nltpaccept简单客户端工具 telnet 指定服务连接connect异常处理version 1 单进程版version 2 多进程版version 3 -- 多线程版本version 4 ---- 线程池版本 应用-简单的翻译系统服务器细节write 返回值 客户端守护进程化前台和后台进程的原理Linux的进程间关系…...

《C++搭建神经网络基石:开启智能编程新征程》

在人工智能的璀璨星空中,神经网络无疑是最为耀眼的星座之一。而 C以其卓越的性能和高效的执行效率,成为构建神经网络模型的有力武器。今天,就让我们一同探索如何使用 C构建一个基础的神经网络模型,踏上智能编程的奇妙旅程。 一、…...

if (条件) { return true; } return false; 简写为 return 条件 详解

在 Java 中,将以下代码: if (条件) {return true; } return false;简写为: return 条件;原理 在 Java 中,条件 是一个布尔表达式,它直接返回 true 或 false。所以,if-else 结构中的逻辑判断和返回值的逻…...

Pytorch使用手册-Datasets DataLoaders(专题三)

数据集与数据加载器(Datasets & DataLoaders) 在 PyTorch 中,torch.utils.data.Dataset 和 torch.utils.data.DataLoader 是数据处理的两种核心工具。它们通过模块化的方式,将数据加载与模型训练分离,提高代码的可读性和可维护性。 1. 加载数据集 以 Fashion-MNIST …...

【数据结构】双向链表、单向循环链表、双向循环链表、栈、链栈

目录 一、双向链表 定义类和封装函数以及测试样例如下: 注意事项: 二、循环链表 单循环列表的类和函数封装如下: 注意事项: 三、双向循环链表 结点类和双循环链表的定义部分 函数封装之判空和尾插 双循环链表遍历 双循…...

(动画)Qt控件 QProgressBar

文章目录 QProgressBar1. 介绍一、基本特性二、核心属性 2. 代码实现3. 动画效果 QProgressBar 1. 介绍 QProgressBar是Qt框架中的一个控件,主要用于显示进度条,以图形化的方式表示任务的完成进度或操作的进度。 一、基本特性 显示方向:…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

什么是VR全景技术

VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

c# 局部函数 定义、功能与示例

C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

sshd代码修改banner

sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...