torch.nn.Multiheadattention介绍

news2024/12/23 9:42:39

初始化参数:

class
torch.nn.MultiheadAttention(embed_dim, num_heads, dropout=0.0, bias=True, 
add_bias_kv=False, add_zero_attn=False, kdim=None, vdim=None, batch_first=False, 
device=None, dtype=None)

        允许模型共同关注来自不同表示子空间的信息。

多头注意力被定义为:

 如果满足以下所有条件,forward() 将使用 FlashAttention 中描述的优化实现:

         (1)计算自注意力(即查询、键和值是相同的张量。将来会放宽此限制。)

        (2)使用 batch_first==True 对输入进行批处理 (3维)

        (3)autograd 被禁用(使用 torch.inference_mode 或 torch.no_grad)或没有张量参数 requires_grad

        (4)训练被禁用(使用 .eval())

        (5)add_bias_kv 为假

        (6)add_zero_attn 为假

        (7)batch_first 为 True,输入被批处理

        (8)kdim 和 vdim 等于 embed_dim

        (9)如果传递了 NestedTensor,则既不传递 key_padding_mask 也不传递 attn_mask

        (10)autograd被禁用

参数介绍:

        embed_dim – 模型的总维度;

        num_heads——并行注意力头的数量。请注意,embed_dim 将拆分为 num_heads(即每个头都有维度 embed_dim // num_heads);

        dropout——attn_output_weights 上的辍学概率。默认值:0.0(no dropout);

        bias – 如果指定,将偏置添加到输入/输出投影层。默认值:真;

        add_bias_kv – 如果指定,则在 dim=0 处向键和值序列添加偏差。默认值:假;

        add_zero_attn – 如果指定,则将一批新的零添加到 dim=1 处的键和值序列。默认值:假;

        kdim – 键的特征总数。默认值:无(使用 kdim=embed_dim)。

        vdim – 值的特征总数。默认值:无(使用 vdim=embed_dim)。

        batch_first – 如果为 True,则输入和输出张量作为(batch、seq、feature)提供。默认值:False(序列、批次、特征)。

使用案例:

multihead_attn = nn.MultiheadAttention(embed_dim, num_heads)
attn_output, attn_output_weights = multihead_attn(query, key, value)

forward函数

forward(query, key, value, key_padding_mask=None, need_weights=True, 
attn_mask=None, average_attn_weights=True, is_causal=False)

参数解释:

        query (Tensor) – 查询嵌入形状(L,Eq)用于非批处理输入,(L,N,Eq)用于batchfirst= False 或(N,L,Eq)用于batchfirst = True,其中 L是目标序列长度,N 是批处理大小,Eq 是嵌入查询的嵌入维度 embed _ dim。将查询与键-值对进行比较以生成输出。

        key (Tensor)- 非批量输入的形状(S,Ek)的key嵌入,(S,N,Ek)的键嵌入,batchfirst = False 或(N,S,Ek)的键嵌入,batchfirst = True,其中 S 是源序列长度,N 是批量大小,Ek 是key嵌入维度 kdim。

        value (Tensor) – 非批处理输入的形状 (S,Ev) 的value嵌入,(S,N,Ev) 当 batch_first=False 或 (N,S,Ev)当 batch_first=True 时,其中 S 是源序列长度,N是批量大小,Ev 是value嵌入维度 vdim。

        key_padding_mask (Optional[Tensor]) – 如果指定,形状为 (N,S) 的掩码指示要忽略key中的哪些元素以引起注意(即视为“填充”)。对于未批量查询,形状应为 (S)。支持二进制和浮点掩码。对于二进制掩码,True 值表示为了引起注意,相应的key值将被忽略。对于float掩码,它会直接添加到相应的key值。

        need_weights (bool) – 如果指定,除了 attn_outputs 之外还返回 attn_output_weights。默认值:真。

        is_causal (bool) – 如果指定,则应用因果掩码作为注意掩码。与提供 attn_mask 互斥。默认值:假。

        average_attn_weights (bool) – 如果为真,则表示返回的 attn_weights 应该在头部之间进行平均。否则,每个头单独提供 attn_weights。请注意,此标志仅在 need_weights=True 时有效。默认值:True(即头部的平均)

输出:

        attn _ output-当输入未批处理时形状为(L,E),(L,N,E)(L,N,E)当batchfirst = False 或者(N,L,E)当batchfirst= True 时,形状(L,E)(N,L,E)的注意输出,其中 L是目标序列长度,N是批处理大小,E是嵌入维度 embed _ dim。

        attn_output_weights - 仅在 need_weights=True 时返回。如果 average_attn_weights=True,当输入未分批时返回形状为 (L,S),有分批返回(N,L,S)的头部的平均注意力权重,其中 N 是批量大小, L 是目标序列长度,SS 是源序列长度。如果 average_attn_weights=False,当输入未分批或 (N,num_heads,L,S)(N,num_heads,L,S) 时,返回形状为 (num_heads,L,S)(N,num_heads,L,S) 的每个头部的注意力权重。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#连接数据库失败,ORA-28040: No matching authentication protocol

C#连接数据库失败 1.原先使用的是oracle11,后来升级数据库到oracle19c,启动程序,数据库连接时报错"ORA-28040: No matching authentication protocol" 2.原因分析:最近服务器数据库版本升级到了19c,网上查了…

【技巧】如何以“只读方式”打开PPT文稿?附两个方法

以“只读方式”打开PPT文稿,可以防止意外修改文稿。今天小编就来介绍一下以“只读方式”打开PPT的两种方法。 方法一:无密码的“只读”模式 1、打开PowerPoint程序,点击菜单中的【文件】选项,再依次点击【打开】-【浏览】。接着在…

FL Studio水果萝卜编曲中文版软件V21版本详细功能介绍

FL Studio十分出色的数字音乐工作软件,其功能大致和Cubase相仿,FL Studio拥有自带的音频插件,并且随着软件的不断更新,使得FL studio不仅仅能够制作电子音乐,同时也能够承担古典、流行等风格的音乐。同时,F…

MySQL:创建数据库,数据表,主键和外键

目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表: 主键约束: 单字段主键: 多字段联合主键: 外键约束&…

《编码——隐藏在计算机软硬件背后的语言》精炼——第11章(门)

“The only source of knowledge is experience.” - Albert Einstein 引言 编码是一种处理并表达信息的方式,它包括摩斯电码、盲文、二进制语言等等,当然作为计算机类的经典书籍,这本书简述了计算机中以二进制数为基础的编码方式&#xff0…

5自由度并联机械臂实现搬运功能

1. 功能说明 本文示例将实现R306样机5自由度并联机械臂搬运牛奶到指定地点的功能。该机械臂由1个5自由度并联机械臂和1个单轴丝杠平台构成,机械臂通过并联的方式同时控制同一个端点的运动。其驱动系统采用大扭矩舵机和小扭矩舵机、执行末端为夹持机构。 2. 并联机械…

SEO优化中的外链与反链是什么意思?它们之间有什么区别?

在SEO优化中,外链和反链是两个非常重要的概念。虽然它们听起来很相似,但实际上却有着很大的区别。那么,什么是外链和反链?它们之间有什么区别呢?本文将为您详细介绍。 一、什么是外链 外链,也被称为入站链…

C++---区间DP---环形石子合并(每日一道算法2023.4.24)

注意事项: 本题是"区间dp—石子合并"的扩展题,dp思路完全一样,就不多详细讲了,可以去那篇文章看,这题主要讲一下如何处理环形。 题目: 将 n 堆石子绕圆形操场排放,现要将石子有序地合…

ES的索引结构与算法解析

作者:京东物流 李洪吉 提到ES,大多数爱好者想到的都是搜索引擎,但是明确一点,ES不等同于搜索引擎。不管是谷歌、百度、必应、搜狗为代表的自然语言处理(NLP)、爬虫、网页处理、大数据处理的全文搜索引擎,还是有明确搜…

DAY03_循环语句

1:for循环结构 来,继续啊,下面我们来学习循环结构语句,循环结构有三种语句,分别是: for循环 while循环 do…while循环 这三种循环可以做相同的事情,当然它们也有小的区别,至于它…

【LeetCode】322. 零钱兑换

322. 零钱兑换(中等) 思路 由于题目提到 「每种硬币的数量是无限的」,所以这道题本质上完全背包问题,我直接使用了空间压缩的写法。dp[j] 表示当前区间在 [0, i]的硬币可以表示成 j 的最小数量。注意,这里把 dp数组初始…

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了,下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装,选择安装目录,注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

4.23学习周报

文章目录 前言文献阅读摘要简介方法结果结论 时间序列预测学习总结 前言 本周阅读文献《A novel hybrid model for water quality prediction based on synchrosqueezed wavelet transform technique and improved long short-term memory》,文献主要提出一种新型混…

动力节点Springsecurity笔记06-13基于数据库的方法授权

6 密码处理 6.1 为什么要加密? csdn 密码泄露事件 泄露事件经过:https://www.williamlong.info/archives/2933.html 泄露数据分析:https://blog.csdn.net/crazyhacking/article/details/10443849 6.2加密方案 密码加密一般使用散列函数&a…

react-9 函数式写法rsc,配合HOOKS基础钩子函数

函数组件和类组件区别: 1.函数组件中没有this 2.函数组件无需继承 3.函数组件默认没有状态,想要使用组件状态必须通过 HOOK 函数引入 4.函数组件默认没有生命周期函数 5.函数组件的渲染,只需要一次函数调用即可 useState :用…

【react全家桶学习】react中JSX语法规则

目录 JSX的定义 XML的含义 JSX的语法规则 (1)定义类名,用className而不是class (2)如何使用内联样式设置样式 (3)虚拟dom必须只有一个根标签 (4)在react组件中使用变…

谷歌将发布全新搜索引擎,你期待吗?

Google一身自带AI属性的新搜索最首要的目标并非急于取代传统搜索引擎,或者说彻底打败ChatGPT,而是能够用全新的产品说服用户,变得与竞争对手同样“强大、能力出众以及顺应AI潮流”。 对于Google而言,搜索就是命脉。Google每年的收…

Java基础——多线程创建

(1)什么是线程? 线程(thread)是一个程序内部的一条执行路径。程序中只有一条执行路径,那么这个程序就是单线程的程序。 (2)多线程是什么? 多线程是指从软硬件上实现多执行流程的技术。 &…

Python入门教程+项目实战-10.5节: 程序实战-冒泡排序算法

目录 10.5.1 排序算法简介 10.5.2 冒泡排序算法 10.5.3 系统学习python 10.5.1 排序算法简介 所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数据结构与算…

jenkins自动化部署配置

文章目录 1. jenkins 插件安装2. 配置2.1 全局工具配置2.2 全局配置2.2.1 gitee 配置 3. 创建任务添加gitee ssh jenkins 开机自启动 1. jenkins 插件安装 ant Build Failure AnalyzerBuild Monitor ViewBuild Timeout dockerEmail Extension Plugin giteegithubgradle javama…