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

Transformer数学推导——Q29 推导语音识别中流式注意力(Streaming Attention)的延迟约束优化

 该问题归类到Transformer架构问题集——注意力机制——跨模态与多模态。请参考LLM数学推导——Transformer架构问题集

在语音识别任务中,实时性是核心需求 —— 想象你使用语音助手时,每说完一个词就希望即时看到文字反馈,而不是等整句话说完后才显示。流式注意力(Streaming Attention) 正是为解决这一问题而生,它像一条 “语音流水线”,边接收音频帧边处理,在保证识别准确率的同时严格控制延迟。本文从延迟约束的数学推导出发,结合实例解析其核心机制。

1. 流式处理的核心挑战:延迟 vs. 上下文

传统非流式注意力的缺陷

  • 传统 Transformer 的自注意力需要完整音频序列(如 10 秒语音对应约 1000 帧)才能计算全局依赖,延迟高达数百毫秒;
  • 公式:延迟 T_{\text{non-streaming}} \propto N(N 为总帧数),随音频长度线性增长。

流式注意力的破局点

  • 分块处理:将音频切分为固定长度的 “窗口”(如每 200 帧为一块),每次仅处理当前窗口及有限历史信息;
  • 因果约束:当前帧只能关注过去或当前窗口内的帧,不能 “预知” 未来(符合语音实时处理的因果关系)。

类比:非流式处理像 “看完整个电影再写影评”,流式处理则是 “边看电影边记录关键情节”,每段记录依赖最近的剧情,避免等待全片结束。

2. 延迟约束的数学推导:从全局到窗口的优化
2.1 延迟的定义与构成
  • 处理延迟 T_p:处理一帧音频的时间,包含特征提取、注意力计算等;
  • 等待延迟 T_w:等待足够帧形成窗口的时间(如窗口大小 W=200,每 10ms 生成一帧,则 T_w=200 \times 10\text{ms}=2\text{s});
  • 总延迟 T_{\text{total}} = T_p + T_w
2.2 传统自注意力的延迟公式

假设每帧处理时间为 t,总帧数 N:T_{\text{non-streaming}} = N \cdot t \quad (\text{linear growth, unacceptable})

2.3 流式注意力的窗口化优化

引入窗口大小 W 和重叠长度 O(如前一窗口的最后 O 帧与当前窗口重叠,保留上下文):

  • 每窗口处理时间 T_{\text{window}} = W \cdot t
  • 由于重叠,实际新增帧数为 W - O,总延迟变为:T_{\text{streaming}} = W \cdot t + \frac{O}{R} \quad (\text{where} R \text{ is the frame rate; latency scales with window size, not total frame count})关键:通过固定 W,将延迟控制在常数级别,与总音频长度无关。
2.4 因果注意力的约束条件

为保证实时性,当前帧 t 只能关注 [t-W, t] 范围内的帧(因果掩码):\alpha_{t,s} = 0 \quad \text{for } s > t \text{ or } s < t-W 确保注意力计算不依赖未来帧,符合流式处理的时序逻辑。

3. 流式注意力的核心机制:滑动窗口与状态缓存
3.1 滑动窗口:有限上下文的高效利用
  • 窗口滑动策略
    • 非重叠窗口:简单但上下文断裂(如窗口 1: [1-200],窗口 2: [201-400]);
    • 重叠窗口:窗口 2 包含窗口 1 的最后 50 帧(如 O=50),保留跨窗口依赖(如 “跑步” 的动作可能跨窗口)。
  • 数学表达:第 k 个窗口的帧范围为 [k \cdot (W-O), k \cdot (W-O) + W],确保相邻窗口共享 O 帧上下文。
