多头自注意力中的多头作用及相关思考

文章目录

  • 1. num_heads
  • 2. pytorch源码演算

1. num_heads

将矩阵的最后一维度进行按照num_heads的方式进行切割矩阵,具体表示如下:
在这里插入图片描述
在这里插入图片描述

2. pytorch源码演算

  • pytorch 代码
import torch
import torch.nn as nn
import torch.nn.functional as Ftorch.set_printoptions(precision=3, sci_mode=False)if __name__ == "__main__":run_code = 0batch_size = 2seq_len = 4model_dim = 6num_heads = 3mat_total = batch_size * seq_len * model_dimmat1 = torch.arange(mat_total).reshape((batch_size, seq_len, model_dim))print(f"mat1=\n{mat1}")head_dim = model_dim // num_headsmat2 = mat1.reshape((batch_size, seq_len, num_heads, head_dim))print(f"mat2=\n{mat2}")mat3 = mat2.transpose(1, 2)print(f"mat3=\n{mat3}")mat4 = mat3.reshape((batch_size*num_heads,seq_len,head_dim))print(f"mat1.shape=\n{mat1.shape}")print(f"mat1=\n{mat1}")print(f"mat4.shape=\n{mat4.shape}")print(f"mat4=\n{mat4}")
  • 结果:
mat1=
tensor([[[ 0,  1,  2,  3,  4,  5],[ 6,  7,  8,  9, 10, 11],[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]],[[24, 25, 26, 27, 28, 29],[30, 31, 32, 33, 34, 35],[36, 37, 38, 39, 40, 41],[42, 43, 44, 45, 46, 47]]])
mat2=
tensor([[[[ 0,  1],[ 2,  3],[ 4,  5]],[[ 6,  7],[ 8,  9],[10, 11]],[[12, 13],[14, 15],[16, 17]],[[18, 19],[20, 21],[22, 23]]],[[[24, 25],[26, 27],[28, 29]],[[30, 31],[32, 33],[34, 35]],[[36, 37],[38, 39],[40, 41]],[[42, 43],[44, 45],[46, 47]]]])
mat3=
tensor([[[[ 0,  1],[ 6,  7],[12, 13],[18, 19]],[[ 2,  3],[ 8,  9],[14, 15],[20, 21]],[[ 4,  5],[10, 11],[16, 17],[22, 23]]],[[[24, 25],[30, 31],[36, 37],[42, 43]],[[26, 27],[32, 33],[38, 39],[44, 45]],[[28, 29],[34, 35],[40, 41],[46, 47]]]])
mat1.shape=
torch.Size([2, 4, 6])
mat1=
tensor([[[ 0,  1,  2,  3,  4,  5],[ 6,  7,  8,  9, 10, 11],[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]],[[24, 25, 26, 27, 28, 29],[30, 31, 32, 33, 34, 35],[36, 37, 38, 39, 40, 41],[42, 43, 44, 45, 46, 47]]])
mat4.shape=
torch.Size([6, 4, 2])
mat4=
tensor([[[ 0,  1],[ 6,  7],[12, 13],[18, 19]],[[ 2,  3],[ 8,  9],[14, 15],[20, 21]],[[ 4,  5],[10, 11],[16, 17],[22, 23]],[[24, 25],[30, 31],[36, 37],[42, 43]],[[26, 27],[32, 33],[38, 39],[44, 45]],[[28, 29],[34, 35],[40, 41],[46, 47]]])
  • 思考: 在矩阵y=Ax表示的时候,如果我们无法用Ax整体表示y的时候,我们可以通过将矩阵A的列向量进行拆分后得到A1,A2,A3,这样y=(A1,A2,A3)x表示更合理。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据仓库和商务智能:洞察数据,驱动决策

在数据管理的众多领域中,数据仓库和商务智能(BI)是将数据转化为洞察力、支持决策制定的关键环节。它们通过整合、存储和分析数据,帮助组织更好地理解业务运营,预测市场趋势,从而制定出更明智的战略。今天&a…

C++ ——从C到C++

1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…

半导体制造工艺讲解

目录 一、半导体制造工艺的概述 二、单晶硅片的制造 1.单晶硅的制造 2.晶棒的切割、研磨 3.晶棒的切片、倒角和打磨 4.晶圆的检测和清洗 三、晶圆制造 1.氧化与涂胶 2.光刻与显影 3.刻蚀与脱胶 4.掺杂与退火 5.薄膜沉积、金属化和晶圆减薄 6.MOSFET在晶圆表面的形…

Avnet RFSoC基于maltab得5G 毫米波 开发工具箱

使用 MATLAB 连接到 AMD Zynq™ RFSoC 评估板。使用 RF 附加卡执行 OTA 测试。使用 HDL Coder 部署算法 版本要求: 大于 2023b 需要以下支持包之一: 适用于 Xilinx 基于 Zynq 的无线电(R2023b 及更早版本)的通信工具箱支持包适…

