【学习笔记】【Pytorch】十四、现有网络模型的使用及修改

文章介绍了如何在PyTorch中使用VGG16模型,并提供了两种方法将其从1000分类问题修改为10分类问题。方法一是添加一个新的线性层,方法二是直接修改原有模型的全连接层参数。两种方法都涉及到对模型的classifier部分进行调整。

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

【学习笔记】【Pytorch】十四、现有网络模型的使用及修改

现有模型

参考
Models and pre-trained weights

VGG16网络模型的使用及修改

VGG16网络模型是一个1000分类问题,将其网络修改成10分类问题:

  • 法1:在最后的全连接层添加一个int_features=1000,out_features=10的线性层。
  • 法2:修改全连接层中最后一个线性层的out_features=10。

代码实现

import torchvision
from torch import nn

vgg16_false = torchvision.models.vgg16(pretrained=False)
# 将vgg16模型及其参下载到本地(C:\Users\11837\.cache\torch\hub\checkpoints)
vgg16_true = torchvision.models.vgg16(pretrained=True)  
print(vgg16_true)  # 打印模型网络结构

# 1.添加一个线性层进行10分类任务
vgg16_true.add_module("add_linear", nn.Linear(1000, 10))
print('\n法1修改后的网络结构:\n', vgg16_true)  # 打印模型网络结构

# 2.修改 classifier 中的第七层网络,变成10分类问题
vgg16_false.classifier[6] = nn.Linear(4096, 10)
print('\n法2修改后的网络结构:\n', vgg16_false)  # 打印模型网络结构

输出

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=(3, 3), stride=(1, 1), padding=(1, 1))
    (11): ReLU(inplace=True)
    (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (13): ReLU(inplace=True)
    (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (15): ReLU(inplace=True)
    (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值