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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚客AI

你的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值