【PyTorch1.0】torchvision文档翻译(三)——torchvision.models

原文:https://pytorch.org/docs/stable/torchvision/models.html

models子包定义了以下模型架构:

你可以通过调用以下构造函数构造随机权重的模型:

import torchvision.models as models
resnet18 = models.resnet18()
alexnet = models.alexnet()
vgg16 = models.vgg16()
squeezenet = models.squeezenet1_0()
densenet = models.densenet161()
inception = models.inception_v3()

我们在torch.utils.model_zoo中提供了预训练模型。预训练模型可以通过传递参数pretrained=True构造:

import torchvision.models as models
resnet18 = models.resnet18(pretrained=True)
alexnet = models.alexnet(pretrained=True)
squeezenet = models.squeezenet1_0(pretrained=True)
vgg16 = models.vgg16(pretrained=True)
densenet = models.densenet161(pretrained=True)
inception = models.inception_v3(pretrained=True)

定义预训练模型时会把权值下载到一个缓存文件夹中,这个缓存文件可以通过环境变量TORCH_MODEL_ZOO来指定。更多细节见torch.utils.model_zoo.load_url()

有些模型在训练和测试阶段用到了不同的模块,例如批标准化(batch normalization)。使用model.train()model.eval()可以切换到相应的模式。更多细节见train()eval()

所有的预训练模型都要求输入图片以相同的方式进行标准化,即:小批(mini-batch)三通道RGB格式(3 x H x W),其中H和W不得小于224。图片加载时像素值的范围应在[0, 1]内,然后通过指定mean = [0.485, 0.456, 0.406]std = [0.229, 0.224, 0.225]进行标准化,例如:

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])

imagenet的示例中可以看到标准化的一个应用。

下表是ImageNet单次224x224中心裁剪的错误率。

网络Top-1错误率(%)Top-5错误率(%)
AlexNet43.4520.91
VGG-1130.9811.37
VGG-1330.0710.75
VGG-1628.419.62
VGG-1927.629.12
带有批标准化的VGG-1129.6210.19
带有批标准化的VGG-1328.459.63
带有批标准化的VGG-1626.638.50
带有批标准化的VGG-1925.768.15
ResNet-1830.2410.92
ResNet-3426.708.58
ResNet-5023.857.13
ResNet-10122.636.44
ResNet-15221.695.94
SqueezeNet 1.041.9019.58
SqueezeNet 1.141.8119.38
Densenet-12125.357.83
Densenet-16924.007.00
Densenet-20122.806.43
Densenet-16122.356.20
Inception v322.556.44

Alexnet

torchvision.models.alexnet(pretrained=False, **kwargs)

AlexNet模型,参见论文《One weird trick…》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型

VGG

torchvision.models.vgg11(pretrained=False, **kwargs)

