爱因斯坦求和~enisum~以及各种矩阵乘法product公式~最后有手绘enisum理解

本文介绍了各种矩阵乘法,包括点积、元素间乘积、内积、外积和克罗内克积,并详细阐述了爱因斯坦求和的原理及其在处理矩阵运算中的应用。建议通过绘制图像辅助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

various product

  1. dot product
  2. element-wise product
  3. inner product
  4. outer product
  5. Kronecker product(克罗内克积)
  6. torch.enisumEinstein notation

1 dot product

线代中的矩阵乘法,A.dot(B),表示A的行乘以B的列,A的列数需要等于B的行数。

A = ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ) , B = ( b 11 b 12 ⋯ b 1 p b 21 b 22 ⋯ b 2 p ⋮ ⋮ ⋱ ⋮ b n 1 b n 2 ⋯ b n p ) {\displaystyle \mathbf {A} ={\begin{pmatrix}a_{11}&a_{12}&\cdots &a_{1n}\\a_{21}&a_{22}&\cdots &a_{2n}\\\vdots &\vdots &\ddots &\vdots \\a_{m1}&a_{m2}&\cdots &a_{mn}\\\end{pmatrix}},\quad \mathbf {B} ={\begin{pmatrix}b_{11}&b_{12}&\cdots &b_{1p}\\b_{21}&b_{22}&\cdots &b_{2p}\\\vdots &\vdots &\ddots &\vdots \\b_{n1}&b_{n2}&\cdots &b_{np}\\\end{pmatrix}}} A=a11a21am1a12a22am2a1na2namn,B=b11b21bn1b12b22bn2b1pb2pbnp

### 使用 NumPy 实现爱因斯坦求和约定 在 Python 中,通过 `numpy.einsum` 函数可以方便地应用爱因斯坦求和约定来执行复杂的张量运算。此函数接受字符串参数作为输入,该字符串描述了要执行的操作。 #### 基本语法 `einsum` 的基本调用形式如下: ```python np.einsum(subscripts, *operands) ``` 其中 `subscripts` 是一个表示操作的子脚本字符串,而 `*operands` 则是要参与计算的一个或多个数组[^1]。 #### 示例:矩阵转置 对于简单的矩阵转置来说,如果有一个形状为 (m,n) 的矩阵 A,则可以通过下面的方法得到其转置 AT: ```python import numpy as np A = np.random.rand(3, 4) AT = np.einsum('ij->ji', A) print(AT.shape) # 输出应为 (4, 3) ``` #### 示例:两个向量内积 给定两个相同长度的一维向量 u 和 v ,它们之间标准意义上的点积可以用 einsum 表达式 'i,i' 来完成: ```python u = np.array([1., 2., 3.]) v = np.array([-1., 0., 1.]) dot_product = np.einsum('i,i', u, v) print(dot_product) # 应输出 -1.*1.+0.*2.+1.*3. ``` #### 示例:矩阵-向量乘法 当涉及到矩阵 M 和列向量 b 进行常规左乘时,即 Mb , 可以利用下述方式表达: ```python M = np.arange(9).reshape((3, 3)) b = np.array([1., 2., 3.]) result_vector = np.einsum('ij,j', M, b) print(result_vector) ``` 以上例子展示了如何使用 `numpy.einsum` 执行不同类型的张量运算,这不仅限于上述几种情况;实际上它可以处理更复杂的情形,比如批量矩阵相乘、高阶张量收缩等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值