欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > PyTorch 深度学习快速入门教程

PyTorch 深度学习快速入门教程

2025/3/10 18:26:12 来源:https://blog.csdn.net/weixin_50993868/article/details/145990120  浏览:    关键词:PyTorch 深度学习快速入门教程

PyTorch 深度学习快速入门教程 🚀

PyTorch 是一个 灵活且易用 的深度学习框架,支持 动态图计算,广泛用于 学术研究工业应用。本教程将带你快速掌握 PyTorch 的 基本用法,涵盖 张量(Tensor)操作自动求导(Autograd)构建神经网络 以及 模型训练


1. 安装 PyTorch 🔧

在终端或命令行中运行以下命令安装 PyTorch:

pip install torch torchvision torchaudio

安装 CUDA 版本(如果有 NVIDIA GPU)

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

🔹 可前往 PyTorch 官网选择合适版本:https://pytorch.org/get-started/locally/


2. PyTorch 基础:张量(Tensor) 🧮

张量(Tensor)是 PyTorch 的 核心数据结构,类似于 NumPy 的 ndarray,但 支持 GPU 加速

创建张量

import torch# 直接创建
x = torch.tensor([[1, 2], [3, 4]])
print(x)# 全 0 / 全 1 / 随机张量
zeros = torch.zeros((2, 3))
ones = torch.ones((2, 3))
rand = torch.rand((2, 3))  # 0-1 之间的随机数
print(zeros, ones, rand)

张量运算

a = torch.tensor([1.0, 2.0, 3.0])
b = torch.tensor([4.0, 5.0, 6.0])# 加法
print(a + b)# 矩阵乘法
mat1 = torch.rand((2, 3))
mat2 = torch.rand((3, 2))
print(torch.matmul(mat1, mat2))  # 矩阵相乘# 维度变换
x = torch.randn(4, 4)
y = x.view(2, 8)  # 重新调整形状
print(y.shape)

使用 GPU

device = "cuda" if torch.cuda.is_available() else "cpu"
x = torch.rand((3, 3)).to(device)  # 发送到 GPU
print(x)

3. 自动求导(Autograd) 🔄

PyTorch 的 autograd反向传播(Backpropagation) 变得 自动化,是 深度学习优化 的核心。

计算梯度

x = torch.tensor(2.0, requires_grad=True)  # 需要计算梯度
y = x ** 3 + 3 * x# 反向传播
y.backward()# x 的梯度 dy/dx = 3x^2 + 3
print(x.grad)  # 输出:15.0

4. 构建神经网络 🧠

PyTorch 提供了 torch.nn 用于构建 神经网络模型

定义一个简单的 MLP(多层感知机)

import torch.nn as nn
import torch.nn.functional as Fclass MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.fc1 = nn.Linear(784, 128)  # 输入层(28x28 展平为 784 维)self.fc2 = nn.Linear(128, 10)   # 输出 10 类def forward(self, x):x = F.relu(self.fc1(x))  # ReLU 激活x = self.fc2(x)  # 输出层(未加 Softmax)return x

5. 训练神经网络 🎯

使用 MNIST 手写数字 数据集,训练一个简单的分类器。

加载数据集

from torchvision import datasets, transforms
from torch.utils.data import DataLoader# 数据预处理
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,))
])# 下载数据集
train_dataset = datasets.MNIST(root="./data", train=True, transform=transform, download=True)
test_dataset = datasets.MNIST(root="./data", train=False, transform=transform, download=True)# 创建 DataLoader
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

定义模型、损失函数、优化器

import torch.optim as optimmodel = MLP().to(device)  # 使用 GPU
criterion = nn.CrossEntropyLoss()  # 交叉熵损失
optimizer = optim.Adam(model.parameters(), lr=0.001)  # Adam 优化器

训练模型

for epoch in range(5):  # 训练 5 轮for images, labels in train_loader:images = images.view(-1, 784).to(device)  # 展平成 (batch, 784)labels = labels.to(device)# 前向传播outputs = model(images)loss = criterion(outputs, labels)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()print(f"Epoch [{epoch+1}/5], Loss: {loss.item():.4f}")

测试模型

correct = 0
total = 0
with torch.no_grad():for images, labels in test_loader:images = images.view(-1, 784).to(device)labels = labels.to(device)outputs = model(images)_, predicted = torch.max(outputs, 1)  # 预测类别total += labels.size(0)correct += (predicted == labels).sum().item()print(f"Test Accuracy: {100 * correct / total:.2f}%")

6. 保存与加载模型 💾

保存模型

torch.save(model.state_dict(), "model.pth")

加载模型

model.load_state_dict(torch.load("model.pth"))

7. PyTorch 进阶

🔹 CNN(卷积神经网络):用于图像分类
🔹 RNN/LSTM(循环神经网络):用于 NLP、时间序列预测
🔹 Transformer/BERT:用于 NLP 任务
🔹 分布式训练:适用于大型数据集

你可以查阅官方教程深入学习:https://pytorch.org/tutorials/


8. 结语

你现在已经掌握了 PyTorch 的基本使用 🎉,可以尝试搭建自己的 深度学习模型!如果有任何问题,欢迎随时交流 😃🚀

版权声明:

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

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

热搜词