pytorch einsum 矩阵乘 浅显易懂解释

torch.einsum用法详解 是PyTorch中的一个函数,用于执行爱因斯坦求和约定(Einstein summation)运算。它提供了一种灵活而强大的方式来执行多维张量的操作和变换。其中,equation是一个字符串,用于指定爱因斯坦求和约定的运算方式,operands是一个或多个输入张量。在equation中,你可以使用大写字母表示张量的维度标识符,使用小写字母表示对应维度的长度。通过指定输入张量和输出张量之间的维度关系,你可以定义所需的运算操作。下面是一个简单的例子,展示了如何使用# 两个向量的点积。 阅读详情

einsum用于矩阵乘法
直接上例子吧
比如

'bhqd, bhkd -> bhqk'

虽然是4维,但是前两维是不变的,先不看,只看后2维,qd, kd -> qk
这是两个矩阵相乘,两个矩阵的shape分别为A=qxd, B=kxd, 得到的结果形状是C =qxk
根据矩阵乘法,我们知道(qxd) x (dxk)结果的形状为qxk,
也就是说上面相当于是AxBT=C

验证一下

energy = torch.einsum('bhqd, bhkd -> bhqk', queries, keys)
print('energy.shape',energy.shape)
queries.shape torch.Size([1, 8, 197, 96])
key.shape torch.Size([1, 8, 197, 96])
energy.shape torch.Size([1, 8, 197, 197])

可以看到相当于queries x keysT, 即形状(197x96) x (197x96)T=(197x197)

再看一个

'bhal, bhlv -> bhav'

前两维一样的,不看,只看后两维,仍然看作是矩阵的形状A=axl, B=lxv
矩阵相乘(axl) x (lxv) = (axv),和结果的av相同
所以上面相当于是A与B相乘

验证一下

out = torch.einsum('bhal, bhlv -> bhav', att, values)
print('out.shape',out.shape)
att.shape torch.Size([1, 8, 197, 197])
values.shape torch.Size([1, 8, 197, 96])
out.shape torch.Size([1, 8, 197, 96])

可以看到相当于att x values,即形状(197x197) x (197x96) = (197x96)

别再只用固定线了!聊聊Android车机‘快速倒车’与‘正常倒车’的UI与数据流核心差异(附动态轨迹线实现原理) 本文深度解析Android车机中快速倒车与正常倒车的核心差异,探讨从内核级视频流水线到动态轨迹线的技术实现。快速倒车通过内核直接操作FrameBuffer实现2秒内响应,而正常倒车则支持多传感器数据融合与动态UI元素。文章还分享了动态轨迹线的算法实现与性能优化技巧,帮助开发者打造极致的倒车体验。 阅读详情

相关推荐

保姆级教程:手把手带你复现APFNet论文的RGBT目标跟踪模型(附完整代码与数据集配置)

本文提供了一份详细的APFNet论文复现指南,涵盖从环境搭建到模型测试的全流程。通过解析多模态融合模块和渐进式训练流程,帮助读者高效完成RGBT目标跟踪模型的复现工作,特别针对训练和测试中的常见问题提供实用解决方案。

weixin_29056781的博客 341

【PyTorch函数解析】einsum的用法示例

einsum 是一个非常强大的函数,用于执行张量(Tensor)运算。它的名称来源于爱因斯坦求和约定(Einstein summation convention),在PyTorch中,einsum 可以方便地进行多维数组的操作和计算。在Transfomer中,einsum用的非常多,比如使用 einsum 实现自注意力机制中注意力权重的获取,也就是Q和K的内积:Q(Query):形状为 (batch_size, seq_len, d_k)

cjy_colorful0806的博客 1509

abaqus 根据坐标施加载荷- Analytical Field 载荷映射

在一些类型的分析中,需要将按位置分布的载荷施加到结构上,比如流体分析导出了结构的气动载荷、或者温度载荷,需要将压强分布、温度分布载荷施加到固体上。这种分析可以使用abaqus中的Analytical Field实现。 1 例子 1.1 结构 一个100*100mm的面,面的载荷分布函数为p=(x2+y2)0.5/((20.5)*100) MPa,即(0, 0)的压强为0,(100, 100)的压强为1。 1.2 载荷 载荷函数:p=(x^2+y^2)^0.5/((2^0.5)*100) in exce.

shengyutou的博客 2万+

AlphaFold2源码解析(7)--模型之Evoformer

AlphaFold2源码解析(7)--模型之Evoformer

