尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【深度学习】MultiheadAttention
importtorchimporttorch.nnasnnimportmathclassMultiheadAttention(nn.Module):# 注意: Module 首字母大写def__init__(self,d_model,n_head): 多头注意力机制 参数: d_model: 输入特征维度 n_head: 注意力头数量 super(MultiheadAttention,self).__init__()self.d_modeld_model self.n_headn_head self.n_dimd_model//n_head# 验证维度是否可整除assertd_model%n_head0,d_model must be divisible by n_head# 线性变换层self.q_weightnn.Linear(d_model,d_model)self.k_weightnn.Linear(d_model,d_model)self.v_weightnn.Linear(d_model,d_model)self.out_projnn.Linear(d_model,d_model)defforward(self,x): 前向传播 参数: x: 输入张量 [batch_size, seq_len, d_model] 返回: 输出张量 [batch_size, seq_len, d_model] bs,seq_len,dimx.size()# 线性变换qself.q_weight(x)# [bs, seq_len, d_model]kself.k_weight(x)# [bs, seq_len, d_model]vself.v_weight(x)# [bs, seq_len, d_model]# 分割多头 - 更稳健的实现# 首先view到 [bs, seq_len, n_head, n_dim]qq.view(bs,seq_len,self.n_head,self.n_dim)kk.view(bs,seq_len,self.n_head,self.n_dim)vv.view(bs,seq_len,self.n_head,self.n_dim)# 转置为 [bs, n_head, seq_len, n_dim]qq.transpose(1,2)kk.transpose(1,2)vv.transpose(1,2)# 计算注意力分数# [bs, n_head, seq_len, n_dim] [bs, n_head, n_dim, seq_len]# - [bs, n_head, seq_len, seq_len]attn_scorestorch.matmul(q,k.transpose(-2,-1))/math.sqrt(self.n_dim)# 计算注意力权重attn_weightstorch.softmax(attn_scores,dim-1)# 应用注意力权重到值向量# [bs, n_head, seq_len, seq_len] [bs, n_head, seq_len, n_dim]# - [bs, n_head, seq_len, n_dim]attn_outputtorch.matmul(attn_weights,v)# 合并多头# 先转置为 [bs, seq_len, n_head, n_dim]attn_outputattn_output.transpose(1,2)# 合并最后两个维度 [bs, seq_len, n_head * n_dim] [bs, seq_len, d_model]attn_outputattn_output.contiguous().view(bs,seq_len,self.d_model)# 输出投影outputself.out_proj(attn_output)returnoutput# 测试代码if__name____main__:# 参数设置d_model64n_head8batch_size2seq_len10# 创建多头注意力层mhaMultiheadAttention(d_model,n_head)# 创建随机输入xtorch.randn(batch_size,seq_len,d_model)# 测试前向传播outputmha(x)# 验证输出形状expected_shape(batch_size,seq_len,d_model)actual_shapeoutput.shapeprint(f输入形状:{x.shape})print(f输出形状:{actual_shape})# 验证是否保留原始维度assertactual_shapeexpected_shape,\f形状错误! 期望{expected_shape}, 实际{actual_shape}print(测试通过输出与输入形状一致保留原始维度。)
RELATED

相关推荐

swin_base_patch4_window7_224.ms_in22k 特征提取指南:features_only 模式 4 级特征图(56x56 到 7x7)详解

swin_base_patch4_window7_224.ms_in22k 特征提取指南:features_only 模式 4 级特征图(56x56 到 7x7)详解

计算机视觉基础模型 【免费下载链接】swin_base_patch4_window7_224.ms_in22k 项目地址: https://ai.gitcode.com/hf_mirrors/timm/swin_base_patch4_window7_224.ms_in22k 点击查看 免费下载 🔍 本文带你快速上手 swin_base_patch4_window7_224.ms_in2…

📅 2026/10/22 1:26:32
把550B大模型扩展到多节点:NVIDIA-Nemotron-Labs-Teacher-Chat Ray分布式部署完整教程

把550B大模型扩展到多节点:NVIDIA-Nemotron-Labs-Teacher-Chat Ray分布式部署完整教程

【免费下载链接】NVIDIA-Nemotron-Labs-Teacher-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/NVIDIA-Nemotron-Labs-Teacher-Chat 点击查看 免费下载 NVIDIA-Nemotron-Labs-Teacher-Chat 是 NVIDIA 开源的 550B 参数对话大模型(激活参数 …

📅 2026/10/22 1:26:32
时间与数字不再难:BEV Decision Mix numeric_temporal配置的43种计算题构建原理

时间与数字不再难:BEV Decision Mix numeric_temporal配置的43种计算题构建原理

数据集人工智能 【免费下载链接】bev-decision 项目地址: https://ai.gitcode.com/hf_mirrors/avbiswas/bev-decision 点击查看 免费下载 BEV Decision Mix(bev-decision)是一个面向有界决策模型训练的英文决策数据集,numeric_te…

📅 2026/10/22 1:26:32
MORE NEWS

更多资讯

📰

脉冲神经网络:SNN的生物学原理与脉冲信息处理

这一章我们将从生物学的角度去剖析SNN的原理以及他如何处理脉冲信息。为什么神经元需要膜电位?为什么它不是直接把输入转成输出,而是先积累,再达到阈值,然后发放 Spike?这些设计并非凭空出现,而是受到真实生…

📰

SCI返修审稿人要求提供AIGC说明与检测单?2027国际期刊返修材料核验指南

SCI返修审稿人要求提供AIGC说明与检测单?2027国际期刊返修材料核验指南【返修核验要点】如编辑或审稿人询问生成式工具使用情况,先核对本刊当期指南和具体来信要求,逐项说明实际使用范围与人工核验过程。检测报告不能单独证明论文来源&#x…

📰

【Valhalla L3开源评测|GitHub热榜Top10】CCBaga|Rust+Tauri桌面工具静态源码审计

Valhalla L3静态源码审计|CCBaga桌面客户端项目工程尽调报告【Valhalla L3开源评测|GitHub热榜Top10】CCBaga|RustTauri桌面工具静态源码审计一、高管一页纸综述(产品/技术负责人 30秒决策结论)1.1 项目基础档案1.2 审…

📰

一边是搜索 API 开放,一边是被令从联邦系统移除:DeepSeek 团队该怎样读这份 DHS 采购禁令

一边是搜索 API 开放,一边是被令从联邦系统移除:DeepSeek 团队该怎样读这份 DHS 采购禁令 一条时间轴上并行的两件事 把两条新闻放在同一张时间轴上,画面会很有意思:一边是 DeepSeek 在国内开发者社区开放搜索 API,讨…

📰

AI Agent 学习路线|从零搭建智能体,小白 程序员收藏这份大模型实战教程

本文分享一套完整 AI Agent 学习路线,适合小白与程序员。从 Python 基础、大模型原理、提示词工程入手,依次学习 Agent 核心要素、LangChain/LangGraph 框架、RAG 向量检索,再到项目优化、工程部署。按路线学习 2~3 个月,可独立开…

📰

dm-mod.ko与dax.ko

apk add kmod-dmapk add kmod-daxapk info -L kmod-dmapk info -L kmod-daxxz -d 123.xz 解压文件,会删除原文件123.xztar -xvf 123.tar 解包文件,会覆盖同名文件mkdir -p 123/456/789 创建多层目录tar-cvf 123.tar 123 打包文件或目录,得到1…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