深度学习入门到实战:用PyTorch打通数学、张量与模型训练全链路
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。
一. 人工智能、机器学习与深度学习的关系
1.1 概念层次解析
-
人工智能(AI):使机器模拟人类智能的广义领域
-
机器学习(ML):通过数据驱动的方法让系统自动改进性能
-
深度学习(DL):基于多层神经网络的机器学习子领域
关系示意图:
人工智能 ⊃ 机器学习 ⊃ 深度学习
二. PyTorch环境配置
2.1 Conda环境管理
# 创建虚拟环境
conda create -n pytorch_env python=3.9
# 激活环境
conda activate pytorch_env
# 安装PyTorch(根据CUDA版本选择)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia # GPU版本
conda install pytorch torchvision torchaudio cpuonly -c pytorch # CPU版本
2.2 验证安装
import torch
print(torch.__version__) # 输出:2.0.1
print(torch.cuda.is_available()) # 输出:True(GPU可用时)
三. 数学基础与张量操作
3.1 标量、向量、张量
代码示例:张量创建与操作
# 创建张量
x = torch.empty(2, 3) # 未初始化
y = torch.zeros(2, 3, dtype=torch.int32)
z = torch.randn(2, 3) # 标准正态分布
# 数学运算
a = torch.tensor([[1,2],[3,4]], dtype=torch.float32)
b = torch.tensor([[5,6],[7,8]], dtype=torch.float32)
print(a + b) # 逐元素加法
print(a @ b.T) # 矩阵乘法
四. 数据预处理与线性代数
4.1 数据标准化
from torchvision import transforms
transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 应用到数据集
dataset = datasets.CIFAR10(..., transform=transform)
4.2 线性代数核心操作
# 矩阵分解
A = torch.randn(3, 3)
U, S, V = torch.svd(A) # 奇异值分解
# 特征值计算
eigenvalues = torch.linalg.eigvalsh(A)
# 张量缩并
tensor = torch.einsum('ijk,jl->ikl', a, b)
五. 神经网络基础
5.1 神经元数学模型
-
wi:权重
-
bb:偏置(提供平移能力)
-
ff:激活函数
代码示例:单神经元实现
class Neuron(nn.Module): def __init__(self, input_dim): super().__init__() self.linear = nn.Linear(input_dim, 1) self.activation = nn.Sigmoid() def forward(self, x): return self.activation(self.linear(x))
neuron = Neuron(3)
output = neuron(torch.tensor([0.5, -1.2, 0.8]))
六. 模型训练全流程
6.1 训练要素定义
6.2 典型训练循环
model = nn.Sequential( nn.Linear(784, 128), nn.ReLU(), nn.Linear(128, 10)
)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10): for inputs, labels in train_loader: optimizer.zero_grad() outputs = model(inputs.view(-1, 784)) loss = criterion(outputs, labels) loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')
七. 激活函数与反向传播
7.1 常见激活函数对比
7.2 反向传播数学原理
链式法则示例:
其中 z=∑wixi+bz=∑wixi+b,y=f(z)y=f(z)
代码示例:手动实现反向传播
x = torch.tensor(2.0, requires_grad=True)
y = torch.tensor(3.0)
w = torch.tensor(1.0, requires_grad=True)
b = torch.tensor(0.5, requires_grad=True)
# 前向计算
z = w * x + b
loss = (z - y)**2
# 反向传播
loss.backward()
print(w.grad) # 输出:4.0 (∂loss/∂w = 2*(wx + b - y)*x = 2*(2+0.5-3)*2 = 4)
注:本文代码基于PyTorch 2.0+版本实现,运行前需安装:
pip install torch torchvision matplotlib
更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。