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

卷积神经网络(CNN)详解

文章目录

  • 引言
  • 1.卷积神经网络(CNN)的诞生背景
  • 2.卷积神经网络(CNN)介绍
    • 2.1 什么是卷积神经网络?
    • 2.2 卷积神经网络(CNN)的基本特征
      • 2.2.1 局部感知(Local Connectivity)
      • 2.2.2 权值共享(Weight Sharing)
  • 3. 卷积神经网络(CNN)结构
    • 3.1 整体架构
    • 3.2 卷积层(Convolutional Layer)
      • 3.2.1 卷积层涉及的参数:
    • 3.3 池化层(Pooling Layer)
    • 3.4 常用激活函数
      • 3.4.1 激活函数的作用
      • 3.4.2 ReLU 激活函数
      • 3.4.3 Sigmoid 激活函数
      • 3.4.4 Tanh 激活函数
    • 3.5 全连接层(Fully Connected Layer)
    • 3.6 卷积神经网络的过程
  • 4. 经典CNN架构演进
  • 5. 总结

引言

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络 (Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。本文旨在介绍CNN的基本概念和结构,以及CNN网络架构设计的基本思路。

1.卷积神经网络(CNN)的诞生背景

在传统神经网络处理图像时,面临几个严峻挑战:

  1. 参数爆炸:一张普通1000×1000像素的彩色图像,全连接层会产生30亿个参数
  2. 平移不变性:传统网络难以识别位置变化的同一物体
  3. 局部相关性:忽略了图像中相邻像素间的紧密关系

受生物视觉皮层启发,Yann LeCun等人在1989年提出了CNN的雏形,并在1998年开发出著名的LeNet-5用于手写数字识别。但直到2012年AlexNet在ImageNet竞赛中一战成名,CNN才真正迎来爆发式发展。

2.卷积神经网络(CNN)介绍

2.1 什么是卷积神经网络?

卷积神经网络是多层感知机 (MLP)的变种,由生物学家休博尔和维瑟尔 在早期关于猫视觉皮层的研究发展而来,视觉皮层的细胞存在一个复杂的构造,这些细胞对视觉输入空间的子区域非常敏感,称之为感受野

CNN由纽约大学的Yann Lecun(杨立昆)于1998年提出(LeNet-5),其本质是一个多层感知机,成功的原因在于其所采用的局部连接和权值共享的方式:一方面减少了权值的数量使得网络易于优化;另一方面降低了模型的复杂度、减小了过拟合 的风险。 当网络的输入为图像时,这些优点将表现地更加明显。

2006年,Hinton提出了深度学习,其主要的观点是:多隐层的人工神经网络 具有优异的特征学习能力,学习到的数据更能反映数据的本质特征有利于可视化或分类。大数据和计算机硬件的发展使得深度学习得以推广和应用。

2012年AlexNet取得ImageNet比赛的分类任务的冠军,使得卷积神经网络真正爆发。如今的卷积神经网络(CNN)是一种带有卷积结构的深度神经网络 ,卷积结构可以减少深层网络占用的内存量,其三个关键的操作——局部感受野 、权值共享、pooling层,有效地减少了网络的参数个数,缓解了模型的过拟合问题。

2.2 卷积神经网络(CNN)的基本特征

2.2.1 局部感知(Local Connectivity)

在这里插入图片描述
图1(a)表示神经网络中神经元之间的全连接结构,即前后两层神经元都是彼此相互连接的,这样可以保证后面一层的每个神经元都能获取前面一层神经元的所有信息。图1(b)表示神经元之间进行局部连接,即后面一层的神经元只与前面一层的部分神经元进行连接,这样后面一层的神经元只能包含前面一层神经元的部分信息。表面上看局部连接似乎损失了部分信息,但实际上后层神经元并没有损失信息。通过后面一层神经元感知局部信息不仅可以减少网络需要学习的大量参数,同时可以减少网络的冗余信息。在图像领域,如果网络输入的是一张图片,每个神经元在卷积层都进行局部感知图像信息,经过几层卷积和池化后再通过卷积可以将这些局部的信息进行综合起来得到图像的全局信息。通过局部感知不仅减少了神经网络的复杂性和参数量,同时减少了对训练时设备算力的高要求。

下面分析网络采用局部的神经元连接方式相比于全连接方式,计算量减少了多少。

假设图像大小为 500 × 500 ,共有 1 0 5 10^5 105 个神经元。

在图中(a)的全连接中,每个神经元需要与图像进行全连接,则网络需要训练的参数有:

  • 前一层的图像大小为 500 × 500 =2.5× 1 0 5 10^5 105,然后神经元个数为 1 0 5 10^5 105个,那么全连接需要计算的参数个数为:2.5× 1 0 5 10^5 105 × 1 0 5 10^5 105 = 2.5 × 1 0 10 10^{10} 1010

如果网络神经元采用图中(b)的局部连接方式,假设神经元的感受野为 10 × 10,则网络需要训练的参数有:

  • 感受野为 10 × 10 ,神经元个数为 1 0 5 10^5 105个,那么需要训练的参数个数为 10 × 10 × 1 0 5 10^5 105 = 1 0 7 10^7 107

由于神经元个数相同,偏置值的数量也是相同的,故在计算中忽略了偏置值的统计,该操作不影响两者计算量的比较。通过比较两种连接方式计算的结果可知,采用局部连接方式的参数量是采用全连接方式的 1 2500 \frac{1}{2500} 25001 。由此可见,神经元采用局部连接可以减少大量网络需要学习的参数,降低模型的复杂度。

2.2.2 权值共享(Weight Sharing)

权值共享是卷积神经网络的另一个特性。在网络对输入图片进行卷积时,对于同一特征的提取,卷积核的参数是共享的,即卷积核中的参数是相同的。在全图对某一个特征,如边缘、纹理等进行提取时,所有卷积核参数相同。这种特性大大减少了卷积神经网络中需要学习的参数,下图是神经网络权值共享示意图。
在这里插入图片描述
图中,第 n + 1 层神经元只与第 n层的部分神经元进行连接,该图中第 n + 1层只与第 n层中的 3 个神经元连接,每一个神经元与上一层的神经元进行连接时,权值是相同的。w1,w2,w3 是不同神经元共享的权值。

权值共享就是说,给一张输入图片,用一个卷积核去扫这张图,卷积核里面的数就叫权重,这张图每个位置是被同样的卷积核扫的,所以权重是一样的,也就是共享。
在这里插入图片描述
这里面,最左边的可以理解为是输入图片的一部分,而中间的是卷积核,右边的是得到FeatureMap。这里的动图演示的是通道数为1的情况(显示情况下,Channel = 1 一般为灰度图)。如果是彩色图像(RGB),那么左边的通道数为3(即有RGB各3张图),中间卷积核的通道数也应该是3(对应输入图片的RGB 3 通道)。

我们需要注意一下:右边输出的FeatureMap的通道数并不是3,而是1。

  • 这是因为,即便输入特征图和卷积核都是3通道的,但输出特征并不是三通道的,而是把这三个通道对应位置上的值进行了相加,最终形成了一个 1通道的输出特征图。

而且我们还要注意一个问题,那就是卷积核上的参数是不变的。这就是我们所说的权值共享技巧。如果我们不进行权值共享,那么结果会这样:
在这里插入图片描述

3. 卷积神经网络(CNN)结构

3.1 整体架构

在这里插入图片描述
上面是一个简单的 CNN 结构图, 第一层输入图片, 进行卷积(Convolution)操作, 得到第二层特征图(Feature Map). 对第二层的特征图进行池化(Pooling)操作, 得到第三层特征图,重复上述操作得到第五层特征图, 最后将这特征图、按行展开连接成向量, 传入全连接(Fully Connected)层, 全连接层就是一个 BP 神经网络. 图中的每个特征图都可以看成是排列成矩阵形式的神经元, 与 BP神经网络中的神经元大同小异。

3.2 卷积层(Convolutional Layer)

卷积操作是CNN的灵魂,通过滑动窗口(滤波器/kernel)在图像上提取局部特征,所以,一幅图像的一个完整的卷积运算过程为:卷积核以一定的间隔滑动,并对所覆盖的区域进行卷积运算得到值 z,直至遍历完整幅图像。如下图所示:
在这里插入图片描述

我们都知道,彩色图片都是三个通道,也就是说一个彩色图片会有三个矩阵。加入现在输入一张彩色图片的尺寸为7×7×3,最后一维3表示图像颜色通道,需要注意的是输入的最后一维要和Filter的最后一维保持一致。Filter为3×3×3,那么这里的卷积核大小为3×3,对应输入矩阵中每3×3的大小进行一个区域选择。
计算方式为: 每一个对应位置相乘,最终结果相加,最后不要忘记加上偏置项
如下图所示:
在这里插入图片描述
而卷积操作并不是说卷积一次就完事了,而是可以进行多次卷积,得到若干张特征图,最后进行堆叠。

3.2.1 卷积层涉及的参数:

(1)滑动窗口步长(Stride)
在这里插入图片描述
从图中可以看出,不同的步长得到的特征图大小也不同。当步长较小时,相当于慢慢的提取特征,细粒度的提取特征,特征提取的较为丰富;当步长较大时,相当于大刀阔斧的提取特征,特征数目较少。

(2)滤波器尺寸(通常3×3或5×5)
其实和滑动窗口的尺寸一样,当卷积核尺寸较小时,相当于慢慢的提取特征,细粒度的提取特征,特征提取的较为丰富;当卷积核尺寸较大时,相当于大刀阔斧的提取特征,特征数目较少。
在一般情况下, 滑动窗口选择1,卷积核尺寸为3×3.

(3)填充(Padding)
在滑动窗口移动过程中,我们会发现,有些位置的值被多次计算,那么这些值会对最终的结果影响较大,这样会造成不公平的效果。
解决方法:zero-padding 经过观察发现,越靠近边缘位置的值计算重复越少,越靠近中心位置的值计算次数越多,因此可以在输入特征矩阵外再添加一圈0,使得原本边界的特征被利用的次数增多,在一定程度上弥补了边界信息缺失,边界特征提取不充分的问题。

在这里插入图片描述
那么为啥添加的是0 ,而不是其他值呢? 如果添加其他值则会再计算过程中对最终的结果产生影响。

(4)卷积核个数
卷积核个数取决于最终在计算过程中得到多少个特征图,10个特征图也就对应10个卷积核。

3.3 池化层(Pooling Layer)

随着模型网络不断加深,卷积核越来越多,要训练的参数还是很多,而且直接拿卷积核提取的特征直接训练也容易出现过拟合的现象。CNN使用的另一个有效的工具被称为“池化(Pooling)”出现并解决了上面这些问题,为了有效地减少计算量,池化就是将输入图像进行缩小,减少像素信息,只保留重要信息;为了有效地解决过拟合问题,池化可以减少数据,但特征的统计属性仍能够描述图像,而由于降低了数据维度,可以有效地避免过拟合。

给出池化的定义,对不同位置区域提取出有代表性的特征(进行聚合统计,例如最大值、平均值等),这种聚合的操作就叫做 池化,池化的过程通常也被称为 特征映射 的过程(特征降维)。听起来很高深,其实简单地说就是下采样。

池化的过程如下图所示:
在这里插入图片描述

池化主要有两种,除了 最大值池化(Max Pooling) 之外,还有 平均值池化(Average pooling),CNN中随机池化使用的较少。

最大池化是对局部的值取最大;平均池化是对局部的值取平均;随机池化是根据概率对局部的值进行采样,采样结果便是池化结果。概念非常容易理解,其示意图如下所示:
在这里插入图片描述
三种池化的意义:

  • 最大池化可以获取局部信息,可以更好保留纹理上的特征。如果不用观察物体在图片中的具体位置,只关心其是否出现,则使用最大池化效果比较好。
  • 平均池化往往能保留整体数据的特征,能凸出背景的信息。
  • 随机池化中元素值大的被选中的概率也大,但不是像最大池化总是取最大值。随机池化一方面最大化地保证了Max值的取值,一方面又确保了不会完全是max值起作用,造成过度失真。除此之外,其可以在一定程度上避免过拟合。

3.4 常用激活函数

3.4.1 激活函数的作用

非线性建模:激活函数的主要作用是提供网络的非线性建模能力。在卷积层中,卷积操作是线性的,即对每个像素点赋予一个权值进行加权求和。然而,对于实际样本来说,不一定是线性可分的。为了解决这个问题,需要引入非线性因素,使网络能够学习更复杂的函数关系。(如果只有线性变换,那无论多少层神经元,都能简化层一层神经元,那神经网络只是简单多元线性回归而已,不能拟合更加复杂的函数。举个例子,只有线性操作,那么神经网络永远无法拟合圆等复杂的曲线图形,永远只能表示超平面,无法表示曲面等。)

构建稀疏矩阵:激活函数还可以构建稀疏矩阵,即稀疏性。这个特性可以去除数据中的冗余,最大可能地保留数据的特征。大多数为0的稀疏矩阵可以更有效地表示数据,从而提高模型的泛化能力。

激活函数的非线性是神经网络发挥作用最重要的因素之一,而对于实际部署,激活函数的实现也是很重要的一个方面,实现的不好对加速效果影响很大,这里主要讲几个部署当中常见的激活函数。

3.4.2 ReLU 激活函数

公式:
在这里插入图片描述
ReLU比较好部署,小于0的部分为0,大于0的部分为原始值,只需要判断一下符号位就行。

3.4.3 Sigmoid 激活函数

公式:
在这里插入图片描述
Sigmoid 函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。它在物理意义上最为接近生物神经元。

3.4.4 Tanh 激活函数

公式:
在这里插入图片描述
比Sigmoid函数收敛速度更快,相比Sigmoid函数,其输出以0为中心。

3.5 全连接层(Fully Connected Layer)

将特征向量转化为分类概率,分类概率是指将输入图片判定的概率。全连接层通常作为CNN的最后一层,对图像的特征进行分类并得出最终的输出结果。

全连接层的工作方式是将图像的特征向量作为输入,通过一组权值,计算得到一个分类结果。全连接层中的每一个神经元代表一个特定的类别,最后的输出即为所属类别的概率。

在这里插入图片描述
在经过多层的卷积层和池化层操作后,一般会有1个或2个全连接层,给出最后的分类结果。全连接层在整个卷积神经网络中起到“分类器”的作用,它将学到的特征表示映射到类标签空间。在实际中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1×1的卷积;而前层是卷积层的全连接层可以转化为卷积核为h×w的全局卷积,h和w分别为前层卷积输出结果的高和宽。

3.6 卷积神经网络的过程

首先需要一张图片进行输入,在输入之后需要对其进行卷积操作,用于特征提取,在特征提取过后,需要用激活函数对所得到的特征图进行激活。在激活之后,需要利用池化去进行降低尺寸,在降低尺寸之后,又要重新进行卷积激活,然后再进行池化,就这样不停循环下去,直到这个神经网络的规模能够满足我们全连接层计算,那我们就进入全连接层,然后在全连接层中进行详细的计算以及进行分类,这就是卷积神经网络CNN的一个整体的过程。
在这里插入图片描述
通过观察图,我们发现了几个特点:

  • 首先每一个卷积过后都连接一个Relu激活函数;
  • 每两次卷积后进行一次池化操作;
  • 所有的卷积和池化操作完成后进行全连接FC,
  • 全连接层得到最终的分类结果。

4. 经典CNN架构演进

模型年份创新点Top-5错误率
LeNet-51998首个成功CNN-
AlexNet2012ReLU/Dropout15.3%
VGG2014小卷积堆叠7.3%
GoogLeNet2014Inception模块6.7%
ResNet2015残差连接3.57%

5. 总结

以上就是本篇博客的全部内容了,真的耗费了我不少时间来总结,希望可以和大家一起学习、进步。大家如果发现博客中有表述不正确的的地方还望能及时指正,谢谢大家!
人生海海,山山而川。希望大家能一直保持初心,坚定目标,并为之努力奋斗,终有一天,我们都能成为心中所想成为的人!

本篇博客就到这里啦,大家下篇博客见!

相关文章:

卷积神经网络(CNN)详解

文章目录 引言1.卷积神经网络(CNN)的诞生背景2.卷积神经网络(CNN)介绍2.1 什么是卷积神经网络?2.2 卷积神经网络(CNN)的基本特征2.2.1 局部感知(Local Connectivity)2.2.…...

NoSQl注入学习

文章目录 什么是NOSQL相关概念数据库文档集合 MongoDB 基础语法创建数据库创建集合插入文档更新文档查询文档 Nosql注入PHP 中的 MongoDB 注入重言式注入联合查询注入JavaScript 注入布尔盲注 Nodejs 中的 MongoDB 注入 从一道题中学习nosql注入 参考: Nosql 注入从…...

借助LlamaIndex实现简单Agent

借助LlamaIndex实现简单Agent 1 简介 智能体的构建发展是一个趋势,借助LlamaIndex简单实现Agent。本文主要借助LlamaIndex中的FunctionTool和Workflow。Workflow是使用事件流的方法实现。 2 构建公共类 由于LlamaIndex中的OpenAI无法直接连接国内大模型&#xf…...

MCGS昆仑通太屏笔记

4.3寸:4013ef/e1 7寸:7032kw 特点: 如果是使用组态屏进行调试使用,选择com1如果是实际项目使用,选择com2 操作步骤: 先创建设备窗口,再创建用户界面 在设备窗口界面,依次设置如下…...

纯FPGA控制AD9361的思路和实现之一 概述

我们知道PS通过内存映射方式方式用户的IP,具体是将用户的逻辑做成AXI_LITE_SALVE外设,PS做为AXI_LITE_MASTER去控制。 在ZYNQ系统中存在PS所以这个架构和思路很流行,ADI出的配置软件无线电子板的DEMO基本都是基于这样的架构。比如下图【上截…...

北斗短报文终端与5G融合:构建空天地海一体化通信新生态

随着北斗三号全球组网完成,短报文通信服务从区域覆盖迈向全球通达,其与5G技术的深度融合,正开创“空天地海一体化”通信新时代。深圳作为全国北斗产业高地,汇聚了遨游通讯等领军企业,其推出的北斗短报文终端通过技术创…...

Meteonorm8-免费使用教程(详细教程-免费)

Meteonorm介绍 Meteonorm 8 是一款专业的气象数据生成软件,广泛应用于太阳能、建筑能效、农业气候研究等领域。它提供全球范围内高精度的气象数据,支持多种数据源和插值方法,帮助用户获取特定地点的长期气象统计信息。 Meteonorm核心功能 …...

nohup的使用

最近远程连接服务器跑程序的时候,总是碰到本地电脑息屏或者ssh断开导致程序中断,往往一觉醒来不是程序跑完了而是因为各种原因本地中断了。为此想到了nohup这个命令,可以让程序在我本地电脑关机后也可以在远端服务器上面运行。 命令如下&…...

如何查看HTTP状态码?

目录 一、HTTP状态码查看方法 1. ​​浏览器开发者工具​​ 2. ​​命令行工具​​ 3. ​​服务器日志分析​​ 二、HTTP状态码分类与核心含义 1. ​​信息类(1xx)​​ 2. ​​成功类(2xx)​​ 3. ​​重定向类&#xff08…...

2025.04.19【Chord diagram】| 弦图绘制技巧大全

Customization Apply customization to the circular chart: color, background, track height and more. Chart types Learn how to use other chart types like line chart, barcharts, vertical ablines and more. 文章目录 CustomizationChart types 什么是弦图&#xff…...

解码 Web Service:从技术原理到应用场景的深度剖析

Web Service 是一种基于网络的、分布式的计算技术,它允许不同的应用程序之间通过网络进行通信和交互。以下是关于 Web Service 的详细介绍: 一、定义与概念 Web Service 是一种可以通过 Web 协议(如 HTTP)进行访问的软件组件&am…...

hackmyvm-airbind

收集信息 arp-scan -l nmap -sS -v 192.168.195.162 访问扫描到的ip,直接跳转到登录页面,利用admin/admin弱口令登录 在settings.php中找到一处文件上传,上传一句话木马,上传成功 反弹shell 上传php-reverse-shell.php 抓包&am…...

[HCIP] OSPF 综合实验

题目 实验需求 1.R5为TSP,其上只能配置IP地址; R5与其他所有直连设备间均使用公有IP;环回地址为100.1.1.1/32 2.R4设备为企业出口路由器 3.整个OSPF环境IP基于172.16.0.0/16划分; 4.所有设备均可访问R5的环回; 5…...

arkTs:使用setTimeout / setInterval 实现透明度切换的轮播图

使用setTimeout / setInterval 实现透明度切换的轮播图 1 主要内容说明1.1 setTimeout1.2 setInterval1.3 表格 2 举例说明2.1 图片变化的内容说明2.2 源码相关内容说明2.3 源码A2.4源码A的运行效果展示2.4.1 效果截图2.4.2 效果视频 3.结语4.定位日期 1 主要内容说明 1.1 set…...

苍穹外卖项目中所涉及到的测试内容

1.使用JWT令牌封装用户令牌,并且设置相应的拦截器校验JWT的有效性,从而确保了项目的安全可靠 1.基本功能测试: 验证合法JWT是否能够正常通过拦截器的校验 验证非法的JWT能否正常通过拦截器的校验 2.可靠性测试: 3.易用性测试 …...

案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.2 技术决策民主化-5.2.3草根创新的孵化土壤构建

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 草根创新的孵化土壤构建:IT团队技术决策民主化的底层实践1. 背景与挑战:传统技术决策体系的失效1.1 行业现状与痛点1.2 草根创新的价值潜力 2. 机制设…...

探秘Python 工匠:案例、技巧与工程实践:解锁Python进阶的通关秘籍

重要的放前面 Python 工匠:案例、技巧与工程实践 探秘Python 工匠:案例、技巧与工程实践:解锁Python进阶的通关秘籍 在Python的编程世界中,从入门小白到技术大牛的进阶之路往往充满挑战。Python工匠:案例、技巧与工…...

【langchain4j】Springboot如何接入大模型以及实战开发-AI问答助手(一)

langchain4j介绍 官网地址:https://docs.langchain4j.dev/get-started langchain4j可以说是java和spring的关系,spring让我们开发java应用非常简单,那么langchain4j对应的就是java开发ai的 “Spring” 他集成了AI应用的多种场景&#xff0c…...

解决Windows update服务启动拒绝访问的问题 | wuauserv 注册表拒绝访问的方法

在某些情况下,为了配置系统更新相关服务(例如禁用 Windows 自动更新),我们需要更改注册表中 wuauserv 项的权限。本教程将带你一步步操作,成功获取并修改权限。 修改注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv 步骤一:打开注册表编辑…...

精益数据分析(5/126):解锁创业成功的关键密码

精益数据分析(5/126):解锁创业成功的关键密码 大家好!我一直坚信在技术与商业不断融合的当下,持续学习是保持进步的唯一途径。之前我们一起探讨了《精益数据分析》的部分内容,今天咱们接着深入学习&#x…...

Cribl 优化EC2 ip-host-region 数据

We’ve seen examples of using the magical powers of regex to customize Functions, extract fields, and filter events in real time. In this section, we’ll show you how to sprinkle your Lookups with regex magic. Lets walk through a Pipeline that demonstrates…...

【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是桶排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、桶排序基础实现 原理 将数据分到有限数量的桶中,每个桶内部使用其他排序算法(如插入排序或快速排序)&#xf…...

栈(c++)

今天介绍两种在c中写“栈”方法 1. #include <bits/stdc.h> using namespace std;class mystack { private:int a[1000];int curr -1; public:void push(int);void pop();int top();bool empyt();int size(); };int main() {mystack n;while(true){int a;cout<<&…...

GraphRAG与RAG的区别和原理简介

第一章 图谱与向量的共生逻辑 1.1 知识载体的局限性 向量空间模型虽能高效捕捉文本语义相似性&#xff0c;却无法解析知识的深层关联。例如&#xff0c;当用户询问“特斯拉4680电池与续航里程的关系”&#xff0c;向量检索可能仅返回技术参数片段&#xff0c;而无法解释化学成…...

vue2技术练习-开发了一个宠物相关的前端静态商城网站-宠物商城网站

为了尽快学习掌握相关的前端技术&#xff0c;最近又实用 vue2做了一个宠物行业的前端静态网站商城。还是先给大家看一下相关的网站效果&#xff1a; 所以大家如果想快速的学习或者掌握一门编程语言&#xff0c;最好的方案就是通过学习了基础编程知识后&#xff0c;就开始利用…...

[每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器

文章目录 一、什么是 sync.Pool&#xff1f;二、sync.Pool 的基本作用三、sync.Pool 的主要方法四、sync.Pool 的内部工作原理五、sync.Pool 适用场景六、使用示例示例 1&#xff1a;基本使用输出示例&#xff1a;示例 2&#xff1a;并发使用 七、一个基于 sync.Pool 的 **Benc…...

Prompt-Tuning 提示词微调

1. Hard Prompt 定义&#xff1a; Hard prompt 是一种更为具体和明确的提示&#xff0c;要求模型按照给定的信息生成精确的结果&#xff0c;通常用于需要模型提供准确答案的任务. 原理&#xff1a; Prompt Tuning原理如下图所示&#xff1a;冻结主模型全部参数&#xff0c;在…...

sqli-labs之Less-7 GET注入写shell

验证注入点&#xff1a;单引号报错&#xff0c;)) 根据提示&#xff0c;是想让我们试试写shell 第一个条件 secure_file_priv 写shell即MySQL需要对外写文件&#xff0c;但默认MySQL是不允许outfile来导出数据的&#xff0c;先动手在MySQL确认一下。 MySQL特性&#xff0c;se…...

数据库基础-B+树

查询类型 全表扫描&#xff0c;不提供索引&#xff0c;扫描所有集合中的数据。根据指定key值查询指定点范围查询&#xff0c;在指定区间内查询 有很多方法能够进行快速扫面数据&#xff0c;但是再快复杂度也是O(N)&#xff0c;我们的目标是想办法将查询复杂度降低到O(logN)。…...

智能语音备忘录:SpeechRecognition与gTTS的奇妙融合

引言&#xff1a;智能语音备忘录的时代已经到来 在这个信息爆炸的时代&#xff0c;我们每天需要处理大量的事务和信息。传统的文字记录方式虽然可靠&#xff0c;但在效率上往往难以满足快节奏生活的需求。想象一下&#xff0c;如果你能在驾车、散步或是灵感突现的任何时刻&…...

C++项目 —— 基于多设计模式下的同步异步日志系统(3)(日志器类)

C项目 —— 基于多设计模式下的同步&异步日志系统&#xff08;3&#xff09;&#xff08;日志器类&#xff09; 整体思想设计日志消息的构造C语言式的不定参函数的作用函数的具体实现逻辑1. 日志等级检查2. 初始化可变参数列表3. 格式化日志消息4. 释放参数列表5. 序列化和…...

2025/4/19 数据库的流程控制函数

单行函数_流程函数 要点: 流程处理函数可以根据不同的条件 执行不同的处理流程 可以在SQL语句中实现不同的条件选择,MySQL中的流程处理函数主要包括if() ifnull() 和 case() 函数 多行函数_聚合函数 和单行函数的区别: 单行函数是作用在每一行 最终结果可能是多行结果 多行…...

代码随想录打家劫舍+树形DP入门

动态规划part07 198.打家劫舍 视频讲解&#xff1a;https://www.bilibili.com/video/BV1Te411N7SX https://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html dp数组&#xff1a;进入房屋i能够偷得得最大金额dp[i]递推公式&#xff1a;根据不相邻原则…...

Http基础

目录 定义 一、请求部分&#xff08;Request&#xff09; 1. 请求行&#xff08;Request Line&#xff09; 常见请求方法&#xff1a; 2. 请求头&#xff08;Request Headers&#xff09; 3. 请求体&#xff08;Request Body&#xff09; 二、响应部分&#xff08;Respo…...

【Unity】bug记录——部分物体突然不受animator控制

博主烘焙完灯光后突然发现有的物体的动画失效了&#xff0c;不会动&#xff0c;测试发现是因为勾了static&#xff08;但是有些勾了static的物体就没事&#xff09;&#xff0c;修改static为Contribute GI Static&#xff08;只针对光照静态&#xff09;就行...

Zephyr、FreeRTOS、RT-Thread 邮箱(Mailbox)对比分析

一、核心特性对比 特性ZephyrFreeRTOSRT-Thread消息类型支持指针或4字节数据&#xff08;依赖架构&#xff09;仅支持指针传递支持任意数据类型&#xff08;需指定消息长度&#xff09;容量固定容量&#xff08;静态初始化配置&#xff09;动态容量&#xff08;基于队列长度&a…...

xilinx fpga中pll与mmcm的区别

Xilinx中的PLL&#xff08;锁相环&#xff09;和MMCM&#xff08;混合模式时钟管理器&#xff09;都是用于时钟管理的关键组件&#xff0c;但它们之间存在一些显著的区别。以下是对两者的详细比较&#xff1a; 1. 功能特性 PLL&#xff08;锁相环&#xff09;&#xff1a; 主…...

Python语法系列博客 · 第8期[特殊字符] Lambda函数与高阶函数:函数式编程初体验

上一期小练习解答&#xff08;第7期回顾&#xff09; ✅ 练习1&#xff1a;找出1~100中能被3或5整除的数 result [x for x in range(1, 101) if x % 3 0 or x % 5 0]✅ 练习2&#xff1a;生成字符串长度字典 words ["apple", "banana", "grape…...

黑马商城(五)微服务保护和分布式事务

一、雪崩问题 二、雪崩-解决方案&#xff08;服务保护方案&#xff09; 请求限流&#xff1a; 线程隔离&#xff1a; 服务熔断&#xff1a; 服务保护组件&#xff1a; 三、Sentinel 引入依赖&#xff1a; <!--sentinel--> <dependency><groupId>com.aliba…...

Java 编译与反编译深度解析

Java 编译与反编译深度解析 1. 编译过程详解 (1) 完整编译流程 .java 文件 → 词法分析 → 语法分析 → 语义分析 → 字节码生成 → .class 文件│ │ │ │↓ ↓ ↓ ↓识别关键字 生成抽象语法树 类型…...

Java集合框架中的List、Map、Set详解

在Java开发中&#xff0c;集合框架是处理数据时不可或缺的工具之一。今天&#xff0c;我们来深入了解一下Java集合框架中的List、Map和Set&#xff0c;并探讨它们的常见方法操作。 目录 一、List集合 1.1 List集合介绍 1.2 List集合的常见方法 添加元素 获取元素 修改元素…...

国产的 Java Solon v3.2.0 发布(央企信创的优选)

Solon 框架&#xff01; Solon 是新一代&#xff0c;Java 企业级应用开发框架。从零开始构建&#xff08;No Java-EE&#xff09;&#xff0c;有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议&#xff0c;是“杭州无耳科技有限公司”开源的根级项目&#xff…...

机器学习决策树

一、何为决策树 决策树&#xff08;Decision Tree&#xff09;是一种分类和回归方法&#xff0c;是基于各种情况发生的所需条件构成决策树&#xff0c;以实现期望最大化的一种图解法。由于这种决策分支画成图形很像一棵树的枝干&#xff0c;故称决策树。它的运行机制非常通俗易…...

Java集合及面试题学习

知识来源沉默王二、小林coding、javaguide 1、ArrayList list.add("66") list.get(2) list.remove(1) list.set(1,"55") List<String> listnew ArrayList<>(); 底层是动态数组 添加元素流程&#xff1a;判断是否扩容&#xf…...

【内置函数】84个Python内置函数全整理

Python 内置函数全集&#xff08;完整分类 参数详解 示例&#xff09; 文章目录 Python 内置函数全集&#xff08;完整分类 参数详解 示例&#xff09;一、数值与数学函数abs(x)divmod(a, b)pow(x, y, modNone)round(number[, ndigits])sum(iterable, /, start0)hash(obj) …...

【LeetCode 热题 100】双指针 系列

&#x1f4c1;283. 移动零 对于该题目&#xff0c;需要注意的是两个地方&#xff0c;一是保持非零元素的相对顺序&#xff0c;以及O(1)的空间复杂度。 采用双指针的思路&#xff0c;将数组划分成3个区间,。 [0 , left]&#xff1a;该区间内元素全是非零元素。 [left1 , right…...

实现批量图片文字识别(python+flask+EasyOCR)

话不多说,向上效果图 1)先说框架版本 为什么要先说框架版本呢,因为我在各种版本中尝试了两天,总算确定了如下版本适合我,至于其他的版本,各位自己去尝试 python 3.9.7 EasyOCR 1.7.2 flask 3.0.3 2)执行操作效果图 2.1)多选文件 2.2)图片预览 2.3)提取选中文件 2.4)提取所有文…...

[Swift]pod install成功后运行项目报错问题error: Sandbox: bash(84760) deny(1)

操作&#xff1a; platform :ios, 14.0target ZKMKAPP do# Comment the next line if you dont want to use dynamic frameworksuse_frameworks!# Pods for ZKMKAPPpod Moyaend pod install成功后运行报错 报错&#xff1a; error: Sandbox: bash(84760) deny(1) file-writ…...

文档内容提取以及合成

如何从10个左右的docx文档中抽取内容&#xff0c;生成新的文档&#xff0c;抽取内容包括源文档的文字内容、图片、表格、公式等&#xff0c;以及目标文档的样式排版、字体、格式&#xff0c;还有目标文档的语言风格、用词规范、文法习惯等等。这是一个相当复杂的需求&#xff0…...

[Windows] Wireshark 网络抓包工具 v4.4.6

[Windows] Wireshark 网络抓包工具 链接&#xff1a;https://pan.xunlei.com/s/VOODTZ7Lm2gsNLoFNcOIqflzA1?pwdf3ea# 软件说明Wireshark&#xff08;前称Ethereal&#xff09;是一款免费开源的网络嗅探抓包东西&#xff0c;世界上最流行的网络协议剖析器&#xff01;网络封…...