3.2 状态缓存:避免重复计算
  • 缓存历史键值对: 首次处理窗口 1 时,保存其键 \mathbf{K}_1 和值 \mathbf{V}_1; 处理窗口 2 时,仅计算当前新帧的 \mathbf{Q}_2, \mathbf{K}_2, \mathbf{V}_2,并复用 \mathbf{K}_1, \mathbf{V}_1(需保留重叠部分)。
  • 计算量优化: 传统:每窗口计算 W \times W注意力矩阵; 流式:每窗口计算 W \times (W+O) 矩阵(复用历史 O 帧的键值),计算量从 O(W^2) 降至 O(W(O+W)),当 O \ll W 时近似线性。
3.3 延迟约束下的注意力公式

带缓存的流式注意力计算如下:

  1. 特征变换:当前窗口帧 \mathbf{h}_t 生成查询 \mathbf{Q}_t = \mathbf{h}_t \mathbf{W}^Q,键 \mathbf{K}_t = \mathbf{h}_t \mathbf{W}^K,值 \mathbf{V}_t = \mathbf{h}_t \mathbf{W}^V
  2. 缓存合并:当前键值对 (\mathbf{K}_t, \mathbf{V}_t) 与历史缓存的 (\mathbf{K}_{\text{cache}}, \mathbf{V}_{\text{cache}}) 合并为 (\mathbf{K}_{\text{total}}, \mathbf{V}_{\text{total}})
  3. 因果掩码注意力\alpha_{t,s} = \frac{\exp\left(\frac{\mathbf{Q}_t \cdot \mathbf{K}_s}{\sqrt{d_k}}\right) \cdot \mathbf{M}_{t,s}}{\sum_{s' \in \text{window}(t)} \exp\left(\frac{\mathbf{Q}_t \cdot \mathbf{K}_{s'}}{\sqrt{d_k}}\right)} 其中 \mathbf{M}_{t,s} 是因果掩码(仅允许 s \leq t 且 s \geq t-W 时为 1)。
4. 在语音识别中的实战应用:实时语音转文字
4.1 流式语音识别系统架构
  • 前端:麦克风实时采集音频,分帧(如每 10ms 一帧,16kHz 采样率下每帧 160 个样本);
  • 流式注意力层
    1. 每收到 200 帧(2 秒音频)触发一次处理,重叠前 50 帧以保留上下文;
    2. 计算当前窗口与历史缓存的注意力,生成帧级隐藏状态;
  • 解码器:实时将隐藏状态转换为文字,逐词输出(如 “你好”→“你”→“你好”)。

案例:某语音助手使用流式注意力后,端到端延迟从 800ms 降至 200ms,用户对话流畅度提升 30%。

4.2 延迟优化的工程技巧
  1. 动态窗口调整
    • 安静时段使用小窗口(W=100)降低延迟;
    • 嘈杂时段增大窗口(W=300)提升上下文依赖,平衡实时性与准确率。
  2. 近似注意力: 用局部敏感哈希(LSH)近似计算注意力,将 O(W^2) 计算量降至 O(W \log W),适合移动端部署。
5. 代码示例:简化的流式注意力层实现

以下是带缓存和因果掩码的流式注意力代码,模拟实时处理音频帧序列:

