多头自注意力中的多头作用及相关思考
文章目录
- 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表示更合理。
相关文章:
多头自注意力中的多头作用及相关思考
文章目录 1. num_heads2. pytorch源码演算 1. num_heads 将矩阵的最后一维度进行按照num_heads的方式进行切割矩阵,具体表示如下: 2. pytorch源码演算 pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set…...
常用的python库-安装与使用
常用的python库函数 yield关键字openslide库openslide库的安装-linuxopenslide的使用openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image…...
对接DeepSeek
其实,整个对接过程很简单,就四步,获取key,找到接口文档,接口测试,代码对接。 获取 KEY https://platform.deepseek.com/transactions 直接付款就是了(现在官网暂停充值2025年2月7日࿰…...
DevOps工具链概述
1. DevOps工具链概述 1.1 DevOps工具链的定义 DevOps工具链是支持DevOps实践的一系列工具的集合,这些工具覆盖了软件开发的整个生命周期,包括需求管理、开发、测试、部署和运维等各个环节。它旨在通过工具的集成和自动化,打破开发与运维之间…...
ChatGPT提问技巧:行业热门应用提示词案例-文案写作
ChatGPT 作为强大的 AI 语言模型,已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案,关键在于如何与它“沟通”,也就是如何设计提示词(Prompt)。以下是一些实用的提示词案例,帮助你解锁 ChatG…...
分享如何通过Mq、Redis、XxlJob实现算法任务的异步解耦调度
一、背景 1.1 产品简介 基于大模型塔斯,整合传统的多项能力(NLP、OCR、CV等),构建以场景为中心的新型智能文档平台。通过文档审阅,实现结构化、半结构化和非结构化文档的信息获取、处理及审核,同时基于大…...
力扣-栈与队列-239 滑动窗口的最大值
双指针思路 每移动一次,可以比较上一次窗口的最大值和被移除的值,如果被移除的值小于最大值,则说明最大值仍在新的区间,但是最后超时了 双指针超时代码 class Solution { public:vector<int> maxSlidingWindow(vector<…...
在 MySQL 中,通过存储过程结合条件判断来实现添加表字段时,如果字段已存在则不再重复添加
-- 创建存储过程 DELIMITER $$ CREATE PROCEDURE add_column(IN db_name VARCHAR(255),IN table_name VARCHAR(255),IN column_name VARCHAR(255),IN column_definition VARCHAR(255),IN column_comment VARCHAR(255) ) BEGINDECLARE column_exists INT;-- 检查字段是否存在SEL…...
8.flask+websocket
http是短连接,无状态的。 websocket是长连接,有状态的。 flask中使用websocket from flask import Flask, request import asyncio import json import time import websockets from threading import Thread from urllib.parse import urlparse, pars…...
【大模型实战】使用Ollama+Chatbox实现本地Deepseek R1模型搭建
下载安装Ollama Ollama官方链接:https://ollama.com/,打开链接后就可以看到大大的下载按钮,如下图: 我选择用Win的安装。将Ollama的安装包下载到本地,如果下载慢可以复制链接到迅雷里面,提高下载速度,如下图: 双击之后,就可以开始安装了,如下图: 默认安装到C盘,…...
VMware 虚拟机 ubuntu 20.04 扩容工作硬盘
一、关闭虚拟机 关闭虚拟机参考下图,在vmware 调整磁盘容量 二、借助工具fdisk testubuntu ~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 388M 3.1M 385M 1% /run /dev/sda5 …...
ZooKeeper 和 Dubbo 的关系:技术体系与实际应用
引言 在现代微服务架构中,服务治理和协调是至关重要的环节。ZooKeeper 和 Dubbo 是两个在分布式系统中常用的技术工具,它们之间有着紧密的联系。本文将详细探讨 ZooKeeper 和 Dubbo 的关系,从基础概念、技术架构、具体实现到实际应用场景&am…...
【LeetCode 热题100】74:搜索二维矩阵(二分、线性两种方式 详细解析)(Go 语言实现)
🚀 力扣热题 74:搜索二维矩阵(详细解析) 📌 题目描述 力扣 74. 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵 matrix : 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的…...
《Peephole LSTM:窥视孔连接如何开启性能提升之门》
在深度学习的领域中,长短期记忆网络(LSTM)以其出色的序列数据处理能力而备受瞩目。而Peephole LSTM作为LSTM的一种重要变体,通过引入窥视孔连接,进一步提升了模型的性能。那么,窥视孔连接究竟是如何发挥作用…...
HTML之JavaScript变量和数据类型
HTML之JavaScript变量和数据类型 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…...
(少儿编程)关于讲解C++函数(认识,了解)的思考与总结
前言: 在少儿编程中,讲解函数的概念时,需要将复杂的概念简化,并通过生动有趣的例子和互动方式来帮助孩子理解。以下是一个适合少儿的函数讲解思路和示例: 用生活中的例子引入函数的概念: 目标:…...
【漫话机器学习系列】082.岭回归(或脊回归)中的α值(alpha in ridge regression)
岭回归(Ridge Regression)中的 α 值 岭回归(Ridge Regression)是一种 带有 L2 正则化 的线性回归方法,用于处理多重共线性(Multicollinearity)问题,提高模型的泛化能力。其中&am…...
Node.js怎么调用到打包的python文件呢
在 Node.js 中调用打包后的 Python 可执行文件(如 PyInstaller 生成的 .exe 或二进制文件),可以通过以下步骤实现: 一、Python 打包准备 假设已有打包好的 Python 文件 your_script.exe(以 Windows 为例)&…...
9 Pydantic复杂数据结构的处理
在构建现代 Web 应用时,我们往往需要处理复杂的输入和输出数据结构。例如,响应数据可能包含嵌套字典、列表、元组,甚至是多个嵌套对象。Pydantic 是一个强大的数据验证和序列化库,可以帮助我们轻松地处理这些复杂的数据结构&#…...
C++ decltype 规则推导
C decltype 规则推导 文章目录 C decltype 规则推导**1. 基本规则****(1) 如果 decltype 的参数是变量名(无括号的标识符)****(2) 如果 decltype 的参数是表达式(带括号或操作符)** **2. 与 auto 的区别****3. 特殊场景****(1) 函…...
Rust 测试组织指南:单元测试与集成测试
一、为什么要同时使用单元测试与集成测试 单元测试:更为精细、聚焦某一逻辑单元;可以调用到私有函数,快速定位错误根源。集成测试:作为“外部代码”来使用库的公开接口,测试多个模块间的交互,确保整体功能…...
Day62_补20250210_图论part6_108冗余连接|109.冗余连接II
Day62_20250210_图论part6_108冗余连接|109.冗余连接II 108冗余连接 【把题意转化为并查集问题】 题目 有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图(其实就是一个线形图&am…...
kafka消费端之消费者协调器和组协调器
文章目录 概述回顾历史老版本获取消费者变更老版本存在的问题 消费者协调器和组协调器新版如何解决老版本问题再均衡过程**第一阶段CFIND COORDINATOR****第二阶段(JOINGROUP)**选举消费组的lcader选举分区分配策略 第三阶段(SYNC GROUP&…...
语法备忘04:将 事件处理函数 绑定到 组件 的事件上
示例1:<Table OnQueryAsync"OnQueryAsync" /> 示例2:<Table OnQueryAsync"OnQueryAsync" /> 说明:这两种写法在功能上是完全相同的,都是在将 OnQueryAsync 事件处理函数绑定到 Table 组件的 …...
C++20中的std::atomic_ref
一、std::atomic_ref 我们在学习C11后的原子操作时,都需要提前定义好std::atomic变量,然后才可以在后续的应用程序中进行使用。原子操作的优势在很多场合下优势非常明显,所以这也使得很多开发者越来习惯使用原子变量。 但是,在实…...
CSS 相关知识
1、高度已知,三栏布局,左右宽度 200,中间自适应,如何实现? <body><div class"box"><div class"box1">高度已知</div><div class"box2">左右宽度 200&…...
RocketMQ、RabbitMQ、Kafka 的底层实现、功能异同、应用场景及技术选型分析
1️⃣ 引言 在现代分布式系统架构中,📩消息队列(MQ)是不可或缺的组件。它在系统🔗解耦、📉流量削峰、⏳异步处理等方面发挥着重要作用。目前,主流的消息队列系统包括 🚀RocketMQ、&…...
IDEA升级出现问题Failed to prepare an update Temp directory inside installation
IDEA升级出现问题"Failed to prepare an update Temp directory inside installation…" 问题来源: 之前修改了IDEA的默认配置文件路径,然后升级新版本时就无法升级,提示"Failed to prepare an update Temp directory insid…...
DeepSeek提示词手册
一、核心原则:基于DeepSeek的推理特性 自然语言优先undefinedDeepSeek擅长理解自然表达,无需复杂模板。例如: ❌旧模板:"你是专业分析师,需分三步回答,第一步…" ✅高效提问:"…...
基于UVM搭验证环境
基于UVM搭验证环境基本思路: 首先,我们搭建环境时一般都有一个目标的DUT。此时,我们可以结合所要验证的的模块、是否需要VIP、验证侧重点等在典型的UVM验证环境的基础上做适当调整后形成一个大体的环境架构。比如,需要一个ahb_vip…...
