torch 和 torchvision 是 PyTorch 生态中最核心的两个库。简单来说,torch 是基础框架,负责张量计算和自动微分;而 torchvision 是专注于视觉任务的工具集,让你能方便地加载数据、使用预训练模型和进行图像处理

🔥 torch:深度学习框架的核心

你可以把它看作整个 PyTorch 世界的基石。它的核心能力包括:

  • 张量计算:类似 NumPy 的多维数组,但可以放到 GPU 上加速计算。

  • 自动微分 (torch.autograd):这是训练神经网络的关键。它能自动计算梯度,帮你省去复杂的手动求导。

  • 神经网络模块 (torch.nn):提供了构建模型的各种“积木”,比如全连接层、卷积层、激活函数、损失函数等。

  • 优化器 (torch.optim):包含各种优化算法,如 Adam、SGD,用于根据梯度更新模型参数。

  • 数据加载 (torch.utils.data):提供了 Dataset 和 DataLoader 工具,能高效地加载、预处理和批量化你的数据。

  • 模型部署 (torch.jit):可以将 Python 模型编译成独立、可优化的 TorchScript 格式,方便在生产环境中部署,尤其是在 C++ 环境下。

  • 分布式训练 (torch.distributed):支持在多块 GPU 或多台机器上并行训练超大规模的模型。

📸 torchvision:视觉任务的专属工具箱

torchvision 是 PyTorch 的官方视觉扩展库,专门处理图像和视频相关任务。它建立在 torch 之上,让视觉应用的开发变得非常便捷,主要由四个部分组成:

  • 预训练模型 (torchvision.models):提供大量经典和前沿的模型架构,并支持加载在 ImageNet 等海量数据上预训练好的权重。比如 ResNet、EfficientNet 用于图像分类,Mask R-CNN 用于实例分割。这是快速落地 AI 应用的关键

  • 数据集 (torchvision.datasets):内置了众多公开学术数据集的加载接口,如 MNIST、CIFAR、COCO。你只需要几行代码就能自动下载并加载数据,非常方便。

  • 图像变换 (torchvision.transforms):一套强大的图像预处理和数据增强工具。常用的操作有 ResizeCenterCropToTensorNormalize 等。你可以把它们组合成一个流程,在数据送入模型前进行统一处理。

  • 工具函数 (torchvision.utils):提供一些实用工具,比如将多张图片拼接成网格以便可视化的 make_grid,和将张量保存为图片文件的 save_image


🤝 它们的协作关系

一句话总结它们的关系:torch 构建了引擎和底盘,torchvision 则在上面为你组装好了方向盘、座椅和轮子,让你能直接开走这辆车。

在一个典型的图像分类任务中,它们的配合流程是这样的:

  1. 准备数据:用 torchvision.datasets 加载数据集,并用 torchvision.transforms 定义图像预处理步骤。

  2. 创建模型:用 torchvision.models 加载一个预训练的 ResNet 模型,然后用 torch.nn 修改其输出层以适应当前任务。

  3. 定义训练组件:通过 torch.nn 定义损失函数(如交叉熵损失),通过 torch.optim 选择优化器。

  4. 构建数据流:用 torch.utils.data.DataLoader 将数据集打包,实现分批次、多线程加载。

  5. 训练与评估:将数据放入模型,进行前向/反向传播,更新参数,整个过程都由 torch 的核心框架驱动。


✨ Mermaid 总结框图

这个图清晰地展示了 torch 作为底盘提供计算、求导、优化等核心能力,而 torchvision 作为上层的应用模块,通过模型、数据和图像处理工具,让视觉任务的开发更加便捷。

Logo

免费领 100 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