import torch  
import torch.nn as nn  
import torch.nn.functional as F  class StreamingAttention(nn.Module):  def __init__(self, d_model, n_heads, window_size=200, overlap=50):  super().__init__()  self.d_model = d_model  self.n_heads = n_heads  self.window_size = window_size  # 窗口大小(帧数)  self.overlap = overlap  # 重叠帧数  self.d_k = d_model // n_heads  # 投影矩阵  self.q_proj = nn.Linear(d_model, d_model)  self.k_proj = nn.Linear(d_model, d_model)  self.v_proj = nn.Linear(d_model, d_model)  self.out_proj = nn.Linear(d_model, d_model)  # 初始化缓存(键和值)  self.cache_k = None  self.cache_v = None  def forward(self, x):  B, T, D = x.shape  # 输入:(批次, 帧数, 特征维度)  device = x.device  # 特征投影  q = self.q_proj(x).view(B, T, self.n_heads, self.d_k).transpose(1, 2)  # (B, h, T, d_k)  k = self.k_proj(x).view(B, T, self.n_heads, self.d_k).transpose(1, 2)  v = self.v_proj(x).view(B, T, self.n_heads, self.d_k).transpose(1, 2)  # 处理缓存:首次调用时缓存为空,否则保留前overlap帧  if self.cache_k is not None:  k = torch.cat([self.cache_k, k], dim=2)  # 合并历史键  v = torch.cat([self.cache_v, v], dim=2)  # 合并历史值  # 应用因果掩码:当前帧只能看前window_size帧(包括重叠部分)  mask = torch.triu(torch.ones(T + self.overlap, T + self.overlap, dtype=torch.bool), diagonal=1 + self.overlap).to(device)  # 禁止关注未来帧和过远历史  attn_scores = (q @ k.transpose(-2, -1)) / (self.d_k ** 0.5)  attn_scores = attn_scores.masked_fill(mask, -float('inf'))  # 计算注意力权重并聚合  attn_probs = F.softmax(attn_scores, dim=-1)  output = attn_probs @ v  # (B, h, T, d_k)  output = output.transpose(1, 2).contiguous().view(B, T, self.d_model)  output = self.out_proj(output)  # 更新缓存:保留当前窗口的最后overlap帧用于下一窗口  self.cache_k = k[:, :, -self.overlap:] if self.cache_k is not None else k[:, :, :self.overlap]  self.cache_v = v[:, :, -self.overlap:] if self.cache_v is not None else v[:, :, :self.overlap]  return output  # 实例化:处理256维特征,8头,窗口大小200,重叠50  
stream_attn = StreamingAttention(d_model=256, n_heads=8)  # 模拟实时输入:每次输入100帧(流式处理,分批传入)  
for i in range(10):  frames = torch.randn(1, 100, 256)  # 每批100帧  output = stream_attn(frames)  print(f"处理第{i+1}批,输出形状:{output.shape}")  # (1, 100, 256),包含当前帧的上下文信息  

代码解读

  1. 缓存机制cache_k 和 cache_v 保存前一窗口的重叠帧键值对,避免重复计算历史信息;
  2. 因果掩码:通过 torch.triu 生成掩码,确保当前帧只能关注过去 window_size 帧(包括重叠部分),禁止关注未来;
  3. 流式处理:每次输入新帧时,合并历史缓存,处理后仅保留重叠部分用于下一窗口,实现流水线式处理。
6. 总结:流式注意力如何让语音识别 “实时呼吸”

流式注意力通过数学上的窗口化和因果约束,将语音识别的延迟从 “线性增长” 变为 “常数可控”,其核心价值在于:

  • 理论突破:用 T_{\text{streaming}} \propto W 替代 T_{\text{non-streaming}} \propto N,将延迟与总音频长度解耦;
  • 工程落地:通过缓存机制和重叠窗口,在实时场景中保留关键上下文,平衡延迟与准确率;
  • 用户体验:让语音助手、实时字幕等应用成为可能,使机器能像人类一样 “边听边理解”,而非 “听完再反应”。

未来,随着边缘计算设备的普及,流式注意力将结合模型量化、动态窗口等技术,进一步降低端侧延迟,让语音交互更自然流畅 —— 就像人与人对话般实时响应,这正是数学优化与工程实践结合的魅力所在。

相关文章:

Transformer数学推导——Q29 推导语音识别中流式注意力(Streaming Attention)的延迟约束优化

该问题归类到Transformer架构问题集——注意力机制——跨模态与多模态。请参考LLM数学推导——Transformer架构问题集。 在语音识别任务中&#xff0c;实时性是核心需求 —— 想象你使用语音助手时&#xff0c;每说完一个词就希望即时看到文字反馈&#xff0c;而不是等整句话说…...

