深度学习篇---torch 和 torchvision
PyTorch生态中,torch是基础框架,提供张量计算、自动微分和神经网络构建等核心功能。torchvision是视觉专用工具集,包含预训练模型、数据集加载、图像处理等模块。两者协作完成视觉任务:torch提供底层计算支持,torchvision处理上层应用逻辑。典型流程包括数据准备(torchvision)、模型构建(torch.nn)、训练优化(torch.optim)等环节,形成完整的深度
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):一套强大的图像预处理和数据增强工具。常用的操作有Resize、CenterCrop、ToTensor、Normalize等。你可以把它们组合成一个流程,在数据送入模型前进行统一处理。 -
工具函数 (
torchvision.utils):提供一些实用工具,比如将多张图片拼接成网格以便可视化的make_grid,和将张量保存为图片文件的save_image。
🤝 它们的协作关系
一句话总结它们的关系:torch 构建了引擎和底盘,torchvision 则在上面为你组装好了方向盘、座椅和轮子,让你能直接开走这辆车。
在一个典型的图像分类任务中,它们的配合流程是这样的:
-
准备数据:用
torchvision.datasets加载数据集,并用torchvision.transforms定义图像预处理步骤。 -
创建模型:用
torchvision.models加载一个预训练的 ResNet 模型,然后用torch.nn修改其输出层以适应当前任务。 -
定义训练组件:通过
torch.nn定义损失函数(如交叉熵损失),通过torch.optim选择优化器。 -
构建数据流:用
torch.utils.data.DataLoader将数据集打包,实现分批次、多线程加载。 -
训练与评估:将数据放入模型,进行前向/反向传播,更新参数,整个过程都由
torch的核心框架驱动。
✨ Mermaid 总结框图

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



所有评论(0)