1. 深度学习中的线性代数基础
作为一名长期奋战在深度学习一线的工程师,我深知线性代数对于理解神经网络底层原理的重要性。今天我想分享的是李沐老师"动手学深度学习"课程中线性代数部分的精华总结,并结合PyTorch实现细节,帮助大家真正掌握这些核心概念。
深度学习本质上就是线性代数+概率论+微积分的组合应用。在神经网络中,数据以四种基本形态存在:
- 标量(Scalar):单个数值,如损失函数值loss=2.3
- 向量(Vector):一维数组,如一个样本的特征向量x∈R^d
- 矩阵(Matrix):二维表格,如一批样本的特征矩阵X∈R^
- 张量(Tensor):高维数组,如图像数据N×C×H×W
在PyTorch中,所有这些数据类型都用torch.Tensor表示,通过shape属性查看维度信息。理解这些基础数据结构是掌握深度学习的第一步。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. PyTorch中的张量操作实践
2.1 创建基本张量类型
让我们从最基础的张量创建开始,这是每个深度学习工程师的日常操作:
python复制import torch
# 标量(0维张量)
scalar = torch.tensor(3.14)
print(f"标量: {scalar}, shape: {scalar.shape}")
# 向量(1维张量)
vector = torch.arange(4) # [0,1,2,3]
print(f"向量: {vector}, shape: {vector.shape}")
# 矩阵(2维张量)
matrix = torch.arange(12).reshape(3, 4) # 3行4列
print(f"矩阵:\n{matrix}, shape: {matrix.shape}")
# 3维张量
tensor_3d = torch.randn(2, 3, 4) # 2个3x4矩阵
print(f"3维张量:\n{tensor_3d}, shape: {tensor_3d.shape}")
实操提示:创建张量时,养成习惯立即检查其shape,这是避免后续维度错误的关键。我见过太多bug都是因为开发者对中间变量的shape不清晰导致的。
2.2 向量运算详解
向量运算是深度学习中最频繁的操作,主要包括三种基本运算:
- 逐元素运算:加减乘除等
- 数乘运算:标量与向量的乘法
- 点积运算:向量间的内积
python复制# 创建两个示例向量
u = torch.tensor([1., 2., 3.])
v = torch.tensor([4., 5., 6.])
# 逐元素运算
print(f"向量相加: {u + v}") # [5.,7.,9.]
print(f"向量相乘: {u * v}") # [4.,10.,18.] (Hadamard积)
# 数乘运算
print(f"数乘: {2 * u}") # [2.,4.,6.]
# 点积运算
print(f"点积: {torch.dot(u, v)}")