dx11 龙书学习 第四章 dx11 准备工作

4.1 准备工作 Direct3D的初始化过程要求我们熟悉一些基本的Direct3D类型和基本绘图概念&#xff1b;本章第一节会向读者介绍些必要的基础知识。然后我们会详细讲解Direct3D初始化过程中的每一个必要步骤&#xff0c;并顺便介绍一下实时绘图应用程序必须使用的精确计时和时间测…...

运维打铁:域名详解及常见问题解决

文章目录 前言一、域名基础概念1. 什么是域名2. 域名结构3. 域名解析 二、域名工作原理1. DNS 服务器层次结构2. 域名解析过程 三、常见域名问题及解决办法1. 域名无法解析2. 域名解析延迟3. 域名解析结果不一致 四、总结 前言 在当今数字化的时代&#xff0c;互联网已经成为我…...

【大模型ChatGPT+R-Meta】AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表“

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面&#xff0c;成为Science、Nature论文的…...

ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上

文章目录 0.安装数据迁移工具1.导出数据2.导出mapping3.导出查询模板4.拷贝插件5.拷贝配置6.导入到目标电脑上 0.安装数据迁移工具 Elasticsearch dump是一个用于将Elasticsearch索引数据导出为JSON格式的工具。你可以使用Elasticsearch dump通过命令行或编程接口来导出数据。…...

QT中的多线程

Qt中的多线程和Linux中的线程本质是相同的&#xff0c;Qt中针对系统提供的线程API进行了重新封装 QThread类 Qt中的多线程一般通过QThread类实现&#xff0c;要想创建线程就要创建这个类的实例 QThread代表一个在应用程序中可以独立控制的线程&#xff0c;也可以和进程中的其…...

Win11安装Ubuntu20.04简记

写在前面 之前装的22.04&#xff0c;不稳定&#xff0c;把22.04卸载了&#xff0c;重新安装20.04系统。这里主要把卸载和安装的过程中参考到的博客在这记录一下。 卸载ubuntu系统参考的博文 卸载参考博文1 卸载参考博文2 Ubuntu20.04安装参考博文 安装参考博文1 安装参考博…...

电子电器架构 ---电气/电子架构将在塑造未来出行方面发挥啥作用?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

pdf.js移动端预览PDF文件时,支持双指缩放

在viewer.html中添加手势缩放代码 <script>// alert("Hello World");let agent navigator.userAgent.toLowerCase();// if (!agent.includes("iphone")) {let pinchZoomEnabled false;function enablePinchZoom(pdfViewer) {let startX 0, start…...

机器人--激光雷达

教程 教程 激光雷达 激光 激光&#xff08;Laser&#xff09;&#xff0c;是一种人造的、高度纯净的单色光。 雷达 激光器旋转机构雷达。 雷达根据激光探头发出激光束的数量&#xff0c;一般可以分为单线激光雷达(2D激光雷达)和多线激光雷(3D激光雷达)。 作用 测距原理 激…...

最新ios开发证书/发布证书/免费证书/企业证书制作教程

本文介绍了如何制作或者苹果开发证书p12文件&#xff0c;含开发证书&#xff0c;推送证书&#xff0c;发布证书&#xff0c;企业证书&#xff0c;免费证书&#xff0c;您在iphone和ipad开发构建 IOS App 应用和苹果ios app签名需要用到。如果嫌麻烦&#xff0c;可以使用懒人工具…...

【Keil5-开发指南】

Keil5-编程指南 ■ Keil5 介绍■ J-Flash 使用■ Keil5-Debug调试工具 Jlink---STLink---DAP仿真器■ Keil5 使用 AStyle插件格式化代码■ Keil5-编译4个阶段■ Keil5-Boot和APP配置■ Keil5-报错■ 芯片手册区别 ■ Keil5 介绍 Keil5 介绍 ■ J-Flash 使用 J-Flash 使用 ■…...

