神经网络入门实战:(十七)VGG16模型的加载、保存与修改,可以应用到其他网络模型上

VGG16模型的加载、保存与修改

该模型主要是用来 识别 ImageNet 数据集的。

16 的由来:该模型包含16个权重层(13个卷积层和3个全连接层),因此得名VGG16。

模型官网:vgg16 — Torchvision 0.20 documentation

(一) 从官网加载 VGG16 模型

① 在 pycharm 中加载官网 已经训练好 的 VGG16 模型的指令:

  • 使用该网络模型进行 ImageNet 的 1000 种类别的 分类任务(完整权重)

    vgg16_true = torchvision.models.vgg16(weights=torchvision.models.VGG16_Weights.IMAGENET1K_V1)
    

    其中参数 weights 指定了要加载的预训练权重;V1 通常指的是模型的第一个版本或第一个公开发布的权重集。

    2024年目前情况下,这个参数是默认的,即 weights 可直接指定为 DEFAULT :

    weights=torchvision.models.VGG16_Weights.DEFAULT 
    

    不过 DEFAULT 一般都会指向新的权重版本,所以当官方更新最新权重之后(即 IMAGENET1K_V1 不再是最新的),就要慎重使用此命令。

  • 仅提供在 特征提取阶段 训练过的权重(只有 13 个卷积层训练好的权重):

    vgg16_true = torchvision.models.vgg16(weights=torchvision.models.VGG16_Weights.IMAGENET1K_FEATURES)
    

    这些权重可能缺少分类器模块(即全连接层)的权重。

加载好的VGG16模型参数如下:

VGG(
  (features): Sequential(
    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace=True)
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU(inplace=True)
    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (6): ReLU(inplace=True)
    (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (8): ReLU(inplace=True)
    (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (10): Conv2d(128, 256, kernel_size=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值