torchvision.models

优质
小牛编辑
132浏览
2023-12-01

译者:BXuan694

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

  • AlexNet
  • VGG
  • ResNet
  • SqueezeNet
  • DenseNet
  • Inception v3

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

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预训练模型

最后更新:

类似资料

  • 本文向大家介绍pytorch1.0中torch.nn.Conv2d用法详解,包括了pytorch1.0中torch.nn.Conv2d用法详解的使用技巧和注意事项,需要的朋友参考一下 Conv2d的简单使用 torch 包 nn 中 Conv2d 的用法与 tensorflow 中类似,但不完全一样。 在 torch 中,Conv2d 有几个基本的参数,分别是 in_channels 输入图像的深

  • torchvision.models模块的 子模块中包含以下模型结构。 AlexNet VGG ResNet SqueezeNet DenseNet You can construct a model with random weights by calling its constructor: 你可以使用随机初始化的权重来创建这些模型。 import torchvision.models as

相关阅读