蓝桥杯 18. 机器人繁殖

机器人繁殖 原题目链接 题目描述 X 星系的机器人可以自动复制自己。它们用 1 年的时间可以复制出 2 个自己&#xff0c;然后就失去复制能力。 每年 X 星系都会选出 1 个新出生的机器人发往太空。也就是说&#xff0c;如果 X 星系原有机器人 5 个&#xff0c;1 年后总数是&a…...

从微服务到AI服务:Nacos 3.0如何重构下一代动态治理体系?

在现代微服务架构的浪潮中&#xff0c;Nacos早已成为开发者手中的“瑞士军刀”。作为阿里巴巴开源的核心中间件&#xff0c;它通过动态服务发现、统一配置管理和服务治理能力&#xff0c;为云原生应用提供了坚实的基石。从初创公司到全球500强企业&#xff0c;Nacos凭借其开箱即…...

60、微服务保姆教程(三)Sentinel---高可用流量管理框架/服务容错组件

Sentinel—高可用流量管理框架/服务容错组件 一.为什么要用Sentinel? 1.微服务架构中当某服务挂掉的时候常见的原因有哪些? 1.异常没处理 比如DB连接失败,文件读取失败等 2.突然的流量激增 比如:用户经常会在京东、淘宝、天猫、拼多多等平台上参与商品的秒杀、限时抢…...

[特殊字符] 基于Docker部署Nacos注册中心及微服务注册发现详解(含MySQL持久化配置)

&#x1f4da; 目录 项目背景与准备 Docker部署Nacos并配置MySQL持久化 微服务注册到Nacos&#xff08;item-service示例&#xff09; 微服务服务发现与调用&#xff08;cart-service示例&#xff09; 小结 1. 项目背景与准备 在微服务架构中&#xff0c;服务注册与发现是…...

CentOS 7环境配置DHCP服务器

主播多次测试&#xff0c;没有什么问题。如果有问题可以私信主播&#xff0c;主播不定时查看 目录 1. 初始配置 1.1 配置VMware workstation配置 1.2 设置虚拟机网路适配器为NAT模式 2. 环境搭建 2.1下载相应的软件包 2.2 查找下载的软件包中给出的示例代码所在目录 2.2 …...

基于常微分方程的神经网络(Neural ODE)

参考资料&#xff1a;B站的视频解析 知乎神经常微分方程总结 论文链接&#xff1a;论文 什么是常微分方程&#xff1f; 微分方程式包含未知函数及其导数的方程&#xff0c;未知函数导数的最高阶数称为给i微分方程的阶。 常微分方程(ordinary differential equation&#xff0…...

对VTK中的Volume Data体数据进行二维图像处理

文章目录 概要Cpp代码处理前效果处理后效果 概要 在 VTK 中对体数据进行二维图像处理的过程通常涉及从三维体数据中提取二维切片&#xff0c;并对这些切片进行处理。然后&#xff0c;可以选择性地将处理后的切片数据重新合并成新的体数据。 以下是对 VTK 中的体数据进行二维图…...

阿里云ftp服务器登录要怎么做?如何访问ftp服务器?

阿里云ftp服务器登录要怎么做&#xff1f;如何访问ftp服务器&#xff1f; 访问FTP服务器通常需要以下步骤&#xff0c;具体方法取决于您使用的工具和操作系统&#xff1a; 一、FTP服务器登录所需信息 服务器地址&#xff1a;通常是IP地址&#xff08;如 ftp.example.com 或 192…...

中国的国产化进程

中国的国产化进程是一个涉及国家安全、经济发展和技术自主的长期战略,其历史进程和动因可以从以下几个关键阶段和核心原因来理解: ​​一、国产化的历史进程​​ ​​1. 建国初期(1949–1978):自力更生与基础工业建设​​ ​​背景​​:新中国成立后,面临西方国家的技术…...

