news 2026/4/16 9:03:48

扩散模型中的注意力机制实现详解:从Self-Attention到Cross-Attention的代码解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
扩散模型中的注意力机制实现详解:从Self-Attention到Cross-Attention的代码解析

扩散模型中的注意力机制都是怎么实现的?

一、Diffusers中的注意力机制实现

diffusers中U-Net的注意力机制实现主要是UNet2DConditionModel这个类,通过在特定的下采样、中间和上采样阶段加入CrossAttnDownBlock2D类的模块,从而实现注意力层的加入。

这些模块内部的核心单元是Transformer2DModel,它负责把输入的2D特征图转换成序列形式。而在最底层的BasicTransformerBlock中,通常包含了两层注意力:

  • • 第一层是处理图像内部关系的self-attention(代码中通常叫attn1);
  • • 第二层则是融合文本条件的cross-attention(代码中通常叫attn2),这两者在代码层面都由Attention类定义,并将具体的计算逻辑委托给AttnProcessor来执行。

二、Self-Attention的实现

关于self-attention的实现,其核心目的是建模图像不同部分之间的correlation,从而捕捉全局结构上的关联。

diffusers的官方代码中,self-attention的实现如下:

query = attn.to_q(hidden_states)
encoder_hidden_states = hidden_states
key = attn.to_k(encoder_hidden_states)
value = attn.to_v(encoder_hidden_states)

query = attn.head_to_batch_dim(query)
key = attn.head_to_batch_dim(key)
value = attn.head_to_batch_dim(value)

attention_scores = torch.baddbmm(
torch.empty(…), query, key.transpose(-1, -2), alpha=attn.scale
)
attention_probs = attention_scores.softmax(dim=-1)

hidden_states = torch.bmm(attention_probs, value)

由于是自注意力,query、key和value都是输入图像特征`hidden_states`的投影。大致的逻辑是:首先通过`to_q`、`to_k`、`to_v`线性层将`hidden_states`映射到特征空间,然后通过`head_to_batch_dim`操作将head维度折叠进batch维度,剩下的就是标准attention中的计算了——attention weights、softmax归一化、加权到value上。 从数学角度看,上面代码的过程如下: 1. 1. 形状原本都是,经过`head_to_batch_dim`的操作后变为的张量形式; 2. 2. 计算注意力分数为:,得到的是一个的矩阵; 3. 3. 通过将attention weights整合到value上; 4. 4. 经由`batch_to_head_dim`还原维度,并通过输出投影层,结束self-attention的计算过程。 三、Cross-Attention的实现 ==================== 在代码实现上,cross-attention复用了与self-attention完全相同的`AttnProcessor`逻辑,唯一的区别在于key和value的来源。 在`attn2`的前向传播中,`encoder_hidden_states`不再是None,而是传入了由CLIP编码好的text embedding(记形状为)。 ```plaintext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # From image feature query = attn.to_q(hidden_states) # From text encoder key = attn.to_k(encoder_hidden_states) value = attn.to_v(encoder_hidden_states) query = attn.head_to_batch_dim(query) key = attn.head_to_batch_dim(key) value = attn.head_to_batch_dim(value) attention_scores = torch.baddbmm(..., query, key.transpose(-1, -2), alpha=attn.scale) attention_probs = attention_scores.softmax(dim=-1) hidden_states = torch.bmm(attention_probs, value)

这里的交互过程产生了一个的注意力矩阵(),它表示了图像特征中每一个位置与text prompt中每一个token的关联程度。

最后唠两句

为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选

很简单,这些岗位缺人且高薪

智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200% ,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。

那0基础普通人如何学习大模型 ?

深耕科技一线十二载,亲历技术浪潮变迁。我见证那些率先拥抱AI的同行,如何建立起效率与薪资的代际优势。如今,我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理,分享于此,为你扫清学习困惑,共赴AI时代新程。

我整理出这套 AI 大模型突围资料包【允许白嫖】:

  • ✅从入门到精通的全套视频教程

  • ✅AI大模型学习路线图(0基础到项目实战仅需90天)

  • ✅大模型书籍与技术文档PDF

  • ✅各大厂大模型面试题目详解

  • ✅640套AI大模型报告合集

  • ✅大模型入门实战训练

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

①从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点

② AI大模型学习路线图(0基础到项目实战仅需90天)

全过程AI大模型学习路线

③学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的

④各大厂大模型面试题目详解

⑤640套AI大模型报告合集

⑥大模型入门实战训练

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 15:32:24

智能工厂订单查询系统

智能工厂订单查询系统设计 第一章 绪论 传统工厂订单查询依赖人工台账、线下沟通或单一终端查询,存在数据更新滞后、查询效率低、权限管理混乱、信息追溯难等问题,难以适配智能制造背景下多角色、多场景的订单管理需求。智能工厂订单查询系统基于工业互联…

作者头像 李华
网站建设 2026/4/15 10:38:28

【四个场景测试】源文件编码UTF-8 BOM

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、关键前置知识1. UTF-8 BOM 定义2. MSVC 源文件解码优先级(官方既定规则)3. 固定测试环境 二、逐场景解析(对应你的4组测试&a…

作者头像 李华
网站建设 2026/4/14 18:37:56

船员适任证书材料处理全攻略:照片规格、材料压缩与上传规范

船员适任证书是船员上船任职、通过海事考核、合法履职的核心资格证件,在初次申领、到期换证、职务晋升、证书补发时,证件照合规、材料格式标准、文件大小精准是审核通过的关键。很多船员因照片尺寸不符、PDF过大、排版错乱、印章模糊被系统驳回&#xff…

作者头像 李华
网站建设 2026/4/2 8:16:40

HarmonyOS 游戏中,被“允许”的异常

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名) 大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚…

作者头像 李华
网站建设 2026/4/7 14:41:46

西门子PLC1200博途V16制药厂生物发酵系统程序画面例程分享

西门子PLC1200博途V16程序画面例程,具体项目工艺为制药厂生物发酵系统,程序内有报警,模拟量标定处理,温度PID,称重仪表USS通讯和基本的各种数字量控制,硬件组成包含称重仪表通讯及和ET200SP模块通讯组态。 …

作者头像 李华
网站建设 2026/4/5 7:48:09

纺织车间温湿度数据采集远程监控系统方案

对精细化的纺织工业来说,确保适宜的温湿度是保证成纱质量的关键。保持适宜的温湿度条件,可以有效提高纤维刚性和弹性,减少纤维与机器部件之间的摩擦及堵塞现象。如果车间相对湿度过低,不仅容易产生静电,导致棉网破损、…

作者头像 李华