《剥开卷积神经网络CNN的 “千层酥”:从基础架构到核心算法》
文章目录
- 前言
- 卷积神经网络(Convolutional Neural Network,CNN)是一种专门用于处理网格结构数据(如图像、视频、音频)的深度学习模型。它在计算机视觉任务(如图像分类、目标检测)中表现尤为出色,核心思想是通过局部感知和参数共享高效提取数据中的空间或时序特征。
- 一、卷积神经网络介绍
- 1. 卷积神经网络的前世今生与核心奥秘
- 2.卷积神经网络处理图像的优势
- 3、已经有了神经网络我们为什么还要去使用卷积神经网络
- 4. 什么是卷积?
- 卷积的计算
- 二、卷积层
- 1.感受野
- 2.权值共享
- 3.卷积中的核心概念
- (1)卷积核
- (2)步长
- (3)边界填充(Padding)
- (5)卷积的过程
- 三、池化层
- 1. 最大池化(Max Pooling)和平均池化(Mean Pooling)
- (2) 全局平均池化(Global Average Pooling)
- 四、卷积神经网络
- 1.知名的卷积神经网络
- 2.卷积神经网络的架构
前言
卷积神经网络(Convolutional Neural Network,CNN)是一种专门用于处理网格结构数据(如图像、视频、音频)的深度学习模型。它在计算机视觉任务(如图像分类、目标检测)中表现尤为出色,核心思想是通过局部感知和参数共享高效提取数据中的空间或时序特征。
一、卷积神经网络介绍
1. 卷积神经网络的前世今生与核心奥秘
CNN 的灵感最初源于生物学研究。生物学家休博尔和维瑟尔在探索猫视觉皮层时发现,皮层细胞存在精妙构造,每个细胞只对视觉输入空间的特定小区域 “情有独钟”,这个特殊区域就叫感受野。受此启发,科研人员开始构建模拟视觉处理的神经网络模型。
1998 年,纽约大学的 Yann Lecun 推出了 LeNet-5,正式提出卷积神经网络。它本质上是多层感知机(MLP)的 “升级版”,但独特之处在于采用了局部连接和权值共享策略。打个比方,传统神经网络就像一个 “事事亲力亲为” 的工作者,每个节点都要处理所有输入信息;而 CNN 则像一个聪明的团队,局部连接让节点只专注处理输入图像的一小块区域,权值共享则相当于团队成员共用一套 “工作方法”。这样一来,不仅大幅减少了需要训练的参数数量,让网络优化更轻松,还降低了模型的复杂程度,有效避免了过拟合问题。尤其是在处理图像数据时,这些优势更是展露无遗。
2006 年,深度学习概念由 Hinton 提出,他强调多隐层的人工神经网络具备强大的特征学习能力,能挖掘出数据背后的本质特征,这些特征无论是用于数据可视化还是分类任务,都能发挥巨大价值。随着大数据时代的到来,海量数据为深度学习提供了 “养料”,计算机硬件性能的提升也为其提供了 “算力支撑”,深度学习由此迎来了快速发展。
直到 2012 年,AlexNet 在 ImageNet 比赛的分类任务中一举夺冠,让卷积神经网络彻底 “火出圈”。如今,CNN 已经成为深度神经网络中的 “主力军”,它特有的卷积结构就像一个 “内存优化大师”,通过局部感受野、权值共享、pooling 层这三个 “法宝”,极大减少网络参数数量,为模型的稳定训练保驾护航。
2.卷积神经网络处理图像的优势
要实现卷积神经网络对图像的任务的使用,我们首先要知道图像在计算机中是如何表示的,其实图像在计算机中是一堆按顺序排列的数字,数值为0到255。0表示最暗,255表示最亮。然而我们平时看到的彩色图像则是通过RGB三个通道叠加得到的图像,即红、绿、蓝三原色的色光以不同的比例相加,以产生多种多样的色光。RGB颜色模型中,单个矩阵就扩展成了有序排列的三个矩阵,也可以用三维张量去理解。其中的每一个矩阵又叫这个图片的一个channel(通道),宽, 高, 深来描述。
如图就是三个通道的叠加过程,每一个通道其实可以理解成一个卷积核,他可以过滤出该通道的信息。
3、已经有了神经网络我们为什么还要去使用卷积神经网络
这就与卷积神经网络的画面不变性相关,对于传统的BP神经网络,做图像分类任务,通常的做法是将图片这个二维数据展开成一维数据输入到神经网络中来做分类训练,然而针对一个物体的图片由于图片拍摄角度的不同远近、大小正反亮暗等特征的不同,当我们使用BP神经网络时同一个物体就有可能被识别成不同的物体,这将导致分类的准确率非常低。
接下来我们用一副图来展示一下同一个图像,由于在图片中位置的不同,查看BP神经网络能否处理这类问题。
首先,针对第一张图我们发现图片中的信息都是横折这个信息,但是物体所处的位置不同
当我们想使用BP神经网络对上面的图片做分类时,我们会将上面的每一张图片都展开成一维的数据,因为我们要将图片数据输入到神经网络中,此时,每张图片被展开后我们发现,每张图片的三个小黑点所处的位置都是不同的,那么经过全连接之后,我们就不能把他们归为同一类,一维从输入维度来看,每个位置的图片都像是不同的物体。而且有的位置还没有训练到所以会出现无法识别的情况。如果想要识别,那么就需要将所有位置的图片都传入到模型中去训练才可以。
4. 什么是卷积?
卷积本质是一种 “加权叠加” 运算,通过翻转和平移,将两个信号的局部交互信息聚合为一个新信号。它在工程中用于建模系统响应,在机器学习中用于特征提取,是连接数学理论与实际应用的重要工具。
从上图,我们可以发现,通过使用滑动的小窗口,我们可以从图片中提取出三个特征,如下图中的小矩阵,分别对应着X的三个关键位置,也就是上图中红框框出来的部分,那么针对同一个物体在不同角度、不同远近、不同大小、不同正反、不同亮暗的情况下,我们始终能提取出相似的特征,并将提取出特征相似的图片归为一类。
卷积的计算
通过滑动窗口的不停移动,会不断的得到卷积之后的值。
二、卷积层
1.感受野
感受野指的是卷积神经网络每一层输出的特征图(feature map)上每个像素点映射回输入图像上的区域大小。神经元感受野的范围越大表示其能接触到的原始图像范围就越大,也意味着它能学习更为全局,语义层次更高的特征信息;相反,范围越小则表示其所包含的特征越趋向局部和细节。因此感受野的范围可以用来大致判断每一层的抽象层次。并且我们可以很明显地知道网络越深,神经元的感受野越大。由此可知,深度卷积神经网络中靠前的层感受野较小,提取到的是图像的纹理、边缘等局部的、通用的特征;靠后的层由于感受野较大,提取到的是图像更深层次、更具象的特征。因此在迁移学习中常常会将靠前的层的参数冻结(不参与训练,因为他们在迁移到新的场景之前已经具备了提取通用特征的能力),来节省训练的时间和算力消耗。
例如图片是3通道:
卷积核为3个77的,则卷积核所需要的参数个数为:3(377)=441个
卷积核为3个33的3层,则卷积核所需要的参数个数为:3(333)+3*(333) +3*(333)
2.权值共享
3.卷积中的核心概念
(1)卷积核
卷积核是一个可学习的二维(或三维,考虑通道)矩阵,用于在输入数据(如图像)上滑动,通过元素相乘和累加提取局部特征(如边缘、纹理、形状等)。
尺寸(Kernel Size):通常为奇数(如 3×3、5×5),便于以中心像素为对称点提取特征,也可使用 1×1(用于通道维度变换)。
深度(Depth/Channels):卷积核的通道数必须与输入数据的通道数一致(如输入 RGB 图像,卷积核通道数为 3),输出通道数由卷积核数量决定。
可学习参数:卷积核的权重在训练中通过反向传播优化,捕捉不同层次的特征。
(2)步长
步长是指卷积核在输入数据上滑动时的步幅,即每次移动的像素数。常见值为 1、2,大步长(如 4)较少使用。
步长 (S=1):输出尺寸接近输入,保留更多空间细节。步长 (S=2):输出尺寸约为输入的 1/2,实现下采样(类似池化),减少计算量并扩大感受野。
大步长导致卷积核覆盖区域重叠减少,可能丢失细节,但提升计算效率;小步长保留更多局部信息,但计算量增加。
(3)边界填充(Padding)
在输入数据的边界外围添加像素(通常为 0,称为零填充),避免边缘像素在卷积过程中被 “削弱”(仅被卷积核部分覆盖),同时控制输出尺寸。
目的是:
保留边缘信息:边缘像素在原始输入中仅被卷积核覆盖一次(中心位于边缘时),填充后可被完整处理。
控制输出尺寸:通过调整填充像素数 P,使输出尺寸与输入相同(Same Padding)或任意指定尺寸。
填充类型:
Valid Padding(无填充):(P=0),输出尺寸严格按公式计算,可能导致边缘信息丢失,适用于不需要保留边界细节的场景。
Same Padding(相同填充):
填充后输出尺寸与输入相同(或尽可能接近),计算公式为:
(5)卷积的过程
由于彩色图片通常是由RGB三种颜色通道,所以一张图片在表示上其实是三个矩阵的叠加之后的结果,然而卷积核就像是眼睛一样,不断地扫描图片从而提取特征,上图中总共有两组卷积核,这也就是说经过卷积会得到两张特征图,特征图的数量取决于卷积核的组数。
三、池化层
1. 最大池化(Max Pooling)和平均池化(Mean Pooling)
通常在连续的卷积层之间会周期性地插入一个池化层(也称“汇聚”层)。它的作用是逐渐降低数据体的空间尺寸,这样的话就能减少网络中参数的数量,使得计算资源耗费变少,也能有效控制过拟合。池化这个操作比较简单,一般在上采样和下采样的时候用到,没有参数,不可学习。
普通池化操作常见的有最大池化(Max Pooling)和平均池化(Mean Pooling)。
其中,最常用的是最大池化,最常见的形式是使用尺寸2x2的滤波器,以步长为2来对每个深度切片进行降采样,将其中75%的激活信息都丢掉。对更大感受野进行池化需要的池化尺寸也更大,而且往往对网络有破坏性。平均池化比较常用,但是现在已经很少使用了。因为实践证明,最大池化的效果比平均池化要好。尺寸为2×2、步长为2的最大池化核平均池化的示例如下图所示:
关于池化层的反向传播: 对于最大池化来说,max(x,y)函数的反向传播可以简单理解为将梯度只沿最大的数回传。因此,在向前传播经过汇聚层的时候,通常会把池中最大元素的索引记录下来(有时这个也叫作道岔(switches)),这样在反向传播的时候梯度的路由就很高效。
Max pooling的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息。 那么我们就反过来思考,这些“冗余”信息是如何产生的。
(2) 全局平均池化(Global Average Pooling)
全局平均池化的操作是对一个维度为(C,H,W)的feature map,在H和W方向整个取平均,然后输出一个长度为C的向量,这个操作一般在分类模型的最后一个feature map之后出现,然后接一个全连接层就可以完成分类结果的输出了。早期的分类模型都是把最后一个feature map直接拉平成C×H×W的向量,然后再接全连接层,可以明显看出这样计算量极大,甚至有的模型最后一个全连接层占了整个模型计算量的50%以上,之后由研究人员发现对这个feature map做一个全局平均池化,然后再加全连接层可以达到相似的效果,且计算量降低到了原来的1/HW。
四、卷积神经网络
1.知名的卷积神经网络
LeNet:第一个成功的卷积神经网络应用。
AlexNet:类似LeNet,但更深更大。使用了层叠的卷积层来抓取特征(通常是一个卷积层马上一个max pooling层)。
ZF Net:增加了中间卷积层的尺寸,让第一层的stride和filter size更小。
GoogLeNet:减少parameters数量,最后一层用max pooling层代替了全连接层,更重要的是Inception-v4模块的使用。
VGGNet:只使用3x3 卷积层和2x2 pooling层从头到尾堆叠。
ResNet:引入了跨层连接和batch normalization。
DenseNet:将跨层连接从头进行到尾。
2.卷积神经网络的架构
的工作过程是一个层次化的特征提取与分类过程:首先,输入图像经过卷积层,通过多个可学习的滤波器(卷积核)对局部区域进行扫描,提取边缘、纹理等初级特征,每个滤波器生成对应的特征图;接着,激活函数(如ReLU)引入非线性,增强模型的表达能力;然后通过池化层(如最大池化)对特征图进行下采样,降低空间维度并增强平移不变性;经过多轮"卷积-激活-池化"的堆叠后,深层网络逐渐捕获更复杂的语义特征(如物体部件或整体形态);最终,特征图被展平后输入全连接层,通过权重矩阵整合全局信息,输出层使用softmax等函数完成分类任务。整个过程中,低层捕捉细节特征,高层整合抽象语义,通过端到端的训练不断优化各层参数。
至此,我们了解了卷积神经网络中的零散知识,了解了卷积神经网络是如何工作的,其内部构造是什么。
相关文章:
《剥开卷积神经网络CNN的 “千层酥”:从基础架构到核心算法》
文章目录 前言卷积神经网络(Convolutional Neural Network,CNN)是一种专门用于处理网格结构数据(如图像、视频、音频)的深度学习模型。它在计算机视觉任务(如图像分类、目标检测)中表现尤为出色…...
win10中打开python的交互模式
不是输入python3,输入python,不知道和安装python版本有没有关系。做个简单记录,不想记笔记了...
技术与情感交织的一生 (七)
目录 出师 大三 MVP 首战 TYMIS はじめまして 辣子鸡丁 报价 日本人 致命失误 大佬 包围 品质保障 扩军 唯快不破 闪电战 毕业 总攻 Hold On 出师 大三 大三的学习生活,能认认真真的上一天课的时候很少,甚至经常因为客户的 “传呼”…...
ElasticSearch深入解析(一):Elastic Stack全景
一、Elastic Stack的发展 过去和现在: Elastic数据平台在搜索、地理位置、内部日志、数据指标、安全监控和APM应用性能管理等场景中的应用颇具亮点。 APM(Application Performance Management,应用性能管理)是一种用于监控和管理…...
CAD在线查看免费,可以支持DWG/GLB/GLTF/doc/wps/pdf/psd/eml/zip, rar/MP3/MP4/svg/OBJ/FBX格式
CAD在线查看免费,可以支持DWG/GLB/GLTF/doc/wps/pdf/psd/eml/zip, rar/MP3/MP4/svg/OBJ/FBX格式 m.gszh.xyz m.gszh.xyz 免费支持以下格式文件在线查看类型 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx, xlam, xla, pages …...
【机器学习案列-21】基于 LightGBM 的智能手机用户行为分类
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
多路转接poll服务器
目录 函数原型 poll服务器 对比select的优点 关于select的详解,可查看多路转接select服务器-CSDN博客 函数原型 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); poll作为多路转接的实现方案,与select要解决的问…...
全本地化智能数字人
🌟EdgePersona- 全本地化智能数字人 完全离线 | 隐私无忧 | 轻量高效 |笔记本友好 测试效果:【纯本地部署的电子魅魔!笔记本也能离线,隐私性拉满】 https://www.bilibili.com/video/BV1jydeYTETD/?share_sourcecopy_web&v…...
第6次课 贪心算法 A
向日葵朝着太阳转动,时刻追求自身成长的最大可能。 贪心策略在一轮轮的简单选择中,逐步导向最佳答案。 课堂学习 引入 贪心算法(英语:greedy algorithm),是用计算机来模拟一个「贪心」的人做出决策的过程…...
Docker 部署 PostgreSQL 数据库
Docker 部署 PostgreSQL 数据库 基于 Docker 部署 PostgreSQL 数据库一、拉取 PostgreSQL 镜像二、运行 PostgreSQL 容器三、运行命令参数详解四、查看容器运行状态 基于 Docker 部署 PostgreSQL 数据库 一、拉取 PostgreSQL 镜像 首先,确保你的 Docker 环境已正确…...
Android如何通过aspectj打造一个无侵入式动态权限申请框架
目录 一,背景 二,通过Aspectj管理所有的注解 三,配置注解 四,通过空白Activity完成真正的权限申请 五,引入依赖配置 一,背景 在Activity或者fragment中,写在几个方法写一些注释,用来表示权限申请成功,申请失败,多次拒绝。…...
Flink介绍——实时计算核心论文之Dataflow论文详解
引入 在过去的几篇文章里,我们看到了大数据的流式处理系统是如何一步一步进化的。从最早出现的S4,到能够做到“至少一次”处理的Storm,最后是能够做到“正好一次”数据处理的MillWheel。我们会发现,这些流式处理框架,…...
浅克隆(--depth 1)后如何获取完整的历史记录
如果远程remote为origin,则origin可以不写,如不是,则必须要写 获取全部分支 git fetch origin refs/heads/*:refs/remotes/origin/* 单独获取master分支 git fetch origin refs/heads/master:refs/remotes/origin/master 获取全部历史…...
安宝特案例 | 某知名日系汽车制造厂,借助AR实现智慧化转型
案例介绍 在全球制造业加速数字化的背景下,工厂的生产管理与设备维护效率愈发重要。 某知名日系汽车制造厂当前面临着设备的实时监控、故障维护,以及跨地域的管理协作等挑战,由于场地分散和突发状况的不可预知性,传统方式已无法…...
Feign 深度解析:Java 声明式 HTTP 客户端的终极指南
Feign 深度解析:Java 声明式 HTTP 客户端的终极指南 Feign 是由 Netflix 开源的 声明式 HTTP 客户端,后成为 Spring Cloud 生态的核心组件(现由 OpenFeign 维护)。它通过注解和接口定义简化了服务间 RESTful 通信,并…...
WPS Office安卓版云文档同步速度与PDF转换体验测评
WPS Office安卓版是很多人常用的移动办公软件。它支持在线编辑、文档同步、格式转换等功能,适合手机和平板用户随时处理文档。我们用它配合谷歌浏览器打开网页文档时,也可以将内容快速保存到云端或转换成PDF格式使用。 先说云文档同步。在打开WPS Office…...
ARM汇编的LDM和STM指令
批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据.LDM 为加载多个寄存器,STM 为存储多个寄存器.允许一条指令传送 16 个寄存器的任何子集或所有寄存器.指令格式如下: LDM{cond}<模式> Rn{!},reglist{^} STM{cond}<模式> Rn{!}…...
Python-27:游戏英雄升级潜力评估
问题描述 小U在一款挂机游戏中拥有n个英雄。游戏中有一种历练升级机制,每天可以选择两个英雄进行历练,如果两位英雄的等级相同,则他们的等级都不会改变。如果英雄等级不同,那么等级较高的英雄会增加1级,而等级较低的英…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之显示勾选的购物车数据和创建订单
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🚀1.显示勾选的购物…...
AWS Lambda 架构深入探究
AWS Lambda 是现代云架构中最受欢迎的服务之一,因其能够在完全托管的无服务器环境中运行代码而广受认可。然而,尽管 Lambda 广受欢迎,许多开发者和架构师对它的底层运作机制却知之甚少,常常将其视为“编写能够在云端神奇运行的代码…...
信奥赛CSP-J复赛集训(DP专题)(19):P3399 丝绸之路
信奥赛CSP-J复赛集训(DP专题)(19):P3399 丝绸之路 题目背景 张骞于公元前 138 年曾历尽艰险出使过西域。加强了汉朝与西域各国的友好往来。从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他…...
网络NAT类型测试
免费收录PCDN、GPU算力网站_算力收录站需要专业的PCDN、GPU算力网站收录服务吗?算力收录站为您提供高效、可信赖的收录服务,提升您的网站能见度。https://www.cdngpu.com/ 什么是 NAT:NAT代表网络地址转换,允许多个内网设备共享一…...
Postman下载安装与使用汉化版教程
简介: Postman 是一款常用的 API 测试工具,可以方便地进行接口测试、调试和文档编写。本文将详细介绍如何下载安装 Postman 并汉化,包括每个步骤的详细说明。 Postman 是一款常用的 API 测试工具,可以方便地进行接口测试、调试和…...
使用Python+OpenCV对视频抽帧保存为JPG图像
使用PythonOpenCV对视频抽帧保存为JPG图像 import os import cv2 import time#视频文件夹路径,可修改 videoPath D:\\video\\ #保存的图片文件夹路径,可修改 savePath D:\\images\\ videolist os.listdir(videoPath) if not os.path.exists(savePath…...
Java的反射机制(曼波超易懂图文版)
(✪▽✪)曼波~~~~!好的呀~让曼波用最可爱的姿势为你讲解Java反射机制吧! 🌟反射机制核心概念 曼波觉得反射就像编程世界的"魔法镜"(◕ᴗ◕✿) 可以让我们在运行时动态获取类的信息并操作类对象! // 举个栗子&#…...
【DeepSeek 学习推理】Llumnix: Dynamic Scheduling for Large Language Model Serving实验部分
6.1 实验设置 测试平台。我们使用阿里云上的16-GPU集群(包含4个GPU虚拟机,类型为ecs.gn7i-c32g1.32xlarge)。每台虚拟机配备4个NVIDIA A10(24 GB)GPU(通过PCI-e 4.0连接)、128个vCPU、752 GB内…...
运行neo4j.bat console 报错无法识别为脚本,PowerShell 教程:查看语言模式并通过注册表修改受限模式
无法将“D:\neo4j-community-4.4.38-windows\bin\Neo4j-Management\Get-Args.ps1”项识别为cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 前提配置好环境变量之后依然报上面的错…...
AI写代码之GO+Python写个爬虫系统
下面我们我们来利用AI,来用GOPython写个爬虫系统。 帮我写一个Python语言爬取数据写入Mysql的案例,信息如下: 1、Mysql数据库地址是:192.168.1.20 ,mysql用户名是:root, Mysql密码是࿱…...
【FAQ】如何配置PCoIP零客户端AWI能访问
应用场景 在安全性要求较高的环境中,禁用 AWI 并使用 PCoIP 管理控制台配置端点,建议隐藏 OSD 以提高安全性。 通过OSD和AWI: 阻止 PCoIP 管理工具管理 PCoIP 零客户端。禁用对 Tera2 PCoIP Zero Client 的 AWI 的管理访问。下次访问 AWI 或 OSD 时强…...
RAGFlow:构建高效检索增强生成流程的技术解析
引言 在当今信息爆炸的时代,如何从海量数据中快速准确地获取所需信息并生成高质量内容已成为人工智能领域的重要挑战。检索增强生成(Retrieval-Augmented Generation, RAG)技术应运而生,它将信息检索与大型语言模型(L…...
go语言中defer使用指南
目录 1.使用场景 2.执行顺序 3.for循环中的defer及defer中的闭包陷阱 4.defer与返回值的关系 5.总结 1.使用场景 在编程的时候,经常需要打开一些资源,比如数据库连接、文件、锁等,这些资源需要在用完之后释放掉,否则会造成内…...
成熟软件项目解决方案:360°全景影像显控软件系统
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/147425300 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、Open…...
域名解析体系中 IPv4/IPv6 地址切换的关键技术剖析
前言: 对接的一家学校业务,学校老师要求域名解析既能解析到ipv4地址又能解析到ipv6地址。听学校老师叙述(还是会考察v6开通率的),所以通过这个方法来实现的,域名解析到ipv6和ipv4都可以。 准备一台机器 机…...
PHP 爬虫如何获取 1688 商品详情(代码示例)
在电商领域,获取 1688 商品的详细信息对于市场分析、选品上架、库存管理和价格策略制定等方面至关重要。1688 作为国内领先的 B2B 电商平台,提供了丰富的商品数据。通过 PHP 爬虫技术,我们可以高效地获取 1688 商品的详细信息,包括…...
Mysql的redolog
保证事务持久性,用于崩溃恢复,崩溃恢复时,把redo上记载的页读到内存,对其修改,变为脏页,刷盘运用于WAL技术,将随机写改为顺序写 redo log有三种状态: 存在 redo log buffer 中&…...
C++ 哈希表
1. 哈希表的概念 在vector、list的顺序结构中,查找效率为 O ( N ) O(N) O(N),在set、map的树型结构中,查找效率为 O ( l o g 2 N ) O(log_2{N}) O(log2N),有没有更优的结构 —— 哈希表 如果让数据按照某种规则映射到某个值&a…...
【pytorch学习】土堆pytorch笔记1
学习参考 仓库 https://github.com/xiaotudui/pytorch-tutorialhttps://github.com/xiaotudui/pytorch-tutorial https://github.com/AccumulateMore/CV 参考博客 https://blog.csdn.net/weixin_44216612/article/details/124203730? https://www.morinha.cc/posts/cours…...
使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧
使用PythonOpenCV将多级嵌套文件夹下的视频文件抽帧 import os import cv2 import time# 存放视频文件的多层嵌套文件夹路径 videoPath D:\\videos\\ # 保存抽帧的图片的文件夹路径 savePath D:\\images\\if not os.path.exists(savePath):os.mkdir(savePath) video_num 0f…...
ASP.Net Web Api如何更改URL
1.找到appsettings.json 修改如下: 主要为urls的修改填本机私有地址即可 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": &q…...
毕业论文设计基本内容和要求:
毕业设计基本内容和要求: 研究内容 调查了解LAMP架构和PHP开发; 学习百度旅游调用的其他产品线服务并熟悉请求接口; 学习社区业务层规范; 设计并实现旅游主要模块; 技术指标 熟悉企业中流程运转的方式,…...
XML内容解析成实体类
XML解析成实体类 解析方法实体类测试 说明:直接上干货,不废话 解析方法 public static List<PlatJuMinBaoXian> parse(String xmlString) {List<PlatJuMinBaoXian> result new ArrayList<>();try {// 创建 DocumentBuilderDocumentB…...
推公式——耍杂技的牛
由图可知,只要存在一个逆序,把他们交换一下,最大风险值就会降低,答案更优,因此最优解是按照wisi从小到大升序排列,顺次计算每头牛的危险系数,最大值即是答案。 #include <iostream> #inc…...
Vue指令详解:从入门到精通
前言 Vue.js作为当下最流行的前端框架之一,其指令系统是Vue最核心的特性之一。指令是Vue模板中带有v-前缀的特殊属性,它们为HTML元素添加了特殊的响应式行为。本文将全面介绍Vue的各种指令及其用法。 一、Vue指令概述 Vue指令是带有v-前缀的特殊属性&…...
准确--CentOS 7 配置 Chrony 同步阿里云 NTP 时间服务器及手动同步指南
本文档介绍如何在 CentOS 7 系统上配置 chrony 服务,使其与阿里云 NTP 时间服务器保持时间同步,并说明如何在需要时手动触发一次立即同步。 前提条件: 拥有一台 CentOS 7 服务器。拥有 root 权限或可以使用 sudo 命令。服务器可以访问互联网 (使用公共…...
CLIP | 训练过程中图像特征和文本特征的在嵌入空间中的对齐(两个投影矩阵的学习)
在多模态学习(Multimodal Learning)中,投影矩阵 W i W_i Wi 和 W t W_t Wt 是通过训练过程学习得到的。它们的作用是将图像特征 I f I_f If 和文本特征 T f T_f Tf 映射到一个共享的嵌入空间(embedding space…...
Spring中配置 Bean 的两种方式:XML 配置 和 Java 配置类
在 Spring 框架中,配置 Bean 的方式主要有两种:XML 配置 和 Java 配置类。这两种方式都可以实现将对象注册到 Spring 容器中,并通过依赖注入进行管理。本文将详细介绍这两种配置方式的步骤,并提供相应的代码示例。 1. 使用 XML 配置的方式 步骤 创建 Spring 配置文件 创建…...
STM32 外部中断
引言:嵌入式系统中的中断革命 在嵌入式系统开发领域,中断机制堪称现代微控制器的"神经系统"。它通过高效的异步事件处理机制,彻底改变了传统轮询式系统资源利用率低下的局面。STM32作为业界领先的ARM Cortex-M系列微控制器&#x…...
4.22学习总结
开始写有关图的算法 图的一些基本概念,图的存储主要以 邻接矩阵,邻接表(数组链表的实现方式)的方式存储 邻接矩阵的优点: 表达方式简单,易于理解检查任意两个顶点间是否存在边的操作非常快适合稠密图&a…...
list底层原理
一.结构体的构建 这个用结构体更好,因为我们需要不断的访问节点,类中的成员函数一般都是私有的,需要还用友元函数什么的。 这个是我们来实现的类,我们实现的是双向带头循环链表,这个是实用性最高的一个链表的形式。 这…...
python+selenium+pytest自动化测试chrome driver版本下载
chrome浏览器chromedriver版本下载地址 https://googlechromelabs.github.io/chrome-for-testing/#stable...