发呆的比目鱼的博客 3501

给麒麟KylinOS服务器加把锁:手把手配置符合等保要求的密码强度策略

本文详细介绍了如何在麒麟KylinOS服务器上配置符合等保要求的密码强度策略,包括pwquality.conf和login.defs的核心参数设置、等保合规的进阶配置技巧以及企业环境中的平衡艺术。通过实战案例和测试方法,帮助管理员构建坚固的密码防线,确保系统安全。

weixin_33749242的博客 417

openstack卷分离异常问题处理

对于 2023-05-10 之后的所有 OpenStack 版本,需要将Nova 配置为向 Cinder 发送服务令牌,然后 Cinder 接收该令牌。cinder.conf处添加service_token_role配置。1.修改nova的config文件添加如下配置。确定service role 是否存在。有关详细信息,请参阅。重启nova cinder 服务。nova-compute日志。cinder-api日志。

weixin_43391291的博客 474

矩阵相乘torch.einsum()

einsum。

virus111222的博客 940

【LLC快速上手系列】LLC轻载时:开关频率 + 死区时间 联合优化!

轻载优化,频率别飞天,死区要有耐心。两手一起抓,效率高到笑。😎。

weixin_43199439的博客 1182

对于论文中Pytorch代码爱因斯坦求和einsum的理解

einsum求和的理解

qq_43601378的博客 973

Allegro DXF板框导入及将元器件精准放置到特定位置操作

DXF板框导入 选择File-> import -> DXF 点开DXF file 查找文件 3. 选择需要导入的DXF文件 4. 通常结构文件使用的是米制单位,将单位选择为mm,如果不确定DXF 图纸坐标大小,建议勾选incremental addition,软件根据实际DXF图纸大小自动调整背景坐标尺寸以适应DXF图纸 5.打开Edit/View layers 6. 勾选 select all,选择DXF文件所有层;class 一栏选择BOARD GEOMETRY;subcla

sinat_15677011的博客 1万+

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3554

「解析」如何优雅的学习 torch.einsum()

einsum方法解析:einsum(爱因斯坦求和) 是Pytorch、TensorFlow、numpy中一个十分优雅的方法。Einsum 可以计算向量、矩阵、张量运算,包括计算 transposes、sum、column/row sum、Matrix-Vector Multiplication、Matrix-Matrix Multiplication。如果利用得当,sinsum绝对是你科研路上的一把利器,可完全代替其他的矩阵计算方法。

绿色羽毛 1万+

CesiumForUnreal实现地形等高线效果

CesiumForUnreal实现地形等高线效果

专注GIS开发 3437

pytorch中torch.einsum函数的详细计算过程图解

第一次见到 rel_h = torch.einsum(“bhwc,hkc->bhwk”, r_q, Rh)这行代码时,属实是懵了,网上找了很多博主的介绍,但都没有详细的说明函数内部的计算过程,看得我是一头雾水,只知道计算结果的维度是如何变化的,却不明白函数内部是如何计算的。话不多说,直接上示例代码。

weixin_42999968的博客 2639

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Pytorch中, torch.einsum详解。

爱因斯坦简记法:是一种由爱因斯坦提出的,对向量、矩阵、张量的求和运算的求和简记法。 在该简记法当中,省略掉的部分是:1)求和符号与2)求和号的下标 省略规则为:默认成对出现的下标(如下例1中的i和例2中的k)为求和下标。 我们举例说明: 1)用简化表示内积 其中o为输出。 2) 用简化表示矩阵乘法 其中为输出矩阵的第ij个元素。 这样的求和简记法,能够以一种统一的方...

a2806005024的专栏 7万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Pytorch中的einsum

本文主要介绍如何使用Pytorch中的爱因斯坦求和(einsum),掌握einsum的基本用法。 einsum的安装 在安装pytorch的虚拟环境下输入以下命令: pip install opt_einsum 爱因斯坦求和约定 在数学中,爱因斯坦求和约定是一种标记法,也称为Einstein Summation Convention,在处理关于坐标的方程式时十分有效。简单来说,爱因斯坦求和就是简化掉求和式中的求和符号,这样就会使公式更加简洁,如 三条基本规则 eins...

y473459100的博客 3167

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

pytorch中einsum详解

