土堆学习笔记——P25现有网络模型的使用

文章讲述了如何在PyTorch中使用torchvision的VGG模型,包括预训练模型的下载与使用,以及如何将VGG模型从1000类分类器调整为10类CIFAR10数据集的分类。介绍了两种方法:修改输出层和添加新的线性层。
摘要由CSDN通过智能技术生成

官方文档的torchvision截图,classification分类、Semantic Segmentation语义分割、Object Detection目标检测
在这里插入图片描述

VGG

一个分类模型
如果pretrained设置为true,就是说这个VGG模型用他们官方的一个数据集ImageNet预训练好了,预训练好了的效果是什么呢?就是里面的一些模型参数被改好了,那就需要一些时间加载/下载这个模型。
如下

Downloading: "https://download.pytorch.org/models/vgg16-397923af.pth"
to /Users/bbing517/.cache/torch/hub/checkpoints/vgg16-397923af.pth
  4%|██▍                                                              | 
  19.4M/528M [00:08<03:48, 2.33MB/s]

如果pretrained是false,那模型的参数就是默认的参数。
不用download

对比,第一张是输出true的
在这里插入图片描述在这里插入图片描述

输出false
在这里插入图片描述发现输出一样,不知道为啥。??

但是可以知道VGG16是一个1000类的分类器,然后我们之前用的数据集是CIFAR10,是把数据分成10类。
那如何用现有的网络VGG,完成10类分类呢?
方法一:把VGG的最后的out_features改成10
方法二:在VGG后面再加多一个东西,1000的输入,10的输出

很多论文也会把VGG16作为一个前置网络,通过它来提取数据的一些特征。

import scipy
import torchvision

vgg16_false = torchvision.models.vgg16(pretrained=False)
vgg16_true = torchvision.models.vgg16(pretrained=True)

print(vgg16_true)

train_data = torchvision.datasets.CIFAR10("./神经网络",train = False, 
                                       transform = torchvision.transforms.ToTensor(),
                                       download = True)

#在整个vgg16外面加
vgg16_true.add_module('add_linear',nn.Linear(1000,10))#这层名字叫'add_linear'
print(vgg16_true)

#在那个classifier里面加
vgg16_true.classifier.add_module('7add_linear',nn.Linear(1000,10))#这层名字叫'7add_linear'
#print(vgg16_true)

原来的VGG16
在这里插入图片描述在整个vgg16外面加
在这里插入图片描述
在classifier里加
在这里插入图片描述
如果用那个方法1呢?就是把classifier的6的out_feature改成10呢
也可以,我们用flase那版改

vgg16_false.classifier[6] = nn.Linear(4096,10)
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值