Models

The models subpackage contains definitions for the following model architectures:

You can construct a model with random weights by calling its constructor:

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

We provide pre-trained models, using the PyTorch torch.utils.model_zoo. These can be constructed by passing 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.densenet_161(pretrained=True)
inception = models.inception_v3(pretrained=True)

All pre-trained models expect input images normalized in the same way, i.e. mini-batches of 3-channel RGB images of shape (3 x H x W), where H and W are expected to be at least 224. The images have to be loaded in to a range of [0, 1] and then normalized using mean = [0.485, 0.456, 0.406] and std = [0.229, 0.224, 0.225]. You can use the following transform to normalize:

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

An example of such normalization can be found in the imagenet example here

ImageNet 1-crop error rates (224x224)

Network Top-1 error Top-5 error
AlexNet 43.45 20.91
VGG-11 30.98 11.37
VGG-13 30.07 10.75
VGG-16 28.41 9.62
VGG-19 27.62 9.12
VGG-11 with batch normalization 29.62 10.19
VGG-13 with batch normalization 28.45 9.63
VGG-16 with batch normalization 26.63 8.50
VGG-19 with batch normalization 25.76 8.15
ResNet-18 30.24 10.92
ResNet-34 26.70 8.58
ResNet-50 23.85 7.13
ResNet-101 22.63 6.44
ResNet-152 21.69 5.94
SqueezeNet 1.0 41.90 19.58
SqueezeNet 1.1 41.81 19.38
Densenet-121 25.35 7.83
Densenet-169 24.00 7.00
Densenet-201 22.80 6.43
Densenet-161 22.35 6.20
Inception v3 22.55 6.44

Alexnet

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

AlexNet model architecture from the “One weird trick...” paper.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet

VGG

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

VGG 11-layer model (configuration “A”)

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg11_bn(pretrained=False, **kwargs)[source]

VGG 11-layer model (configuration “A”) with batch normalization

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg13(pretrained=False, **kwargs)[source]

VGG 13-layer model (configuration “B”)

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg13_bn(pretrained=False, **kwargs)[source]

VGG 13-layer model (configuration “B”) with batch normalization

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg16(pretrained=False, **kwargs)[source]

VGG 16-layer model (configuration “D”)

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg16_bn(pretrained=False, **kwargs)[source]

VGG 16-layer model (configuration “D”) with batch normalization

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg19(pretrained=False, **kwargs)[source]

VGG 19-layer model (configuration “E”)

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg19_bn(pretrained=False, **kwargs)[source]

VGG 19-layer model (configuration ‘E’) with batch normalization

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet

ResNet

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

Constructs a ResNet-18 model.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet34(pretrained=False, **kwargs)[source]

Constructs a ResNet-34 model.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet50(pretrained=False, **kwargs)[source]

Constructs a ResNet-50 model.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet101(pretrained=False, **kwargs)[source]

Constructs a ResNet-101 model.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet152(pretrained=False, **kwargs)[source]

Constructs a ResNet-152 model.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet

SqueezeNet

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

SqueezeNet model architecture from the “SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size” paper.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.squeezenet1_1(pretrained=False, **kwargs)[source]

SqueezeNet 1.1 model from the official SqueezeNet repo. SqueezeNet 1.1 has 2.4x less computation and slightly fewer parameters than SqueezeNet 1.0, without sacrificing accuracy.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet

DensetNet

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

Densenet-121 model from “Densely Connected Convolutional Networks”

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.densenet169(pretrained=False, **kwargs)[source]

Densenet-169 model from “Densely Connected Convolutional Networks”

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.densenet161(pretrained=False, **kwargs)[source]

Densenet-161 model from “Densely Connected Convolutional Networks”

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.densenet201(pretrained=False, **kwargs)[source]

Densenet-201 model from “Densely Connected Convolutional Networks”

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet

Inception v3

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

Inception v3 model architecture from “Rethinking the Inception Architecture for Computer Vision”.

Parameters:pretrained (bool) – If True, returns a model pre-trained on ImageNet