pytorch torchvision.models

torchvision.models

模型子包包含以下模型体系结构的定义:

目录

torchvision.models

Alexnet

VGG

ResNet

SqueezeNet

DenseNet

Inception v3

GoogLeNet

可以通过调用其构造函数来构造具有随机权重的模型:

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()
googlenet = models.googlenet()

可以使用 PyTorch 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)
googlenet = models.googlenet(pretrained=True)

对预先训练的模型进行实例化将其权重下载到缓存目录。 可以使用TORCH_MODEL_ZOO 环境变量设置此目录。 有关详细信息,请参阅 torch.utils.model_zoo.load_url()。

某些模型使用具有不同 training 和 evaluation 行为的模块,例如批量标准化。 要在这些模式之间切换,根据需要使用model.train()或 model.eval()。 有关详细信息,请参阅 train() 或 eval()。

所有预先训练的模型都希望输入图像以相同的方式归一化,即小批量的3通道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 示例 中找到

 # Data loading code
    traindir = os.path.join(args.data, 'train')
    valdir = os.path.join(args.data, 'val')
    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                     std=[0.229, 0.224, 0.225])

    train_loader = torch.utils.data.DataLoader(
        datasets.ImageFolder(traindir, transforms.Compose([
            transforms.RandomSizedCrop(224), # 图片随机裁剪为224*224大小
            transforms.RandomHorizontalFlip(), # 以概率0.5对图片进行水平翻转
            transforms.ToTensor(),
            normalize,
        ])),

附:Pytorch:transforms的二十二个方法 对图片进行tranforms操作,增强数据的灵活性

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
GoogleNet 30.22 10.47

Alexnet

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

AlexNet模型架构来自“One weird trick for parallelizing convolutional neural networks”论文。

Parameters: pretrained (bool) –  如果为 True, 返回在ImageNet上预先训练的模型。

VGG

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

VGG 11-layer model (configuration “A”)

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

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

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

VGG 13-layer model (configuration “B”)

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

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

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

VGG 16-layer model (configuration “D”)

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

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

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

VGG 19-layer model (configuration “E”)

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

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

ResNet

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

Constructs a ResNet-18 model.

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

Constructs a ResNet-34 model.

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

Constructs a ResNet-50 model.

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

Constructs a ResNet-101 model.

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

Constructs a ResNet-152 model.

SqueezeNet

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

SqueezeNet 模型结构来自 “SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size” 这篇文章。

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

来自 SqueezeNet 官方的 SqueezeNet 1.1 模型,与 SqueezeNet 1.0 相比,SqueezeNet 1.1 的计算量减少了2.4倍,参数略少,而且没有牺牲精度。

DenseNet

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

Densenet-121 model from “Densely Connected Convolutional Networks”

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

Densenet-169 model from “Densely Connected Convolutional Networks”

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

Densenet-161 model from “Densely Connected Convolutional Networks”

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

Densenet-201 model from “Densely Connected Convolutional Networks”

Inception v3

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

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

重要提示:与其他网络模型相比,inception_v3需要尺寸为N x 3 x 299 x 299的张量,请确保图像大小相应。

Parameters:
  • pretrained (bool) – 如果为 True, 返回在ImageNet上预先训练的模型。
  • transform_input (bool) – 如果为 True, 根据与之相关的方法预处理输入。
  • trained on ImageNet. Default (was) – False

GoogLeNet

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

GoogLeNet (Inception v1) model architecture from “Going Deeper with Convolutions”.

你可能感兴趣的:(python)