pytorch 多维矩阵相乘(爱因斯坦求和约定)

【无标题】python和Pytorch中的矩阵乘法运算总结 python 和Pytorch的矩阵乘法运算总结 阅读详情

torch.einsum(equation, *operands) → Tensor

该函数提供了一种使用爱因斯坦求和约定来计算多线性表达式(即乘积和)的方法。

Parameters:

  • 等式( string ) - 该等式根据与操作数和结果的每个维度相关联的小写字母(索引)给出。左侧列出了操作数尺寸,以逗号分隔。每个张量维度应该有一个索引字母。右侧跟在->之后,并给出输出的索引。如果省略->和右侧,则它隐式地定义为在左侧恰好出现一次的所有索引的按字母顺序排序的列表。在操作数输入之后,将输出中未显示的索引求和。如果索引对同一操作数多次出现,则采用对角线。省略号…表示固定数量的维度。如果推断出右侧,则省略号维度位于输出的开头。
  • 操作数(张量列表) - 计算爱因斯坦和的操作数。请注意,操作数作为列表传递,而不是作为单个参数传递。

Examples:

>>> x = torch.randn(5)
>>> y = torch.randn(4)
>>> torch.einsum('i,j->ij', x, y)  # outer product
tensor([[-0.0570, -0.0286, -0.0231,  0.0197],
 [ 1.2616,  0.6335,  0.5113, -0.4351],
 [ 1.4452,  0.7257,  0.5857, -0.4984],
 [-0.4647, -0.2333, -0.1883,  0.1603],
 [-1.1130, -0.5588, -0.4510,  0.3838]])

>>> A = torch.randn(3,5,4)
>>> l = torch.randn(2,5)
>>> r = torch.randn(2,4)
>>> torch.einsum('bn,anm,bm->ba', l, A, r) # compare torch.nn.functional.bilinear
tensor([[-0.3430, -5.2405,  0.4494],
 [ 0.3311,  5.5201, -3.0356]])

>>> As = torch.randn(3,2,5)
>>> Bs = torch.randn(3,5,4)
>>> torch.einsum('bij,bjk->bik', As, Bs) # batch matrix multiplication
tensor([[[-1.0564, -1.5904,  3.2023,  3.1271],
 [-1.6706, -0.8097, -0.8025, -2.1183]],

 [[ 4.2239,  0.3107, -0.5756, -0.2354],
 [-1.4558, -0.3460,  1.5087, -0.8530]],

 [[ 2.8153,  1.8787, -4.3839, -1.2112],
 [ 0.3728, -2.1131,  0.0921,  0.8305]]])

>>> A = torch.randn(3, 3)
>>> torch.einsum('ii->i', A) # diagonal
tensor([-0.7825,  0.8291, -0.1936])

>>> A = torch.randn(4, 3, 3)
>>> torch.einsum('...ii->...i', A) # batch diagonal
tensor([[-1.0864,  0.7292,  0.0569],
 [-0.9725, -1.0270,  0.6493],
 [ 0.5832, -1.1716, -1.5084],
 [ 0.4041, -1.1690,  0.8570]])

>>> A = torch.randn(2, 3, 4, 5)
>>> torch.einsum('...ij->...ji', A).shape # batch permute
torch.Size([2, 3, 5, 4])

 

从爱因斯坦求和到多维数组运算:einsum在NumPy、PyTorch与TensorFlow中的核心应用 在科学计算与深度学习领域,多维数组(张量)运算是处理高维数据的核心基础。爱因斯坦求和约定(einsum)作为一种强大的张量运算描述语言,通过简洁的下标标记法,将复杂的转置、重塑、求和与点积操作统一表达。其原理基于对重复下标维度的自动求和(缩并),实现了从向量点积、矩阵乘法到高维张量缩并的通用化计算。这一技术显著提升了代码的可读性与自文档化能力,减少了维度对齐的思维负担。在机器学习、物理模拟与数据科学中,einsum被广泛应用于注意力机制计算、批量矩阵乘法、张量网络收缩等场景,成为NumPy、PyTorch和 阅读详情

相关推荐

torch.einsum用法详解

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

bj_zhb的博客 2万+

Pytorch矩阵乘法总结

