Pytorch中的现有网络模型使用及修改-vgg16

本文介绍了如何在PyTorch中使用VGG16模型,包括加载预训练模型、添加和修改线性层,以及删除特定层的操作。着重展示了如何处理预训练参数和定制模型结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用

           

拉取网络模型代码:

import torchvision
from torchvision.models import VGG16_Weights
# 调用vgg16的预训练模型-此时由于参数经过了预训练参数数据就需要进行下载
vgg16_true = torchvision.models.vgg16(weights=VGG16_Weights.DEFAULT)
# 调用vgg16未经过预训练的原始模型
vgg16_false = torchvision.models.vgg16(weights=VGG16_Weights.IMAGENET1K_FEATURES)
print(vgg16_true)

拉取过程:

结果:

二、修改

2.1添加线性层

vgg16_true.add_module("add_linear",torch.nn.Linear(1000,10))

 结果:

2.2修改

import torch.nn
import torchvision
from torchvision.models import VGG16_Weights
# 调用vgg16的预训练模型-此时由于参数经过了预训练参数数据就需要进行下载
vgg16_true = torchvision.models.vgg16(weights=VGG16_Weights.DEFAULT)
# 调用vgg16未经过预训练的原始模型
vgg16_false = torchvision.models.vgg16(weights=VGG16_Weights.IMAGENET1K_FEATURES)


# 修改分类器里面的具体层-7层
vgg16_true.classifier[6] = torch.nn.Linear(1000,10)
# 修改序列化里面的具体层-31层
vgg16_true.features[30] = torch.nn.Linear(1000,10)
print(vgg16_true)

结果:

2.3删除

代码:

# 删除分类器中的第6层
vgg16_true.classifier[5] = nn.Sequential()

结果:

 

### PyTorchVGG16 模型的使用方法 #### 加载预训练的 VGG16 模型 为了加载预训练好的 VGG16 模型,在 PyTorch 中可以利用 `torchvision.models` 提供的功能。这使得获取一个已经经过 ImageNet 数据集训练过的模型变得非常简单。 ```python import torchvision.models as models vgg16 = models.vgg16(pretrained=True) ``` 这段代码会下载并初始化一个带有预训练权重的 VGG16 实例[^2]。 #### 修改分类器部分适应特定任务 当应用 VGG16 到不同于 ImageNet 的数据集上时,通常需要调整最后一层(即分类器)。这是因为原始的最后一层是为了处理 ImageNet 上的 1000 类而设计的。对于新的任务,比如只有两个类别的二元分类问题,则需修改该层: ```python import torch.nn as nn num_features = vgg16.classifier[6].in_features features = list(vgg16.classifier.children())[:-1] # 去掉最后一个线性层 features.extend([nn.Linear(num_features, 2)]) # 添加新类别数目的输出层 vgg16.classifier = nn.Sequential(*features) # 将模型设置为评估模式 vgg16.eval() ``` 这里创建了一个具有两输出的新分类器,并将其替换到现有VGG16 架构中。 #### 使用自定义输入尺寸 默认情况下,VGG16 预期接收固定大小 (224x224) 的彩色图片作为输入。如果希望支持不同分辨率或其他类型的图像,可能还需要对网络结构做一些额外改动或前处理工作以匹配预期输入格式。 #### 训练过程概览 一旦准备好了适合目标任务的数据集以及相应配置后的 VGG16 模型之后,就可以按照标准流程来进行训练了——包括定义损失函数、优化算法等常规步骤。不过需要注意的是,由于使用了预训练参数,一般建议采用较小的学习率来微调这些已有的权值,从而更好地迁移到目标域内。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DQ小恐龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值