VGG11模型。(论文中的“A”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg11_bn(pretrained=False, **kwargs)

VGG11模型,带有批标准化。(论文中的“A”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg13(pretrained=False, **kwargs)

VGG13模型。(论文中的“B”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg13_bn(pretrained=False, **kwargs)

VGG13模型,带有批标准化。(论文中的“B”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg16(pretrained=False, **kwargs)

VGG16模型。(论文中的“D”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg16_bn(pretrained=False, **kwargs)

VGG16模型,带有批标准化。(论文中的“D”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg19(pretrained=False, **kwargs)

VGG19模型。(论文中的“E”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.vgg19_bn(pretrained=False, **kwargs)

VGG19模型,带有批标准化。(论文中的“E”模型)

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型

ResNet

torchvision.models.resnet18(pretrained=False, **kwargs)

构造ResNet-18模型。

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.resnet34(pretrained=False, **kwargs)

构造ResNet-34模型。

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.resnet50(pretrained=False, **kwargs)

构造ResNet-50模型。

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.resnet101(pretrained=False, **kwargs)

构造ResNet-101模型。

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.resnet152(pretrained=False, **kwargs)

构造ResNet-152模型。

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型

SqueezeNet

torchvision.models.squeezenet1_0(pretrained=False, **kwargs)

SqueezeNet模型,参见论文《SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.squeezenet1_1(pretrained=False, **kwargs)

SqueezeNet 1.1模型,参见SqueezeNet官方仓库。SqueezeNet 1.1比SqueezeNet 1.0节约2.4倍的计算量,参数也略少,然而精度未做牺牲。

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型

DenseNet

torchvision.models.densenet121(pretrained=False, **kwargs)

Densenet-121模型,参见《Densely Connected Convolutional Networks》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.densenet169(pretrained=False, **kwargs)

Densenet-169模型,参见《Densely Connected Convolutional Networks》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.densenet161(pretrained=False, **kwargs)

Densenet-161模型,参见《Densely Connected Convolutional Networks》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
torchvision.models.densenet201(pretrained=False, **kwargs)

Densenet-201模型,参见《Densely Connected Convolutional Networks》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型

Inception v3

torchvision.models.inception_v3(pretrained=False, **kwargs)

Inception v3模型,参见《Rethinking the Inception Architecture for Computer Vision》

参数:pretrained (bool) – 如果设置为True,返回ImageNet预训练模型
<think>嗯,用户现在的问题是想要在一个Python 3.6+的环境中安装一系列特定的库,包括matplotlib、PyTorch 1.0torchvision 0.2.2、tensorboardX、progress和numpy。根据用户提供的引用内容,特别是引用[1]和[2],用户可能已经尝试过使用conda创建环境并安装这些包,但可能遇到了依赖冲突或其他问题,比如引用[3]中提到的各种安装问题,比如版本不一致、包冲突等。 首先,我需要确认用户的需求是正确安装这些特定版本的库,尤其是PyTorch 1.0torchvision 0.2.2,这可能需要特定版本的CUDA工具包或其他依赖项。用户之前可能尝试过使用conda命令创建环境,但可能由于版本冲突或环境配置不正确导致安装失败,比如PyTorchtorchvision的版本兼容性,或者CUDA版本的问题。 接下来,我需要考虑如何正确指定这些库的版本。例如,PyTorch 1.0可能需要特定的cudatoolkit版本,如引用[1]和[2]中提到的cudatoolkit=10.0.130。同时,用户可能是在Windows系统下,因为路径中提到了D:\anaconda,所以需要确保安装命令适用于Windows。此外,用户可能希望使用conda来管理环境,但也可以考虑使用pip作为备用方案,尤其是当某些包在conda仓库中不可用或版本不匹配时。 另外,用户提到的tensorboardX、progress和numpy这些库,通常是比较容易安装的,但需要确保它们与PyTorch和其他库的版本兼容。特别是numpy,可能会有版本依赖的问题,需要指定合适的版本以避免冲突。 用户可能遇到的问题包括:conda环境创建失败,包版本冲突,CUDA版本不兼容,或者权限问题。引用[3]中的抱怨显示用户可能已经多次尝试安装和卸载,导致环境混乱,因此建议创建一个新的干净环境来避免残留的依赖问题。 在回答中,我应该分步骤指导用户如何创建新环境,安装指定版本的PyTorchtorchvision,并处理可能的依赖问题。同时,需要提醒用户注意conda和pip的混合使用可能导致的问题,如引用[3]中提到的依赖冲突。此外,需要验证安装后的环境,确保所有库正确安装且版本匹配。 最后,用户可能需要知道如何检查已安装的包,如何激活环境,以及如何解决常见的安装错误,比如权限问题或网络问题导致的安装失败。引用[1]和[2]中的命令可以作为参考,但需要根据用户的实际需求进行调整,比如Python版本和CUDA版本的选择。</think>根据引用[1][2]提供的环境配置方案,结合Python 3.6+环境要求,推荐通过Anaconda创建独立环境管理依赖。以下是具体操作步骤: ### 专业级安装流程 1. **创建专用虚拟环境** ```bash conda create -n pytorch1_env python=3.6 numpy matplotlib ninja conda activate pytorch1_env ``` *注:Python 3.6.13是PyTorch 1.0官方验证版本[^1]* 2. **安装PyTorch核心套件** ```bash # 根据CUDA版本选择(需与显卡驱动匹配) conda install pytorch=1.0.1 torchvision=0.2.2 cudatoolkit=10.0 -c pytorch ``` *无GPU设备时替换为:* ```bash conda install pytorch=1.0.1 torchvision=0.2.2 cpuonly -c pytorch ``` 3. **安装辅助工具包** ```bash conda install tensorboardx=2.1 progress=1.5 ``` 4. **版本验证脚本** ```python import torch, torchvision print(f"PyTorch: {torch.__version__} CUDA: {torch.version.cuda}") print(f"TorchVision: {torchvision.__version__}") ``` ### 依赖矩阵参考 | 包名称 | 必须版本 | 依赖约束 | |---------------|-------------|------------------------| | PyTorch | 1.0.1 | CUDA ≤10.2, Python ≤3.7| | torchvision | 0.2.2 | 对应PIL≤6.2.0 | | tensorboardX | ≥2.1 | protobuf≤3.20 | | numpy | ≤1.19.4 | 兼容Python 3.6 | ### 疑难解决方案 **Q1: 出现`ImportError: DLL load failed`** - 检查CUDA工具包版本是否匹配显卡驱动(NVIDIA-SMI显示驱动版本) - 执行`conda list cudatoolkit`验证cudatoolkit=10.0.130 **Q2: torchvision图像处理异常** - 降级Pillow包:`pip install Pillow==6.2.0` - 禁用JPEG支持:`conda install -c pytorch jpeg=9d` **Q3: 跨平台兼容处理** - 导出环境配置:`conda env export > environment.yml` - 重建环境:`conda env create -f environment.yml` ### 引用验证 ```bash # 检查环境路径(Windows) where python # 输出应为:D:\anaconda\envs\pytorch1_env\python.exe # 查看CUDA状态 python -c "import torch; print(torch.cuda.is_available())" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值