李沐深度学习预备知识——线性代数

本文详细介绍了在PyTorch中使用张量进行线性代数操作,包括标量、向量、矩阵的定义与操作,如转置、乘法、张量运算性质、向量和矩阵乘积(点积、矩阵-向量积、矩阵乘法)、范数(L2、L1、Frobenius)以及降维的方法。

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

李沐深度学习预备知识——线性代数


1、标量(不加粗表示)

用只有一个元素的张量表示

import torch
x = torch.tensor(3.0)
y = torch.tensor(2.0)
x + y, x * y, x / y, x**y

2、向量(小写粗体表示x)

机器学习大量文献定义向量默认方向为方向。但每个数据样本,一般是矩阵中的一行表示

x=torch.arange(4) # 注意有个a
print(x) #tensor([0, 1, 2, 3])
print(x[3])#tensor(3)
len(x)# 4
x.shape# 可调用shape属性访问长度 torch.Size([4])

维度(dimension)在不同语境下含义不同,对于向量(轴)来说指代长度。对于其他张量表示该张量拥有的轴数。

3、矩阵(大写粗体表示X)

实例化张量时,可指定形状

A = torch.arange(20).reshape(5, 4)

转置

A.T

4、张量(特殊大写字母,加粗视情况而定)

有n个轴的代数对象称为n阶张量,向量是一阶张量,矩阵是二阶张量。

X = torch.arange(24).reshape(2, 3, 4)

5、张量算法的基本性质

对于张量运算,任何按元素二元运算的结果都将是相同形状的张量,包括+、-、*、/

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone() # 通过分配新内存,将A的一个副本分配给B,深拷贝,避免影响
A, A + B

上述代码若改为B=A,则若对B原址修改(例如B[:,:]=A+B)则,AB值同时变了,是浅拷贝。

矩阵的三种乘法方式:普通乘积(一般直接用AB表示,哈达玛积 ⊙ \odot 和克罗内克积 ⨂ \bigotimes 的介绍见下方链接内容,本文只介绍python实现。
矩阵三种乘积

A*B #hadamard product
2*A #乘以(加)标量等于矩阵A内每个元素乘以(加)这个标量
2+A
</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值