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 框架。

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

相关推荐
EkihzniY1 天前
AI+OCR:解锁数字化新视界
人工智能·ocr
岁忧1 天前
GoLang五种字符串拼接方式详解
开发语言·爬虫·golang
tyatyatya1 天前
MATLAB基础数据类型教程:数值型/字符型/逻辑型/结构体/元胞数组全解析
开发语言·matlab
东哥说-MES|从入门到精通1 天前
GenAI-生成式人工智能在工业制造中的应用
大数据·人工智能·智能制造·数字化·数字化转型·mes
程序员小远1 天前
软件测试之单元测试详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
心无旁骛~1 天前
python多进程和多线程问题
开发语言·python
铅笔侠_小龙虾1 天前
深度学习理论推导--梯度下降法
人工智能·深度学习
星云数灵1 天前
使用Anaconda管理Python环境:安装与验证Pandas、NumPy、Matplotlib
开发语言·python·数据分析·pandas·教程·环境配置·anaconda
kaikaile19951 天前
基于遗传算法的车辆路径问题(VRP)解决方案MATLAB实现
开发语言·人工智能·matlab
lpfasd1231 天前
第1章_LangGraph的背景与设计哲学
人工智能