Python 第三方库:PyTorch(动态计算图的深度学习框架)

PyTorch 是由 Facebook AI Research(FAIR)团队于 2016 年开源的深度学习框架。

它以动态图(Dynamic Computation Graph)、易用性和科研友好性著称,广泛应用于学术研究和工业界的深度学习任务。

PyTorch 提供了与 NumPy 类似的张量操作接口,同时具备自动求导功能,支持 GPU 加速,并能与 Python 生态(NumPy、SciPy、scikit-learn 等)紧密结合。

安装:CPU 版本

nginx 复制代码
pip install torch torchvision torchaudio

GPU 版本(需 CUDA 环境):

官方推荐使用官网安装指令生成器:PyTorch Get Started。

示例(CUDA 11.8):

perl 复制代码
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

常见应用场景:

(1)学术研究:灵活的动态图机制适合快速试验新模型。

(2)计算机视觉:通过 torchvision 提供丰富的数据集与预训练模型。

(3)自然语言处理:HuggingFace Transformers 等主流 NLP 库均基于 PyTorch。

(4)强化学习:易于构建复杂的交互式训练流程。

(5)工业部署:通过 TorchScript、ONNX、LibTorch 可扩展到生产环境。

◆ ◆

核心概念

1、张量(Tensor)

PyTorch 的核心数据结构,类似 NumPy 数组,但支持 GPU 加速。

2、动态计算图(Define-by-Run)

与 TensorFlow 1.x 的静态图不同,PyTorch 在运行时构建计算图,更加直观灵活。

3、自动求导(Autograd)

torch.autograd 自动追踪张量操作,支持梯度反向传播。

4、模块化神经网络(torch.nn)

提供丰富的层、损失函数和优化器,便于快速构建复杂模型。

5、数据加载(torch.utils.data)

提供 Dataset 和 DataLoader 抽象,支持批处理、打乱和并行加载。

6、部署支持

TorchScript:将动态图转换为可优化的静态图。

ONNX:跨框架导出与部署。

◆ ◆

应用举例

例 1:张量运算

go 复制代码
import torch
x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)y = torch.tensor([[5, 6], [7, 8]], dtype=torch.float32)
print(torch.matmul(x, y))  # 矩阵乘法

例 2:自动求导

makefile 复制代码
import torch
x = torch.ones(2, 2, requires_grad=True)y = x + 2z = y * y * 3out = z.mean()
out.backward()  # 反向传播print(x.grad)   # 梯度

例 3:定义神经网络

python 复制代码
import torchimport torch.nn as nnimport torch.nn.functional as F
class Net(nn.Module):    def __init__(self):        super(Net, self).__init__()        self.fc1 = nn.Linear(784, 128)        self.fc2 = nn.Linear(128, 10)
    def forward(self, x):        x = F.relu(self.fc1(x))        return self.fc2(x)
net = Net()print(net)

例 4:训练循环(以 MNIST 为例)

python 复制代码
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms
# 数据预处理transform = transforms.Compose([transforms.ToTensor()])
train_loader = torch.utils.data.DataLoader(    datasets.MNIST('.', train=True, download=True, transform=transform),    batch_size=64, shuffle=True)
# 模型与优化器model = Net()optimizer = optim.Adam(model.parameters(), lr=0.001)criterion = nn.CrossEntropyLoss()
# 训练一个 epochfor data, target in train_loader:    optimizer.zero_grad()    output = model(data.view(-1, 784))    loss = criterion(output, target)    loss.backward()    optimizer.step()
print("训练完成")

例 5:保存与加载模型

makefile 复制代码
# 保存参数torch.save(model.state_dict(), "model.pth")
# 加载参数new_model = Net()new_model.load_state_dict(torch.load("model.pth"))new_model.eval()

例 6:GPU 加速

makefile 复制代码
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model.to(device)

◆ ◆

常用模块速览

torch.Tensor

张量数据结构。

torch.autograd

自动求导系统。

torch.nn

神经网络模块。

torch.optim

优化器(SGD、Adam 等)。

torchvision

计算机视觉工具包。

torch.utils.data

数据加载工具。

torch.jit

TorchScript(部署)。

torch.onnx

ONNX 导出。

📘 小结

PyTorch 是动态计算图驱动的深度学习框架,以灵活性和易用性著称。

它不仅在学术研究中占据主导地位,也通过 TorchScript、ONNX 等工具进入工业部署领域。

凭借强大的生态系统(如 torchvision、HuggingFace Transformers、PyTorch Lightning),PyTorch 已成为科研与工程并重的主流 AI 框架。

"点赞有美意,赞赏是鼓励"

相关推荐
天涯明月19931 分钟前
Ray 架构解析——以动态任务图统一 AI 计算的分布式框架
大数据·人工智能·分布式·架构·ray
无崖子06 分钟前
【强化学习论文解读】Expert Behavior Prior Reinforcement Learning
人工智能·深度学习·神经网络
clorinda7 分钟前
第一篇:OpenCV特征检测与SIFT特征匹配
人工智能·opencv·计算机视觉
老一岁7 分钟前
c问题总结(2)
c语言·开发语言
Ming_studying8 分钟前
Python批量压缩图片:支持JPG_PNG_WebP、尺寸限制与CSV报告
开发语言·图像处理·python·pillow·图片压缩
大熊背8 分钟前
ISP图像处理中大数乘法溢出处理(一)
人工智能·python·算法·溢出处理
风月说与山鬼12 分钟前
JS闭包详解
开发语言·javascript
何以解忧,唯有..12 分钟前
Python协程详解:从生成器到async/await的完整指南
开发语言·python
精彩AI说14 分钟前
ChatGPT回答内容总是漏重点怎么办?需求拆分、检查清单与二次补充方法
人工智能·chatgpt
奶茶树18 分钟前
【C++】13. C++11新特性【上】
c语言·开发语言·c++·git·github