基础学习——爱因斯坦求和、 einsum函数用法(pytorch)

本文详细介绍了PyTorch中的einsum函数使用方法,包括求和、矩阵转置、矩阵乘法、迹计算、对角线元素提取、内积外积及批矩阵乘法等操作,并提供了丰富的示例代码。
部署运行你感兴趣的模型镜像

爱因斯坦求和—— einsum函数用法(pytorch)



前言

这个函数也是偶然间遇到的,觉得还挺好使的。


爱因斯坦求和是一种对求和公式简洁高效的记法,其原则是当变量下标重复出现时,即可省略繁琐的求和符号。

C = einsum('ij,jk->ik', A, B)

->符号就相当于等号,->左边为输入,右边为输出。
还是直接看程序吧。

导入包

# 导入包
import torch
from torch import einsum
求和
a = torch.Tensor(range(2*3)).view(2, 3)
b = torch.einsum("ij -> i", a) #按行求和
c = torch.einsum("ij -> j", a) #按列求和
d = torch.einsum("ij -> ", a) #全部求和
a,b,c,d
# 求和
# a为3维 b维2维   下面就是把a按照第维度0对应点求和得出b
# 等价于 b = a.sum(dim=0)
a = torch.Tensor(range(2*3*4)).view(2, 3, 4)
b = torch.einsum("ijk->jk", a)
a.shape,b.shape,a,b
求转置矩阵

a = torch.Tensor(range(2*3)).view(2, 3)
b = torch.einsum("ij->ji", a)
a,b
矩阵相乘
# 矩阵相乘
a = torch.Tensor(range(2*3)).view(2, 3)
b = torch.Tensor(range(3*4)).view(3, 4)
c = torch.einsum("ij,jk->ik", a, b) 
d = a@b
a,b,c,d
求矩阵的迹
# 求矩阵的迹
a = torch.randn(4, 4)
b = torch.einsum('ii', a)
a,b
提取矩阵对角线元素
# 提取矩阵对角线元素为向量
a = torch.randn(4, 4)
b = torch.einsum('ii->i',a )
a,b
内积 外积
# 张量内积 外积
a = torch.tensor([1,2])
b = torch.tensor([1,3,5])
c = torch.tensor([3,4])

## 内积
d = torch.einsum("i, j ->", a, c)
## 外积
e = torch.einsum("i, j -> ij", a, b)
d,e
求批矩阵乘法
# 求批矩阵乘法
a = torch.randn(3,2,5)
b = torch.randn(3,5,4)
c = torch.einsum('bij,bjk->bik', [As, Bs])
a.shape,b.shape,c.shape
a = torch.Tensor(range(2*3*4*5)).view(2, 3, 4, 5)
b = torch.Tensor(range(2*3*7*8)).view(2, 3, 7, 8)
c = torch.einsum("ijkl,ijmn->klmn", a, b)
a.shape,b.shape,c.shape

总结

未完待续,,,,

您可能感兴趣的与本文相关的镜像

PyTorch 2.7

PyTorch 2.7

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Chaoy6565

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

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

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

打赏作者

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

抵扣说明:

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

余额充值