pytorch一共有5种乘法 *乘,element-wise乘法,支持broadcast操作 torch.mul(),和*乘完全一样 torch.mm(),矩阵叉乘,即对应元素相乘相加,不支持broadcast操作 torch.bmm(),三维矩阵乘法,一般用于mini-batch训练中 torch.matmul(),叉乘,支持broadcast操作 先定义下面的tensor(本文不展示print结果): import torch tensorA_2x3 = torch.tensor( [[1

weixin_42065178的博客 1万+

vs用eigen3计算矩阵乘法_深度学习矩阵乘法的终极奥义einsum,结合多个计算框架上的使用...

说明:讲解时会对相关文章资料进行思想、结构、优缺点,内容进行提炼和记录,相关引用会标明出处,引用之处如有侵权,烦请告知删除。转载请注明:DengBoCong这里我们来好好探讨一下深度学习中,矩阵乘法的使用,其实主要是围绕einsum来进行探讨,即通过爱因斯坦求和约定来指导矩阵乘法,同时附带陈列其他矩阵乘法的API,方便进行直观感受。本文中的计算框架及版本如下:TensorFlow2.3PyTorc...

weixin_39679468的博客 976

『PyTorch』矩阵乘法总结

PyTorch中张量乘法的一些总结

七秒钟的记忆 2012

爱因斯坦求和(Einstein Summation)在深度学习中的实战应用

本文深入探讨了爱因斯坦求和(Einstein Summation)在深度学习中的实战应用。通过解析其核心语法规则,并结合PyTorch代码示例,展示了如何利用`torch.einsum`简洁高效地实现矩阵乘法、张量缩并、注意力机制等复杂操作,显著提升代码可读性与开发效率,是处理高维张量运算的利器。

weixin_29070721的博客 360

PyTorch深度学习实战(24)—— 爱因斯坦操作einsum 和 einops

爱因斯坦操作凭借其便捷、直观的特点,在视觉Transformer中得到了广泛的应用,下面以Vision Transformer(ViT)在很多网络结构中,需要提取通道间或者空间像素之间的信息,从而完成通道的部分维度和空间的部分维度之间的转化。注意: 对于res1和res2,虽然它们的shape一样,但是由于提取维度时的顺序不一样,它们的数值并不相同。进行维度间的相互转化时,一定要注意维度的顺序,如果提取的顺序有误,那么无法得到正确的目标结果。除了上面介绍的爱因斯坦求和,其他的爱因斯坦操作都封装在。

shangjg3的博客 874

pytorch矩阵相乘详解

矩阵相乘

Jeaksun的博客 825

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式)

本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。

qq_27496129的博客 575

PyTorch 对应点相乘、矩阵相乘

一,对应点相乘,x.mul(y) ,即点乘操作,点乘不求和操作,又可以叫作Hadamard product;点乘再求和,即为卷积 data = [[1,2], [3,4], [5, 6]] tensor = torch.FloatTensor(data) tensor Out[27]: tensor([[ 1., 2.], [ 3., 4.], [ 5....

一千零一夜的博客 11万+

ABtest描述统计功效

我们在面试数据分析时,常常会问到如何确定样本量的问题,会有一个指标:统计功效(power),或者是1-β 统计功效会影响实验的可信度,甚至会影响实验所需的样本量,要了解统计功效,首先要理解两类统计错误 假如我们做了一个AB实验,且两组用户的数据均值为μ1和μ2,我们会有两个初始假设: H0:两个实验组的数据没有差别(μ1=μ2),这个假设也叫“零假设”,也叫原假设 H1:两个实验组之间的数据存在差别(μ1≠μ2),这个假设也叫“非零假设”,也叫备择假设 定义两类错误: 实验本身没有效应,但我们觉

qq_38134556的博客 899

无需Root!安卓模拟器+BurpSuite轻松搞定微信小程序抓包

本文详细介绍了如何在不root安卓设备的情况下,使用安卓模拟器和BurpSuite实现微信小程序抓包。通过夜神模拟器降级安卓版本、配置BurpSuite代理及安装证书等步骤,开发者可以轻松绕过微信的证书绑定,高效抓取小程序数据包。文章还提供了常见问题排查和高阶技巧,帮助开发者提升抓包效率。

weixin_29213655的博客 365

矩阵相乘torch.einsum()

einsum。

virus111222的博客 940

【算法实战】Keystone变换:从原理到MATLAB实现的距离走动校正

本文深入解析Keystone变换在雷达信号处理中的距离走动校正应用,从原理到MATLAB实现全面讲解。通过三种实现方法(DFT+IFFT、Sinc插值、Chirp-Z变换)的对比分析,结合实战案例展示如何有效解决高速目标导致的距离单元跨越问题,提升多普勒频谱聚焦质量。

weixin_29055699的博客 295

np.einsum(爱因斯坦求和约定)

欢迎关注我的微信公号:小张Python einsum 全称 Einstein summation convention(爱因斯坦求和约定),用简单的方式来代表多维数组运算; 矩阵求各元素之和 A=∑i=0n∑j=0naiaj A = \sum_{i=0}^n\sum_{j=0}^na_ia_j A=i=0∑n​j=0∑n​ai​aj​ 如果用 einsum函数可表示为 A = np.einsum('i',a) 多矩阵相乘 Cik=∑j=1nAijBjk C_{ik} = \sum_{j=1}^nA_.

小张Python 5518

红外基本数据观察需要用到的技巧

1.用ps查看Y8的数据,直接将Y8.raw格式拖动到ps中去。 2.用ps查看Y16数据,直接将Y16.raw拖动到PS中去。 3.Y16转Y8是将Y16的值(Y16的范围~32768–32767)映射到Y8的值(Y8的范围为0~255),步骤如下:1.按照Y16的大小排列并统计相同Y16出现的次数直方图; 2.根据抛点比例计算抛点个数,分别从前往后与从后往前...

阿锋的专栏 2630

版电力系统故障录波_故障录波识图与典型故障波形分析

1、设置故障录波的目的故障录波装置是对电力系统运行状况进行监控的一种自动化设备。系统正常运行时,录波装置不启动录波,当系统发生故障时,通过启动录波装置迅速启动录波器录波,直接记录反应故障装置安装处系统故障的电气量。2、故障录波的作用(1)正确评价继电保护和自动装置的工作。(2)正确分析事故的原因并研究防止对侧。(3)发现继电保护和自动装置缺陷。(4)发现一次设备缺陷,及时消除隐患。(5)帮助寻找故...

weixin_42495661的博客 1万+

【Pytorch】科研代码技巧—Einsum爱因斯坦求和约定

不知大家在看论文代码的时候是否会常常看见 torch.einsum(),这玩意儿看起来是真的抽象,但是深入了解后发现它原来这么好用。

优快云已停更,感兴趣关注https://aaronzijingcai.github.io/ 2490

保姆级教程:用Vue3+Element Plus快速搭建Flowable流程定义管理后台界面

本文提供了一份详细的Vue3+Element Plus教程,指导开发者快速搭建Flowable流程定义管理后台界面。从项目初始化、核心页面设计到响应式数据处理,全面覆盖前端开发关键步骤,帮助提升企业级应用开发效率。

weixin_42662293的博客 480

einsum爱因斯坦求和(numpy)

0. 爱因斯坦求和约定(Einstein Notation) 在数学中,爱因斯坦求和约定是一种标记法,也称为Einstein Summation Convention,在处理关于坐标的方程式时十分有效。简单来说,爱因斯坦求和就是简化掉求和式中的求和符号,即 $ \Sigma $, 这样就会使公式更加简洁,如 Numpy是Python中的一个重要的科学计算库,支持大量的多维数组计算,并提供了大量的运算函数库。Numpy率先将爱因斯坦求和以扩展函数的方式引入(np.einsum),而多维数组的特性又非常符合深

Wenrui Xie的博客 2303

★教程3:Simulink学习教程入门60例目录

1.订阅本教程用户可以免费获得本博任意1个(包括所有免费专栏和付费专栏)博文对应代码;2.本Simulink课程的所有案例(部分理论知识点除外)均由博主编写而成,供有兴趣的朋友们自己订阅学习使用。未经本人允许,禁止任何形式的商业用途;3.本课程除了介绍常见的Simulink模块介绍之外,我们更侧重于各种实例的完整设计介绍。从通信,控制器,图像处理,语音处理,电力系统等诸多常用领域介绍了相关案例,如果对于某个较为复杂的案例,初学者无法正确复现,也可以私信博主获得完整Simulink模型文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深度学习矩阵乘法的终极奥义einsum,结合多个计算框架上的使用

einsum以一种优雅的方式,表示各种矩阵运算,好处在于你不需要去记和使用计算框架中(TensorFlow|PyTorch|Numpy)点积、外积、转置、矩阵-向量乘法、矩阵-矩阵乘法的函数名字和签名。从某种程度上解决引入不必要的张量变形或转置运算,以及可以省略的中间张量的现象。不仅如此,einsum有时可以编译到高性能代码,事实上,PyTorch最近引入的能够自动生成GPU代码并为特定输入尺寸自动调整代码的张量理解(Tensor Comprehensions)就基于类似einsum的领域特定语言。此外,可

BoCong-Deng的博客 3450

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

einsum爱因斯坦求和

https://zhuanlan.zhihu.com/p/74462893 爱因斯坦求和约定(Einstein Notation) 在数学中,爱因斯坦求和约定是一种标记法,也称为Einstein Summation Convention,在处理关于坐标的方程式时十分有效。简单来说,爱因斯坦求和就是简化掉求和式中的求和符号,即 [公式] ,这样就会使公式更加简洁,如 Numpy是Python中的一个重要的科学计算库,支持大量的多维数组计算,并提供了大量的运算函数库。Numpy率先将爱因斯坦求和以扩展函数

VIEO 1194

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

numpy 矩阵乘法_深度学习矩阵乘法的终极奥义einsum,结合多个计算框架上的使用...

说明:讲解时会对相关文章资料进行思想、结构、优缺点,内容进行提炼和记录,相关引用会标明出处,引用之处如有侵权,烦请告知删除。转载请注明:DengBoCong这里我们来好好探讨一下深度学习中,矩阵乘法的使用,其实主要是围绕einsum来进行探讨,即通过爱因斯坦求和约定来指导矩阵乘法,同时附带陈列其他矩阵乘法的API,方便进行直观感受。本文中的计算框架及版本如下:TensorFlow2.3PyTorc...

weixin_39671935的博客 674

PyTorch张量操作实战从基础reshape到高级einsum详解

从基础的reshape、transpose到强大的einsum,PyTorch提供了一系列灵活的张量操作工具。对于初学者,建议先扎实掌握基础的重塑和维度变换操作,因为它们是理解张量数据流的基础。当遇到复杂的多张量线性代数运算时,再逐步引入einsum来简化代码。在实践中,应注意einsum方程的可读性,并为关键操作编写注释。同时,对于性能要求极高的生产代码,在使用了einsum进行原型设计后,可以考虑使用更底层的、针对特定硬件优化的操作进行替换。

jiaojienku的专栏 801

数学张量与工程张量:指标、爱因斯坦求和与einsum实战

在深度学习和物理计算中,张量常被简化为多维数组,但其数学本质是坐标变换下按规则变化的多重线性映射。理解上下标、协变逆变与爱因斯坦求和约定,能帮助开发者建立统一的指标运算直觉。这种直觉直接映射到PyTorch的einsum、permute等API,让批量矩阵乘、注意力打分等运算从查文档变成可推导。掌握指标语言,不仅能避免形状与连续性陷阱,还能提升显存与性能优化能力。围绕数学张量与工程张量的对照,从手写指标到代码验证,逐步打通符号、运算与工程实践。

weixin_34268310的博客 250

【Pytorch】一文向您详细介绍 torch.einsum() 的用法

🚀 解锁PyTorch强大功能,一文掌握`torch.einsum()`用法!🌟 🔍 深度解析`torch.einsum()`基础与进阶,助你轻松驾驭多维张量运算。 🌈 高级技巧让你举一反三,灵活应对各种复杂计算。 💡 实用建议,助你以小见大,优化模型性能。 🚀 总结与展望,带你领略`torch.einsum()`的无限可能!#PyTorch #torch.einsum #深度学习 #张量运算#

创作高质量博文,分享知识,共同进步! 2461
上一篇: 前后端分离跨域问题导致session保存的数据获取不到
下一篇: 深度学习的一些论文解析
Cestbo1
博客等级 码龄10年 53粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值