爱因斯坦求和(Einstein Summation)全面讲解

一、什么是爱因斯坦求和?

爱因斯坦求和(Einstein summation convention)是由物理学家阿尔伯特·爱因斯坦提出的一种简化张量运算的符号表示法。其核心思想是省略求和符号,通过指标的重复来隐式表示求和操作,从而大幅简化多维度张量(向量、矩阵、高维数组等)的运算表达式。

在传统数学表示中,向量点积需要写成 ∑iaibi\sum_{i} a_i b_iiaibi,而使用爱因斯坦求和可简化为 aibia_i b_iaibi(重复的指标 iii 自动表示求和)。这种简洁性在处理高维张量运算时尤为重要。

二、爱因斯坦求和的核心规则

  1. 重复指标即求和:当一个指标在表达式中出现两次时,自动对该指标进行求和(省略 ∑\sum 符号)
  2. 自由指标即结果维度:未重复的指标(自由指标)将成为结果张量的维度
  3. 指标命名无关性:指标名称仅起占位作用,只要遵循规则,使用 i,j,ki,j,ki,j,kx,y,zx,y,zx,y,z 效果相同
  4. 指标只能重复一次:同一指标最多重复一次(即最多出现两次),出现次数超过两次为无效表达式
  5. 无箭头符号的处理:当表达式中没有 -> 符号时,结果的指标是按照 -> 符号+字母顺序(按照字母表a、b、c······)。例如 'ik,kj' 等价于 'ik,kj->ij''jk,ki' 等价于 'ik,kj->ij'

三、常见运算示例(附PyTorch代码)

1. 向量点积(Dot Product)

  • 爱因斯坦表达式'i,i->''i,i'
  • 数学公式a⋅b=aibia \cdot b = a_i b_iab=aibi(隐含 ∑i\sum_{i}i 求和)
  • 含义:两个向量对应元素相乘后求和,结果为标量
import torch

# 定义两个向量
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])

# 爱因斯坦求和实现点积
result = torch.einsum('i,i->', a, b)  # 或使用 'i,i'
print(result)  # 输出: tensor(32) (1*4 + 2*5 + 3*6 = 4+10+18=32)

2. 向量外积(Outer Product)

  • 爱因斯坦表达式'i,j->ij''i,j'
  • 数学公式Cij=aibjC_{ij} = a_i b_jCij=aibj(无重复指标,不求和)
  • 含义:生成一个矩阵,其中 Cij=ai×bjC_{ij} = a_i \times b_jCij=ai×bj
# 定义两个向量
a = torch.tensor([1, 2])
b = torch.tensor([3, 4, 5])

# 爱因斯坦求和实现外积
result = torch.einsum('i,j->ij', a, b)  # 或使用 'i,j'
print(result)
# 输出:
# tensor([[ 3,  4,  5],
#         [ 6,  8, 10]])

3. 矩阵转置(Transpose)

  • 爱因斯坦表达式'ij->ji'
  • 数学公式Bji=AijB_{ji} = A_{ij}Bji=Aij<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值