引言  在线性代数里,经常会遇到各种计算操作符号,比如矩阵的点积,外积,HHH积,KKK积,转置等。爱因斯坦求和约定提供了一套简单优雅的规则可以实现以上操作,目的是省略掉求和公式中的求和号“+”。 定义(爱因斯坦求和约定):如果两个相同的指标出现在指标符号公式的同一项中,则表示对该指标遍历整个取值范围求和。 爱因斯坦求和约定具体的规则可以归结为如下几条 在同一项中,如果同一指标成对出现,就表示遍历其取值范围求和 公式中成对出现的指标叫做哑指标亦或哑标,表示哑标的小写字母可以用另一个小写字母替换,并且

欢迎来到道的世界 5229

【Pytorch】einsum

本文为 Pytorch 学习笔记,讲解爱因斯坦简记法。

weixin_44413191的博客 454

numpy batch矩阵乘法, einsum

写程序遇到了类似 batch 相乘的问题, 而程序用的是 numpy 不是 torch, 本打算转为 torch 写突然想到有 einsum 函数, 于是马上就写出来了. 本来想做的事情为 for i in range(n): pts = lines[i] R = Rs[i] res.append( pts.dot(R.T) ) 简单来说就是有一堆点 两两一组, 每组乘以...

长虹剑的专栏 2851

pytorch中的einsum函数

einsum函数 einsum函数在文档中的解释为: 即,该函数提供了一种使用爱因斯坦求和约定来计算多线性表达式的方法(即乘积和) 爱因斯坦求和约定(Einstein summation convention) 关于爱因斯坦求和约定的详细运算过程参考知乎大佬的回答:https://zhuanlan.zhihu.com/p/46006162以及B站up的视频:https://www.bilibili.com/video/BV1ot411V71V?from=search&seid=9196910873

weixin_44394368的博客 2635

Einsum in PyTorch✍️

写在前面     Einsum是一种domain-specific language 域指定语言,可以高性能的实现诸如:dot products, outer product, 矩阵转置 transposes,矩阵向量乘法以及矩阵矩阵之间的乘法。其在numpy、tensorflow、pytorch等框架中可以大大提高编程效率以及矩阵运算的速度,代码也更加简洁。 EINSUM IN DEEP LEARNING once for all   &nb

CREATOR_XiaoLi 676

PyTorch 中的 tensordot 以及 einsum 函数介绍

PyTorch 中的 tensordot 以及 einsum 函数介绍 前言 最近发现这两个函数用得越来越频繁, 比如在 DCN 网络的实现中就用到了(详见 Deep Cross Network (深度交叉网络, DCN) 介绍与代码分析), 但是过段时间又忘记这两个函数到底实现啥功能, 趁着现在印象还比较深刻的时候记录一下 ????????????. 从例子出发 拿一大串中文或英文来形容这两个函数, 该懵逼的还是...

珍妮的选择的博客 5132

详解 einsum(Einstein Summation):高效实现张量运算的利器

用简洁的爱因斯坦求和约定(Einstein Summation Convention)高效地执行张量运算,而不需要显式地调用 matmul、dot 或 transpose 等函数。

阿正的梦工坊 2905

Pytorch中, torch.einsum

https://blog.youkuaiyun.com/a2806005024/article/details/96462827 3)Torch矩阵乘法。 print(a_tensor) tensor([[11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34], [41, 42, 43, 44]]) ...

lemonade_117的博客 1087

einsum方法详解(爱因斯坦求和)

einsum方法详解(爱因斯坦求和) einsum是pytorch、numpy中一个十分优雅的方法,如果利用得当,可完全代替所有其他的矩阵计算方法,不过这需要一定的学习成本。本文旨在详细解读einsum方法的原理,并给出一些基本示例。 一、爱因斯坦求和 爱因斯坦求和是一种对求和公式简洁高效的记法,其原则是当变量下标重复出现时,即可省略繁琐的求和符号。 比如求和公式: ∑i=1naibi=a1b1+a2b2+...+anbn \begin{aligned} \sum_{i=1}^na_

ashome123的博客 2万+

pytorch 中矩阵乘法总结

导语:这是一篇关于Pytorch中各类乘法操作的总结和使用说明。torch.dot():Computes the dot product (inner product) of two tensors.计算两个1-D 张量的点乘(内乘)。torch.dot(torch.tensor([2, 3]), torch.tensor([2, 1])) out: tensor(7)torch.mm() , 其中 , , 输出 的维度是。该函数只用来计算两个2-D矩阵的矩阵乘法。mat1 = torch.randn(2,

Lyn_Notes 2621
上一篇: leetcode 171. Excel Sheet Column Number(Excel表格列数)
下一篇: einops rearrange说明
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值