神经网络优化 - 小批量梯度下降之批量大小的选择
上一博文学习了小批量梯度下降在神经网络优化中的应用:
神经网络优化 - 小批量梯度下降-CSDN博客
在小批量梯度下降法中,批量大小(Batch Size)对网络优化的影响也非常大,本文我们来学习如何选择小批量梯度下降的批量大小。
一、批量大小的选择
一般而言,批量大小不影响随机梯度的期望,但是会影响随机梯度的方差。
批量大小越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率。而批量大小较小时,需要设置较小的学习率,否则模型会不收敛。学习率通常要随着批量大小的增大而相应地增大。
一个简单有效的方法是线性缩放规则(Linear Scaling Rule):当批量大小增加 𝑚 倍时,学习率也增加 𝑚 倍。线性缩放规则往往在批量大小比较小时适用,当批量大小非常大时,线性缩放会使得训练不稳定。
我们来分析上面的这段话。
(一)首先,为什么“批量大小越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定”呢?
下面先给出核心结论:在小批量梯度下降(mini‑batch SGD)中,每次更新所用梯度是对选定批次样本梯度的平均。根据大数定律和方差运算规则,这个平均梯度的方差随着批次大小 B 的增大而减少(具体地,对单个样本梯度方差 σ^2,平均梯度的方差为 σ^2/B),因此批次越大,随机梯度的“噪声”越小,参数更新轨迹越平滑,训练也就越稳定。但批次过大又会降低更新频率、消耗更多内存并可能陷入不理想的平坦区域,所以实际中需在“稳定性”与“效率”之间做权衡。
1. 平均梯度方差随批次大小缩减
-
单样本梯度的随机性
每个训练样本对梯度的贡献视作随机变量,其方差可记作 σ^2。 -
批次梯度为样本梯度的均值
对一个大小为 B 的批次,梯度估计其方差根据样本独立同分布的假设满足
因此 B 越大,Var(g) 越小,使得每一步的更新更接近于“真实”全量梯度。
2. 数学直观与统计背景
-
大数定律
当 B 足够大时,批次均值近似收敛到总体期望(真实梯度),方差衰减至零。 -
中心极限定理
即便单样本梯度分布非正态,均值在大批次时仍近似正态分布,方差为 σ^2/B。 -
优化平滑性
较小的方差意味着更新方向的随机波动减少,参数更新路径更加平滑,梯度下降的步伐也更稳定,不易在鞍点或小坑中震荡。
3. 稳定性 vs. 更新频率的权衡
-
批次越大
-
噪声小、更新平稳:更接近全量梯度,收敛更规律。
-
计算开销大、更新慢:每次迭代需更多样本,迭代次数减少。
-
-
批次越小
-
噪声大、更新抖动:有助于跳出鞍点,提高泛化。
-
更新快、泛化好:更多次更新让算法能更快“试探”参数空间。
-
(二)上面提到“批量大小较小时,需要设置较小的学习率,否则模型会不收敛。”,这是为什么呢?
1. 梯度方差与学习率的关系
1.1 噪声放大与发散风险
一次更新为 。更新的随机波动度量可近似为
当 B 很小时,若 η不相应减小, 会变得很大,导致更新步长在不同方向上有剧烈抖动,学习过程难以收敛。
2. 理论与实证研究
2.1 明确“泛化差距”与鞍点分析
-
Keskar et al. (ICLR 2017) 发现大批量训练易陷入“尖锐最小点”而泛化较差,小批量带来的噪声有助于跳出尖锐谷底,且需适当调低学习率以保持稳定。
-
Masters & Luschi (ICLR 2018) 系统回顾了小批量训练的优势与挑战,指出小批量时梯度噪声大,需要更小的步长以避免震荡和发散。
2.2 动量与超收敛现象
-
Hoffer et al. (arXiv 2017) 演示了在小批量下使用更小学习率并结合动量可以加速训练并稳定收敛。
-
Smith et al. (ICLR 2019) 通过“超收敛”实验,进一步展示学习率和批量大小的精细配合对于噪声平衡和收敛速度的重要性。
3. 实践指南
-
依据批量大小缩放学习率
-
经验法则:当批量大小减小 kkk 倍时,将学习率也减小约 k\sqrt{k}k 至 kkk 倍,以保持更新方差可控。
-
-
结合动量或自适应优化器
-
在小批量时,动量(Momentum)或 Adam/RMSprop 等优化器可帮助缓冲梯度噪声,提高更新稳定性。
-
-
监控训练动态
-
观察训练损失曲线平滑度:若出现震荡或不下降,尝试减小学习率;
-
根据验证集性能动态调整,确保既能快速收敛又保持良好泛化。
-
二、回合(Epoch)和迭代(Iteration)的概念
每一次小批量更新为一次迭代,所有训练集的样本更新一遍为一个回合,两者的关系为:
下图说明在 MNIST 数据集上批量大小对损失下降的影响:
从左图可以看出,批量大小越大,下降效果越明显,并且下降曲线越平滑。但从右图可以看出,如果按整个数据集上的回合(Epoch)数来看,则是批量样本数越小,下降效果越明显。适当小的批量会导致更快的收敛。
此外,批量大小和模型的泛化能力也有一定的关系。通过实验发现:批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值。
三、在神经网络参数优化当中,采用小批量梯度下降,如何确定批量大小呢?
在神经网络训练中,确定小批量梯度下降(Mini-batch Gradient Descent)的批量大小(Batch Size)需要综合考虑计算效率、内存限制、优化效果和泛化性能。
1. 基本原则与经验法则
-
常见初始值:通常从 32、64、128、256 等 2 的幂次开始(因内存对齐优化),但需根据任务调整。
-
资源限制:批量大小受限于硬件内存(如GPU显存),需确保不引发内存溢出(OOM)。
-
学习率联动:增大批量时,可能需要按比例增大学习率(但需谨慎,避免不稳定)。
2. 批量大小的核心权衡
批量大小 | 优点 | 缺点 |
---|---|---|
小批量 | - 梯度噪声大,可能逃离局部最优 - 内存需求低,适合小显存设备 - 泛化性能可能更好 | - 计算效率低(并行性差) - 梯度方向波动大,训练不稳定 |
大批量 | - 梯度估计更准确,训练稳定 - 计算效率高(充分利用并行性) | - 易陷入平坦区域或鞍点 - 可能损害泛化性能 - 显存占用高 |
3. 确定批量大小的具体方法
(1) 基于硬件限制的调整
-
显存估算:
-
估算单个样本的显存占用(包括模型参数、激活值、梯度等)。
-
批量大小 ≈ 可用显存 / 单样本显存占用(预留20%余量)。
-
例如:单样本占用 100MB,显存 8GB → 最大批量 ≈ 8000MB / 100MB ≈ 80(取 64 或 128)。
-
(2) 基于任务特性的选择
-
数据复杂度高(如图像分割、自然语言生成):
-
建议小批量(如 16~64),以增加梯度多样性,避免过拟合。
-
-
数据简单或噪声多(如分类任务):
-
可尝试大批量(如 128~512),加速收敛。
-
(3) 学习率与批量大小的联动(线性缩放规则)
-
基本规则:
当批量大小增大 k 倍时,学习率可同步增大 k 倍(适用于小批量→中等批量,如 32→256)。
例如:批量从 64 增大到 256,学习率从 0.1 调整到 0.4。 -
注意事项:
-
该规则在极大批量(如 >1024)时可能失效,需结合学习率预热(Learning Rate Warmup)或其他自适应优化器(如 Adam)。
-
实践公式:学习率=基础学习率×批量大小N,N 为参考批量(如 256)。
-
(4) 实验验证法
-
网格搜索:
对候选批量(如 32、64、128、256)分别训练少量 epoch,观察:-
训练损失下降速度
-
验证集准确率/损失
-
训练时间/显存占用
选择综合表现最优的批量。
-
-
动态调整:
-
若训练初期梯度波动大(损失震荡),可适当增大批量。
-
若模型陷入局部最优,可减小批量引入更多噪声。
-
4. 特殊情况处理
-
极小批量(Batch Size=1):
-
等价于随机梯度下降(SGD),噪声极大,需搭配低学习率或梯度累积(Gradient Accumulation)。
-
适用于显存极度受限的场景(如训练大语言模型)。
-
-
极大批量(Batch Size > 1000):
-
需结合学习率预热(前几个 epoch 逐步增大学习率)和自适应优化器(如 LAMB、AdamW)。
-
注意:可能降低模型泛化能力,需增强正则化(如数据增强、Dropout)。
-
5. 经典场景参考
任务类型 | 推荐批量大小 | 理由 |
---|---|---|
图像分类(ResNet) | 64~512 | 平衡并行效率与泛化性能 |
目标检测(YOLO) | 8~32 | 高分辨率图像显存占用大 |
自然语言处理(BERT) | 16~64 | 长序列导致单样本显存高 |
强化学习(PPO) | 64~256 | 需大量环境交互数据 |
6. 总结与建议
-
从默认值开始:尝试批量大小 64 或 128,结合学习率 0.1(SGD)或 1e-4(Adam)。
-
逐步调整:根据显存占用和训练稳定性,按 2 的倍数增减批量。
-
监控指标:重点关注验证集性能而非训练速度,避免过拟合或欠拟合。
-
结合优化器:大批量时使用 LAMB 或 AdamW,小批量时使用 SGD 或 Adam。
最终,批量大小是超参数的一种,需通过实验找到任务、模型和硬件的最优平衡点。
相关文章:
神经网络优化 - 小批量梯度下降之批量大小的选择
上一博文学习了小批量梯度下降在神经网络优化中的应用: 神经网络优化 - 小批量梯度下降-CSDN博客 在小批量梯度下降法中,批量大小(Batch Size)对网络优化的影响也非常大,本文我们来学习如何选择小批量梯度下降的批量大小。 一、批量大小的…...
开源AI守护每一杯------奶茶咖啡店视频安全系统的未来之力
连锁饮品奶茶咖啡店视频安全系统以开源AI技术为引擎,将后厨管理从“被动查漏”升级为“主动防控”,让消费者从“担心卫生”变为“放心下单”。 解决方案亮点:技术驱动,全面防护 1. 实时监控与AI识别:秒级捕捉隐患 亮…...
音视频元素
目录 HTMLMediaElement网络状态 (networkState)就绪状态 (readyState)错误代码 (error.code) video属性方法事件 audio HTMLMediaElement HTMLMediaElement 是 HTML5 中 和 元素的基类,定义了它们共享的属性、方法和事件。无论你使用的是音频还是视频元素࿰…...
音视频小白系统入门课-2
本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅 课程传送门:音视频小白系统入门课 音视频基础ffmpeg原理 往期课程笔记传送门: 音视频小白系统入门笔记-0音视频小白系统入门笔记-1 课程实践代码仓库:传送门 音视频编解…...
时序逻辑电路——序列检测器
文章目录 一、序列检测二、牛客真题1. 输入序列连续的序列检测(输入连续、重叠、不含无关项、串行输入)写法一:移位寄存器写法二:Moore状态机写法三:Mealy状态机 一、序列检测 序列检测器指的就是将一个指定的序列&…...
#systemverilog# 进程控制问题#(八)关于#0 问题的使用(三)
今天,我们继续研究一下上一节讨论的问题。其实,还有一个小问题,我们来探讨一下。 `timescale 1ns/10psmodule tb_top(); reg clk; reg reset;initial begin reset = 0; #10 reset = 1; #15 reset = 0; #50 $finish; endinitial beginfor(int i = 0; i < 4 ; i++)fork #…...
k8s低版本1.15安装prometheus+grafana进行Spring boot数据采集
目录 一、背景: 二、实施过程 1).安装地址:https://github.com/prometheus-operator/kube-prometheus 2).安装方式两种, 3).安装Prometheus需要对照k8s集群版本。 4).拉去prometheus 5).导…...
Spring-Ioc容器的加载过程?
大家好,我是锋哥。今天分享关于【SpringIoC的实现机制是什么?】面试题。希望对大家有帮助; Spring-Ioc容器的加载过程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring IoC容器的加载过程是指在应用启动时&…...
kaamel Privacy agent:AI赋能的隐私保护技术解决方案
智能隐私合规解决方案 在当今数字经济环境下,有效的隐私合规已成为企业运营的基础要求。全球范围内已有超过120项隐私法规生效,这对企业的数据处理流程提出了严峻挑战。kaamel Privacy agent作为专门为隐私合规领域设计的AI引擎,通过自动化技…...
从零到上线!AI生成SpringBoot项目脚手架实战(含K8s+Docker配置)
在 Java 开发领域,搭建 Spring Boot 项目脚手架是一项耗时且繁琐的工作。传统方式下,开发者需要手动配置各种依赖、编写基础代码,过程中稍有疏忽就可能导致配置错误,影响开发进度。如今,随着 AI 技术的迅猛发展,飞算 JavaAI 的出现为开发者带来了全新解决方案,让自动生成 Sprin…...
VueRouter笔记
定义路由 import { createMemoryHistory, createRoute } from vue-router; import MyView1 from ./MyView1.vue; import MyView2 from ./MyView2.vue;const routes [{ path: /1, component: MyView1 },{ path: /2, component: MyView2 } ];const router createRouter({histo…...
vue3 Element-plus修改内置样式复现代码
笔者在修改Element-plus的内置样式时,遇到一点挫折,现提供需求场景与解决方案。 一、实现(1)透明弹窗可拖拽,且不影响点击弹窗外内容;(2)弹窗内置表格,表格需修改样式颜色…...
easyui进度条
简单打开和关闭 // 展示进度条 $.messager.progress({title: 请稍候,msg: 系统处理中...,text: 0%});//关闭进度条 $.messager.progress(close); easyui 普通提示 <!DOCTYPE html> <html> <head><meta charset"UTF-8">&l…...
vcpkg缓存问题研究
vcpkg缓存问题研究 问题描述解决方案官网给出的方案其实并不是大多数人语境中的“清除缓存”实际解决方案 问题描述 使用vcpkg管理c的库的时候,vcpkg会在c盘某些地方缓存下载的库,如果安装的库过多,这个缓存文件夹会过大占用磁盘空间&#x…...
优化WAV音频文件
优化 WAV 音频文件通常涉及 减小文件体积、提升音质 或 适配特定用途(如流媒体、广播等)。以下是分场景的优化方法,涵盖工具和操作步骤: 一、减小文件体积(无损/有损压缩) 1. 无损压缩 转换格式࿱…...
系统架构设计师:流水线技术相关知识点、记忆卡片、多同类型练习题、答案与解析
题目: 流水线技术中,若某流水线分为5段,每段执行时间为Δt,则执行100条指令的总时间为( ) A. 100Δt B. 104Δt C. 500Δt D. 505Δt 答案:B 解析:流水线总时间(nk-1)Δt&#…...
test ssl java
// 文件名:SslUtilsTest.java// 包路径: import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.io.InputStream; import java.security.KeyStore; import javax.net.ssl.SSLContext; import org.apache.hc.client5…...
【系统分析师】-软件工程
考点汇总 考点详情 软件生存周期:可行性分析与项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护 软件能力成熟度模型 CMM:初始级,可重复级,已定义级…...
FFmpeg 硬核指南:从底层架构到播放器全链路开发实战 基础
目录 1.ffmpeg的基本组成2.播放器的API2.1 复用器阶段2.1.1 分配解复用上下文2.1.2 文件信息操作2.1.3 综合示例 2. 2 编解码部分2.2.1 分配解码器上下文2.2.2编解码操作2.2.3 综合示例 3 ffmpeg 内存模型3.1 基本概念3.2API 1.ffmpeg的基本组成 模块名称功能描述主要用途AVFo…...
2025MathorcupD题 短途运输货量预测及车辆调度问题 保姆级教程讲解|模型讲解
2025Mathorcup数学建模挑战赛(妈妈杯)D题保姆级分析完整思路代码数据教学 其中更详细的思路,各题目思路、代码、讲解视频、成品论文及其他相关内容,可以点击下方群名片哦!...
CSS 包含块
CSS 中的包含块(Containing Block)是一个非常重要的概念,它定义了元素在布局中的参考框架。元素的尺寸、位置和偏移量通常都是基于其包含块来计算的。理解包含块的概念对于掌握 CSS 布局至关重要。 1. 包含块的作用 定位元素:当…...
嵌入式设备网络的动态ID分配机制实现
文章目录 前言一、系统设计要点二、核心数据结构2.1 设备唯一标识(DeviceUID)2.2 节点信息(Node)2.3 节点管理器(NodeManager) 三、核心算法实现3.1 初始化与清理3.1.1 初始化节点管理器3.1.2 清理节点管理器 3.2 动态ID分配策略3.2.1 查找最小可用ID3.2.2 ID使用检查 3.3 心跳…...
(论文阅读)RNNoise 基于递归神经网络的噪声抑制库
RNNoise 是一个基于递归神经网络的噪声抑制库。 有关该算法的描述见以下论文: J.-M. Valin, A Hybrid DSP/Deep Learning Approach to Real-Time Full-Band Speech Enhancement, Proceedings of IEEE Multimedia Signal Processing (MMSP) Workshop, arXiv:1709.08…...
Linux:线程概念与控制
✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ Linux:线程概念于控制 var code “d7e241ae-ed4d-475f-aa3d-8d78f873fdca” 概念 在一个程序里的一个执行路线就叫做线程thread。更准确一点:线程是“一个进程内部的控制序列” …...
双轮驱动能源革命:能源互联网与分布式能源赋能工厂能效跃迁
在全球能源结构深度转型与“双碳”目标的双重驱动下,工厂作为能源消耗的主力军,正站在节能变革的关键节点。能源互联网与分布式能源技术的融合发展,为工厂节能开辟了全新路径。塔能科技凭借前沿技术与创新实践,深度探索能源协同优…...
网络安全-Burp Suite基础篇
声明 本文主要用做技术分享,所有内容仅供参考。任何使用或者依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 1 Burp Suite功能介绍 1.1 Burp Suite 简介 Burp Suite 是一款极为强大且广受欢迎的集成化 …...
从人工到智能:外呼系统如何重构企业效率新生态
在数字化转型的浪潮中,智能外呼系统正从边缘辅助工具演变为企业效率革命的核心引擎。根据Gartner最新调研数据,部署AI外呼系统的企业客服效率平均提升68%,销售线索转化率增长42%。但在这场技术驱动的变革中,真正决定成败的往往不是…...
折扣电影票api对接详细指南,如何对接?
以下是折扣电影票 API 对接的一般指南: 对接前准备 明确需求:确定对接的目的和所需功能,如电影信息查询、场次查询、座位预订、支付等。明确支持的数据字段和业务流程。选择 API 服务提供商:选择技术成熟、服务稳定、覆盖范围广的…...
初识Redis · 客户端“Hello world“
目录 前言: 环境配置 Hello world 前言: 前文我们已经介绍了Redis的不常见的五种数据类型,并且补充了几个渐进式命令和数据库管理命令等,最后简单认识了一下RESP协议,但是老实说,我们只能算是知道了这个…...
51单片机实验一:点亮led灯
目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.用keil 软件创建工程,C文件编写程序,编译生成hex文件编辑 2.用STC烧写hex文件,点亮第一个LED灯 3.使用法2,点除第一个以外的LED灯 一、实验环境与实验器材 环境&am…...
基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 NARMAX模型定义 4.2 鲸鱼优化算法WOA原理 4.3 粒子群优化算法PSO原理 5.完整程序 1.程序功能描述 基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法。分别通过WOA…...
AWS上构建基于自然语言的数值和符号计算系统
我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和以下使用C#开源库MathNet实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过以下符号和数值计算和其它符号和数值计算程序输出计算结果和必要步骤的应用,这样的数学计算使用程序直接产生结果,可以…...
2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(三级)真题
青少年软件编程(Python)等级考试试卷(三级) 分数:100 题数:38 答案解析:https://blog.csdn.net/qq_33897084/article/details/147341388 一、单选题(共25题,共50分) 1. 学校进行体…...
校平机:精密制造的“材料雕刻家“
在液晶面板生产线的无尘车间里,一片薄如蝉翼的玻璃基板正经历纳米级的形态修正;在新能源电池极片生产线上,铜箔以每秒5米的速度穿越精密辊系,完成微米级的平整蜕变。这些现代工业的"毫米级魔术",都离不开一台…...
FPGA HR Bank如何支持ODELAY问题分析
目录 1.ODELAY简单介绍 2.IODELAY 的特性 3.IODELAY 的 资源支持的管脚 4.HR bank如何支持ODELAY固定延迟 1.ODELAY简单介绍 FPGA 中的 IODELAY(Input/Output Delay),这是 Xilinx(现 AMD)FPGA 中一种用于精确控制输入/输出信号时序延迟的硬件资源。以下是关于 IODELAY…...
深入解析C++驱动开发实战:优化高效稳定的驱动应用
深入解析C驱动开发实战:优化高效稳定的驱动应用 在现代计算机系统中,驱动程序(Driver)扮演着至关重要的角色,作为操作系统与硬件设备之间的桥梁,驱动程序负责管理和控制硬件资源,确保系统的稳定…...
高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos如何处理网络分区情况下的服务可用性问题? 我回答: 在讨论 Nacos 如何处理网络分区情况下的服务可用性问题时,我们需要深入理解 CAP 理论以及 Nacos 在这方面的设计选择。Nacos 允许用户根据具体的应用…...
07_Docker 资源限制
Docker 容器做资源限制,是为了不让某个容器抢光 CPU、内存等主机资源,保证所有容器都能稳定运行,还能避免宿主机资源被耗尽,让资源利用更高效,也方便管理和满足服务的性能要求。 监控容器资源使用情况 docker stats …...
Flutter Notes | 我用到的一些插件整理
Flutter开发必备插件推荐与iOS上架工具分享 前言 一个项目的开始和结束,总会遇到很多意料之外的东西。大神和菜鸟的区别,个人感觉更多的是大神花费了很多私下时间去了解每个问题的根本是什么,而我这小菜鸟,仅仅网上浪一圈&#…...
WordPress自定义页面与文章:打造独特网站风格的进阶指南
文章目录 引言一、理解WordPress页面与文章的区别二、主题与模板层级:自定义的基础三、自定义页面模板:打造专属页面风格四、自定义文章模板:打造个性化文章呈现五、使用自定义字段和元数据:增强内容灵活性六、利用WordPress钩子&…...
golang channel源码
解析 数据结构 hchan:channel 数据结构 qcount:当前 channel 中存在多少个元素; dataqsize: 当前 channel 能存放的元素容量; buf:channel 中用于存放元素的环形缓冲区; elemsize:channel 元素…...
麒麟操作系统漏洞修复保姆级教程弱(一)算法漏洞修复
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 目录 一、相关问题 二、建议修复方法 修复方案(方案一和方案二是错误示范,干货在方案三) 方案一、首先我想按照第一步,将OpenSSH升级解决这一漏洞…...
汉诺塔专题:P1760 通天之汉诺塔 题解 + Problem D: 汉诺塔 题解
1. P1760 通天之汉诺塔 题解 题目背景 直达通天路小A历险记第四篇 题目描述 在你的帮助下,小 A 成功收集到了宝贵的数据,他终于来到了传说中连接通天路的通天山。但是这距离通天路仍然有一段距离,但是小 A 突然发现他没有地图࿰…...
vscode中markdown一些插件用不了解决方式
我发现我安装了vscode的一些插件,但是没起效果(就是该插件暗淡了),后面得知,是因为没有信任工作空间。 This extension has been disabled because the current workspace is not trusted 这个提示信息表明,…...
Python爬虫第16节-动态渲染页面抓取之Selenium使用上篇
目录 前言 一、Selenium的简介和学习准备 二、Selenium基本使用 三、声明浏览器对象 四、访问页面 五、查找节点 5.1 单个节点 5.2 多个节点 六、节点交互 七、动作链 八、执行JavaScript 前言 本专栏之前的内容,我们讲了怎么分析和抓取Ajax,…...
KMP算法动态演示
KMP算法 1.动态演示 https://tsccg-oss.oss-cn-guangzhou.aliyuncs.com/image/KMP%E7%AE%97%E6%B3%95%E5%8A%A8%E6%80%81%E6%BC%94%E7%A4%BA.gif 2.代码实现 Testpublic void test5(){String parent "ABC ABCDAB ABCDABCDABDE";String child "ABCDABD&quo…...
linux获取cpu使用率(sy%+us%)
float getCpuUsage() { // C11兼容的元组解包 typedef std::tuple<unsigned long long, unsigned long long, unsigned long long> CpuTuple; auto parseCpuLine [](const std::string& line) -> CpuTuple { std::istringstream iss(line); …...
ESP-IDF教程2 GPIO - 输入、输出和中断
文章目录 1、前提1.1、基础知识1.1.1、GPIO 分类1.1.2、FALSH SPI 模式1.1.3、过滤器1.1.4、外部中断 1.2、数据结构1.2.1、GPIO1.2.2、毛刺过滤器 1.3、硬件原理图 2、示例程序2.1、GPIO 输出 - 点亮 LED 灯2.2、GPIO 输入 - 按键响应2.3、GPIO 外部中断 - 按键响应 3、常用函…...
Ubuntu安装MySQL步骤及注意事项
一、安装前准备 1. 系统更新:在安装 MySQL 之前,确保你的 Ubuntu 系统软件包是最新的,这能避免因软件包版本问题导致的安装错误,并获取最新的安全补丁。打开终端,执行以下两条命令: sudo apt update sudo …...
支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试
在mingw14.2版本中, print库的功能默认没有开启, 生成可执行文件的tasks.json里要显式加-lstdcexp, 注意放置顺序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…...