当前位置: 首页 > news >正文

深度学习入门到实战:用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学院。

http://www.xdnf.cn/news/583903.html

相关文章:

  • 使用 A2A Python SDK 实现 CurrencyAgent
  • 开闭原则 (Open/Closed Principle, OCP)
  • leetcode hot100刷题日记——10.螺旋矩阵
  • day33 python深度学习入门
  • jmeter登录接口生成一批token并写入csv文件
  • 浪潮Inspur服务器产品线概述
  • 【paddle】常见的数学运算
  • Ubuntu 22.04上升级npm版本
  • 升级node@22后运行npm install报错 distutils not found
  • canvas(三)-动画3d
  • iisARR负均衡
  • 【IDEA问题】springboot本地启动应用报错:程序包不存在;找不到符号
  • 在react项目中使用andt日期组件,选择周和季度,直接获取所对应的日期区间
  • C++ HTTP框架推荐
  • 人脸识别备案开启安全防护模式!紧跟《办法》!
  • uni-app学习笔记九-vue3 v-for指令
  • redis Pub/Sub 简介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)
  • 【C++20新特性】ranges::sort()使用方法,优势,注意点
  • 【1004. 最大连续1的个数 III】
  • ai之pdf解析工具 PPStructure 还是PaddleOCR
  • 火山引擎火山云带宽价格
  • 【工作流】Fastgpt配置豆包模型-火山引擎
  • Github 2025-05-22Go开源项目日报 Top10
  • 【COMPUTEX 2025观察】NVIDIA开放NVLink:一场重构AI算力版图的“阳谋“
  • Go File多终端数据同步技术全解:跨设备数据管理实战指南与复杂场景处理过程
  • PostgreSQL14 +patroni+etcd+haproxy+keepalived 集群部署指南
  • C#在 .NET 9.0 中启用二进制序列化:配置、风险与替代方案
  • 模型剪枝的定义与核心作用
  • 硬件开发复盘实战指南
  • CTF签到题