PyTorch深度学习入门 Tensor基础 1.1 Tensor 5. 线性代数运算

PyTorch深度学习入门

在这里插入图片描述

Tensor基础
5. 线性代数运算

简单介绍3种:

使用torch.dot()函数实现向量与向量的点积(也称内积:

a = torch.Tensor([1, 2, 3])
b = torch.Tensor([2, 3, 4])
torch.dot(a, b)

在这里插入图片描述

向量的点积定义:

假设有两个向量 a⃗=[a1,a2,⋯ ,an],b⃗=[b1,b2,⋯ ,bn]\vec{a}=\left[a_1, a_2, \cdots, a_n\right], \vec{b}=\left[b_1, b_2, \cdots, b_n\right]a=[a1,a2,,an],b=[b1,b2,,bn], 那么 a⃗\vec{a}ab⃗\vec{b}b 的点积定义为:
a⃗⋅b⃗=a1b1+a2b2+⋯+anbn=∑i=1naibi \vec{a} \cdot \vec{b}=a_1 b_1+a_2 b_2+\cdots+a_n b_n=\sum_{i=1}^n a_i b_i ab=a1b1+a2b2++anbn=i=1naibi

所以 a⃗⋅b⃗=1×2+2×3+3×4=20\vec{a} \cdot \vec{b}=1 \times 2+2 \times 3+3 \times 4=20ab=1×2+2×3+3×4=20

使用torch.mv()函数实现矩阵与向量的乘法:

在这里插入图片描述

矩阵与向量的乘法规则如下:
[a11a12⋯a1ma21a22⋯a2m⋮⋮⋱⋮an1an2⋯anm][b1b2⋮bm]=[a11b1+a12b2+⋯+a1mbma21b1+a22b2+⋯+a2mbm⋮an1b1+an2b2+⋯+anmbm] \left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 m} \\ a_{21} & a_{22} & \cdots & a_{2 m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n m} \end{array}\right]\left[\begin{array}{c} b_1 \\ b_2 \\ \vdots \\ b_m \end{array}\right]=\left[\begin{array}{c} a_{11} b_1+a_{12} b_2+\cdots+a_{1 m} b_m \\ a_{21} b_1+a_{22} b_2+\cdots+a_{2 m} b_m \\ \vdots \\ a_{n 1} b_1+a_{n 2} b_2+\cdots+a_{n m} b_m \end{array}\right] a11a21an1a12a22an2a1ma2manmb1b2bm=a11b1+a12b2++a1mbma21b1+a22b2++a2mbman1b1+an2b2++anmbm

所以
[123234345][123]=[1×1+2×2+3×32×1+3×2+4×33×1+4×2+5×3]=[142026] \left[\begin{array}{lll} 1 & 2 & 3 \\ 2 & 3 & 4 \\ 3 & 4 & 5 \end{array}\right]\left[\begin{array}{l} 1 \\ 2 \\ 3 \end{array}\right]=\left[\begin{array}{l} 1 \times 1+2 \times 2+3 \times 3 \\ 2 \times 1+3 \times 2+4 \times 3 \\ 3 \times 1+4 \times 2+5 \times 3 \end{array}\right]=\left[\begin{array}{l} 14 \\ 20 \\ 26 \end{array}\right] 123234345123=1×1+2×2+3×32×1+3×2+4×33×1+4×2+5×3=142026

使用torch.mm()函数将两个矩阵相乘:

在这里插入图片描述

矩阵与矩阵的乘法定义:

[a11a12⋯a1s⋮⋮⋱⋮ai1ai2⋯ais⋮⋮⋱⋮an1an2⋯ans][b11⋯b1j⋯b1mb21⋯b2j⋯b2m⋮⋱⋮⋯⋮bs1⋯bsj⋯bsm]=[c11⋯c1j⋯c1m⋮⋮⋮⋱⋮ci1⋯cij⋯cim⋮⋮⋮⋱⋮cn1⋯cnj⋯cnm] \left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 s} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i 1} & a_{i 2} & \cdots & a_{i s} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n s} \end{array}\right]\left[\begin{array}{ccccc} b_{11} & \cdots & b_{1 j} & \cdots & b_{1 m} \\ b_{21} & \cdots & b_{2 j} & \cdots & b_{2 m} \\ \vdots & \ddots & \vdots & \cdots & \vdots \\ b_{s 1} & \cdots & b_{s j} & \cdots & b_{s m} \end{array}\right]=\left[\begin{array}{ccccc} c_{11} & \cdots & c_{1 j} & \cdots & c_{1 m} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ c_{i 1} & \cdots & c_{i j} & \cdots & c_{i m} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ c_{n 1} & \cdots & c_{n j} & \cdots & c_{n m} \end{array}\right] a11ai1an1a12ai2an2a1saisansb11b21bs1b1jb2jbsjb1mb2mbsm=c11ci1cn1c1jcijcnjc1mcimcnm

其中 cij=ai1b1j+ai2b2j+⋯+aisbsjc_{i j}=a_{i 1} b_{1 j}+a_{i 2} b_{2 j}+\cdots+a_{i s} b_{s j}cij=ai1b1j+ai2b2j++aisbsj

所以:

[123234345][234345456]=[202632293847385062] \left[\begin{array}{lll} 1 & 2 & 3 \\ 2 & 3 & 4 \\ 3 & 4 & 5 \end{array}\right]\left[\begin{array}{lll} 2 & 3 & 4 \\ 3 & 4 & 5 \\ 4 & 5 & 6 \end{array}\right]=\left[\begin{array}{lll} 20 & 26 & 32 \\ 29 & 38 & 47 \\ 38 & 50 & 62 \end{array}\right] 123234345234345456=202938263850324762

常见的线性代数操作:

方法说明
dot()两个向量点积
mv()矩阵与向量相乘
mm()两个矩阵相乘
addmm()将两个矩阵进行矩阵乘法操作的结果与另一矩阵相加
addmv()将矩阵和向量相乘的结果与另一向量相加
addr()将两个向量进行张量积(外积)操作的结果与另一个矩阵相加
bmm()两个batch内的矩阵进行批矩阵乘法
eig()计算方阵的特征值和特征向量
ger()两个向量的张量积
inverse()对方阵求逆
addbmm()将两个batch内的矩阵进行批矩阵乘法操作并累加,其结果与另一矩阵相加
naddbmm()将两个batch内的矩阵进行批矩阵乘法操作,其结果与另一batch内的矩阵相加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

祝我天天开心,平安健康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值