突破语言藩篱:从Seq2Seq到智能翻译的范式革命

## 一、语言之桥的智能进化:超越字面转换的深层理解 在慕尼黑工业大学实验室的深夜,一个搭载最新神经网络的翻译系统正逐字解析着歌德诗句的韵律。这并非简单的词语替换,而是一场跨越时空的文化解码——机器首次在《浮士德》的英译本中保留了德文诗歌特有的头韵结构。这个突…...

Java写项目前的准备工作指南(技术栈选择 环境搭建和工具配置 项目结构设计与模块划分)

前言 &#x1f4dd; 在开始编写一个 Java 项目之前&#xff0c;做好充分的准备工作是至关重要的。很多初学者可能在没有清晰规划的情况下就开始编写代码&#xff0c;导致项目开发进度缓慢、结构混乱&#xff0c;甚至最终无法按预期完成。而事实上&#xff0c;项目的成功不仅仅…...

如何使用 Redis 缓存验证码

目录 &#x1f9e0; Redis 缓存验证码的工作原理 &#x1f9f0; 实现流程 1. 安装 Redis 和 Python 客户端 2. 生成并缓存验证码 示例代码&#xff1a;生成并存储验证码 3. 发送验证码&#xff08;以短信为例&#xff09; 4. 校验验证码 示例代码&#xff1a;校验验证码…...

(八)RestAPI 毛子(Unit Testing)

文章目录 项目地址一、Unit Testing1.1 创建X unit 测试项目1. 创建项目目录2. 管理包 1.2 创建CreateEntryDtoValidator测试1.3 创建CreateEntryDtoValidator测试 二、Integration test2.1 创建Integration test环境1. 安装所需要的包 2.2 配置基础设置1. 数据库链接DevHabitW…...

德州仪器(TI)—TDA4VM芯片详解(2)—产品应用和介绍

写在前面 本系列文章主要讲解德州仪器&#xff08;TI&#xff09;TDA4VM芯片的相关知识&#xff0c;希望能帮助更多的同学认识和了解德州仪器&#xff08;TI&#xff09;TDA4VM芯片。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) 错过其他章节的同学…...

vue2,3:v-model的语法糖

Vue2的v-model 语法糖 **1. **v-model 的作用 v-model 是 Vue 中用于实现双向数据绑定的指令&#xff0c;主要用于表单元素&#xff08;如 、、&#xff09;和自定义组件。它简化了数据与视图之间的同步&#xff0c;使得开发者可以方便地处理用户输入。 **2. **v-model 的语…...

【深度学习】#10 注意力机制

主要参考学习资料&#xff1a; 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 目录 注意力提示生物学中的注意力提示查询、键和值 注意力汇聚注意力评分函数掩蔽softmax操作加性注意力缩放点积注意力 Bahdanau注意力多头注意力自注意力和位…...

Modbus总线协议智能网关协议转换案例解析:提升系统兼容性

Modbus是一种串行通信协议&#xff0c;是Modicon公司(现在的施耐德电气,Schneider Electic)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(Defacto)&#xff0c;并日现在是工业电子设备之间常用的连接方式 Modbus是一种串行通信协…...

echarts自定义图表--仪表盘

基于仪表盘类型的自定义表盘 上图为3层结构组成 正常一个仪表盘配置要在外圈和内圈之间制造一条缝隙间隔 再创建一个仪表盘配置 背景透明 进度条拉满 进度条颜色和数据的背景相同开始处的线 又一个仪表盘配置 数值固定一个比较小的值 <!DOCTYPE html> <html><h…...

第五章:Execution Flow Framework

Chapter 5: Execution Flow Framework 从消息记忆到执行流程&#xff1a;如何让多个AI“同事”协同完成复杂任务&#xff1f; 在上一章的消息与记忆系统中&#xff0c;我们已经能让AI记住之前的对话内容。但你是否想过&#xff1a;如果用户要求“预订从北京到上海的高铁&#…...

