为什么在Python/PyTorch中需要两次import导入torchvision相关模块?
PyTorch torchvision 导入写法说明
两种导入写法均符合Python语法规范,添加第二行导入的核心作用是简化后续代码书写,降低冗余。
两种导入方式的具体区别如下:
- 仅使用
import torchvision时的调用规则
第一行导入已经将整个torchvision包引入当前运行环境,确实包含transforms、datasets等全部子模块,但调用时必须书写完整的模块路径:# 必须携带torchvision前缀才能正常调用子模块 img_transform = torchvision.transforms.ToTensor() mnist_data = torchvision.datasets.MNIST(root="./dataset", train=True, download=True) - 新增
from torchvision import transforms, datasets后的调用规则
这行代码的作用是将transforms、datasets两个子模块单独引入当前代码的命名空间,后续调用时可以省略父模块前缀,写法更简洁:# 无需携带torchvision前缀即可直接调用 img_transform = transforms.ToTensor() mnist_data = datasets.MNIST(root="./dataset", train=True, download=True)
补充说明:该导入规则是Python的通用语法,并非PyTorch框架独有。你可以根据实际开发场景选择导入方式:如果代码中仅少量调用torchvision的子模块,可只保留第一行导入;如果频繁调用这两个子模块,添加第二行导入可以大幅减少重复代码。如果当前代码中存在和transforms、datasets重名的变量/模块,建议保留完整前缀避免命名冲突。
内容的提问来源于stack exchange,提问作者Ross
相关产品推荐
相关产品推荐

