torchvision.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()
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 示例 中找到