01 C++概述

一、C语言发展史 起源与演进 • 1960s&#xff1a;剑桥大学Martin Richards开发BCPL语言&#xff0c;用于系统软件开发。 • 1970年&#xff1a;贝尔实验室Ken Thompson在BCPL基础上发明B语言。 • 1972年&#xff1a;Dennis Ritchie和Brian Kernighan设计出C语言&#xff0c;兼…...

Kotlin DSL 深度解析:从 Groovy 迁移的困惑与突破

引言 Gradle 作为现代构建工具&#xff0c;支持 Groovy 和 Kotlin 两种 DSL&#xff08;领域特定语言&#xff09;。Kotlin DSL 因其类型安全和更好的 IDE 支持逐渐流行&#xff0c;但它的语法设计却让许多开发者感到困惑&#xff0c;尤其是从 Groovy 迁移时。 本文将从 Kotl…...

2025年二级造价师考点总结

二级造价师考点总结 一、建设工程造价管理 工程造价构成&#xff1a;重点掌握建筑安装工程费&#xff08;人工费、材料费、机械费、企业管理费、利润、规费、税金&#xff09;的组成及计算。 计价依据&#xff1a;熟悉工程量清单计价规范&#xff0c;掌握定额计价与清单计价的…...

Typecho博客使用阿里云cdn和oss:handsome主题进阶版

Typecho使用阿里云cdn和oss 设置前需要保证阿里云cdn和oss已配置好且可以正常使用一、准备工作二、修改 Handsome 主题的静态资源链接方法 1&#xff1a;直接修改主题文件&#xff08;推荐&#xff09;方法 2&#xff1a;通过主题设置自定义&#xff08;方便&#xff09; 三、处…...

知识体系_用户研究_用户体验度量模型

1 用户体验度量常见模型 1.1 满意度(CSAT/PSAT) CSAT(Customer Satisfaction)指客户满意度&#xff0c;PAST(Product Satisfaction)指产品满意度。顾名思义&#xff0c;其用于衡量客户对产品或服务的体验度量指标。在用户完成某个产品或某项服务的体验后&#xff0c;对其进行…...

邮件分类特征维度实验分析

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

Linux服务之Nginx服务部署及基础配置

目录 一.Nginx介绍 1.Nginx功能介绍 2.基础特性 3.Web服务相关的功能 4.I/O模型相关概念 5.nginx模块 6.Nginx文件存放位置 7.Nginx事件驱动模型 二.平滑升级及信号使用 1.Nginx 程序当作命令使用 2.信号类型 3.平滑升级nginx 4.回滚 三.Nginx调优 1.隐藏版本号或…...

Centos小白之在CentOS8.5中安装Rabbitmq 3.10.8

注意事项 安装以及运行等其他操作&#xff0c;要使用root账号进行&#xff0c;否则会遇到很多麻烦的事情。 使用命令行进行远程登录 ssh root192.168.0.167 安装make 执行安装命令 yum -y install make gcc gcc-c kernel-devel m4 ncurses-devel openssl-devel这里有可能会…...

基于单片机的游泳馆智能管理系统设计与实现

标题:基于单片机的游泳馆智能管理系统设计与实现 内容:1.摘要 随着游泳馆规模的不断扩大和管理需求的日益提高&#xff0c;传统的管理方式已难以满足高效、精准的管理要求。本文旨在设计并实现一种基于单片机的游泳馆智能管理系统。采用单片机作为核心控制单元&#xff0c;结合…...

深度相机(一)——深度相机模型及用途介绍

一、深度相机概述 深度相机&#xff0c;又称 3D 相机&#xff0c;是一种能够获取场景中物体深度信息&#xff08;即物体到相机的距离&#xff09;的设备。与传统相机只能拍摄二维平面图像不同&#xff0c;深度相机不仅能记录物体的颜色和纹理&#xff0c;还能通过特定技术手段测…...

