欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 深度学习入门到实战:用PyTorch打通数学、张量与模型训练全链路​

深度学习入门到实战:用PyTorch打通数学、张量与模型训练全链路​

2025/5/23 6:13:08 来源:https://blog.csdn.net/weixin_39907681/article/details/148140453  浏览:    关键词:深度学习入门到实战:用PyTorch打通数学、张量与模型训练全链路​

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。

一. 人工智能、机器学习与深度学习的关系

1.1 概念层次解析

  • 人工智能(AI):使机器模拟人类智能的广义领域

  • 机器学习(ML):通过数据驱动的方法让系统自动改进性能

  • 深度学习(DL):基于多层神经网络的机器学习子领域

关系示意图

人工智能 ⊃ 机器学习 ⊃ 深度学习

image.png

二. 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 标量、向量、张量

image.png

代码示例:张量创建与操作

# 创建张量  
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 神经元数学模型

image.png

  • 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 训练要素定义

image.png

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 常见激活函数对比

image.png

7.2 反向传播数学原理

链式法则示例:

image.png

其中 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)

image.png

:本文代码基于PyTorch 2.0+版本实现,运行前需安装:

pip install torch torchvision matplotlib

更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词