第三节 docker基础之---Commit+Dockerfile制作

docker目前镜像的制作两种方法: 1,基于docker Commit制作镜像 2,基于dockerfile制作镜像,Dockerfile 为主流的制作方式 如果不制作镜像删除容器之后则里面配置的文件也随之删除: [rootdocker ~]# docker images 查看…

推荐一个免费的、开源的大数据工程学习教程

在当今信息爆炸的时代,每一个企业都会产生大量的数据,而大数据也已经成为很多企业发展的重要驱动力,然而如何有效得处理和分析这些海量的数据,却是一个非常有挑战的技术。 今天推荐一个免费的数据工程教程,带你系统化…

【文档智能多模态】英伟达ECLAIR-端到端的文档布局提取,并集成阅读顺序方法

笔者在前期一个系列分享了各种文档智能相关的技术方法,可以参考《文档智能系列栏目》,涵盖各种常见方法。 下面直接看看这个端到端的文档智能结构化方法,供参考。 方法 一、架构 ECLAIR 采用了一个较大的视觉编码器(657M 参数…

解锁Netty:Channel更替与HashMap管理的奇妙联动

个人CSDN博客主页: java之路-CSDN博客 ( 期待您的关注 ) 目录 Netty 的 Channel 机制探秘 HashMap 在 Netty 中的角色 创建新 Channel 时的操作步骤 新 Channel 的创建流程 确定老 Channel 的标识 移除老 Channel 的具体方法 从 HashMap 中移除 关闭和回收老…

小白零基础如何搭建CNN

1.卷积层 在PyTorch中针对卷积操作的对象和使用的场景不同,如有1维卷积、2维卷积、 3维卷积与转置卷积(可以简单理解为卷积操作的逆操作),但它们的使用方法比较相似,都可以从torch.nn模块中调用,需要调用的…

12.翻转、对称二叉树,二叉树的深度

反转二叉树 递归写法 很简单 class Solution { public:TreeNode* invertTree(TreeNode* root) {if(rootnullptr)return root;TreeNode* tmp;tmproot->left;root->leftroot->right;root->righttmp;invertTree(root->left);invertTree(root->right);return …

算法之 博弈问题

文章目录 巴什博弈292.Nim 游戏 尼姆博弈斐波那契博弈其他博弈1025.除数博弈 博弈问题,就是双方之间的PK,关注的重点是 谁先?以及A,B各自赢的条件 一般有数学问题,动态规划,搜索进行求解 巴什博弈 下面的这题Nim 游戏,…

Linux 安装 Ollama

1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…

DDR原理详解

DDR原理详解 存储器主要分为只读存储器 ROM 和随机存取存储器 RAM两大类。 ROM:只读存储器 ROM 所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,ROM所存数据稳定,断电后所存数据也不会改变。 RAM:随机…

推荐一款 免费的SSL,自动续期

支持自动续期 、泛域名 、可视化所有证书时效性 、可配置CDN 的一款工具。免费5个泛域名和1个自动更新。 链接 支持:nginx、通配符证书、七牛云、腾讯云、阿里云、CDN、OSS、LB(负载均衡) 执行自动部署脚本 提示系统过缺少crontab 安装cro…

手写一个C++ Android Binder服务及源码分析

手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…

将 AMD Zynq™ RFSoC 扩展到毫米波领域

目录 将 AMD Zynq™ RFSoC 扩展到毫米波领域Avnet XRF RFSoC 系统级模块适用于 MATLAB 的 Avnet RFSoC Explorer 工具箱5G mmWave PAAM 开发平台突破性的宽带毫米波波束成形特征:OTBF103 Mathworks Simulink 模型优化毫米波应用中的射频信号路径 用于宽带毫米波上/下…

征程 6 相比征程 5 对算子支持扩展的具体案例讲解

引言 征程 6 相比于征程 5,在整体架构上得到了升级,相对应的,算法工具链的算子支持也得到了扩充,无论是算子支持的数量,还是 BPU 约束条件,征程 6 都有明显的加强,这就使得过去在征程 5 上无法…

蓝桥杯C语言组:博弈问题

概述 在编程的世界里,博弈问题就像是一场智力的“斗地主”,双方(或者多方)使出浑身解数,只为赢得最后的胜利。而蓝桥杯C语言比赛中的博弈问题,更是让无数参赛者又爱又恨的存在。它们就像是隐藏在代码森林中…

BS架构(笔记整理)

楔子.基本概念 1.在网络架构中: 服务器通常是集中式计算资源,负责处理和存储数据;客户机是请求这些服务的终端设备,可能是个人电脑或移动设备;浏览器则是客户机上用来与服务器交互的工具,负责展示网页内容…

【动态规划篇】:动态规划解决路径难题--思路,技巧与实例

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:动态规划篇–CSDN博客 文章目录 一.动态规划中的路径问题1.核心思路2.注意事项 二.例题讲解…