【Torch】nn.Conv1d、nn.Conv2d、nn.Conv3d算法详解

1. nn.Conv1d 1.1 输入&#xff08;Input&#xff09;和输出&#xff08;Output&#xff09; 输入张量 形状&#xff1a;(batch_size, in_channels, length) batch_size&#xff1a;一次过网络的样本数in_channels&#xff1a;每个样本的通道数&#xff08;特征维度&#xff0…...

Android WebRTC回声消除

文章目录 安卓可用的回声消除手段各种回声消除技术优缺点WebRTC回声消除WebRTC回声消除回声消除处理流程WebRTC AECM APP 安卓可用的回声消除手段 硬件回声消除 使用 AudioRecord 的 VOICE_COMMUNICATION 模式&#xff1a;通过 AudioRecord 的 VOICE_COMMUNICATION 音频源可以…...

[Linux运维] [Ubuntu/Debian]在Lightsail Ubuntu服务器上安装Python环境的完整指南

在之前的教程中&#xff0c;我们已经讲过如何开通亚马逊Lightsail服务器并安装宝塔面板。今天&#xff0c;我们来进一步补充&#xff1a;如何在Lightsail上的Ubuntu/Debian系统中安装和配置Python开发环境。 本教程不仅适用于Lightsail服务器&#xff0c;也适用于所有使用Ubunt…...

2025医疗领域AI发展五大核心趋势与路线研究

引言 人工智能技术正在全球范围内深刻改变医疗服务的提供方式,推动全球医疗的普惠化、技术合作、产业升级以及公共卫生防控发生巨变[0]。医疗AI的浪潮奔涌向前,从2024年开始,生成式AI的爆发式发展更是将医疗AI推到了新的十字路口[1]。在这一背景下,本报告将深入探讨医疗领…...

【学习笔记】机器学习(Machine Learning) | 第六周|过拟合问题

机器学习&#xff08;Machine Learning&#xff09; 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习&#xff08;Machine Learning&#xff09;简要声明 摘要过拟合与欠拟合问题一、回归问题中的过拟合1. 欠拟合&#xff08;Underfit&#x…...

【MQ篇】RabbitMQ之惰性队列!

目录 引言&#xff1a;当“生产”大于“消费”&#xff0c;队列就“胖”了&#xff01;肥宅快乐队列&#xff1f;&#x1f914;队列界的“躺平”大师&#xff1a;惰性队列&#xff08;Lazy Queues&#xff09;驾到&#xff01;&#x1f634;如何“激活”你的队列的“惰性”属性…...

计算机视觉——通过 OWL-ViT 实现开放词汇对象检测

介绍 传统的对象检测模型大多是封闭词汇类型&#xff0c;只能识别有限的固定类别。增加新的类别需要大量的注释数据。然而&#xff0c;现实世界中的物体类别几乎无穷无尽&#xff0c;这就需要能够检测未知类别的开放式词汇类型。对比学习&#xff08;Contrastive Learning&…...

第二部分:网页的妆容 —— CSS(下)

目录 6 布局基础&#xff1a;Display 与 Position - 元素如何排列和定位6.1 小例子6.2 练习 7 Flexbox 弹性布局&#xff1a;一维布局利器7.1 小例子7.2 练习 8 Grid 网格布局&#xff1a;强大的二维布局系统8.1 小例子8.2 练习 9 响应式设计与媒体查询&#xff1a;适应不同设备…...

vite项目tailwindcss4的使用

1、安装taillandcss 前几天接手了一个项目&#xff0c;看到别人用tailwindcss节省了很多css代码的编写&#xff0c;所以自己也想在公司项目中接入tailwindcss。 官网教程如下&#xff1a; Installing Tailwind CSS with Vite - Tailwind CSS 然而&#xff0c;我在vite中按…...