Pytorch 学习笔记(2)-使用和修改已有的网络

  Pytorch官网上给我们提供了很多已训练好或未训练的网络模型,我们可以直接来进行使用

   

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()
shufflenet = models.shufflenet_v2_x1_0()
mobilenet_v2 = models.mobilenet_v2()
mobilenet_v3_large = models.mobilenet_v3_large()
mobilenet_v3_small = models.mobilenet_v3_small()
resnext50_32x4d = models.resnext50_32x4d()
wide_resnet50_2 = models.wide_resnet50_2()
mnasnet = models.mnasnet1_0()

接下来我们使用VGG16model来进行详细讲解

import torchvision.models as models

vgg16=models.vgg16(pretrain=True)

print(vgg16)

  当pretrain预训练设置为True的时候,我们将从网络中下载已训练好的模型,然后我们将其打印出来看一下它的结构。

  我们可以看到,最后线性层的输出为1000,但是如果我们想用这个模型进行10分类该怎么办,就像运用到CIFAR10数据集上,我们只需要在最后一层的线性层后加一个层。

from torch import nn 

vgg16.add_module('add_ten_classify_linear',nn.Linear(1000,10))

print(vgg16)

  add_module函数需要两个参数,第一个是这个层的名字,我们自己定义就好,第二个是我们要添加的层,接着我们打印一下看看是否成功添加进去。

   我们发现已经添加进去了,但是是在模型的最后,如果我们想添加到classifier里面该如何操作呢。

vgg16.classifier.add_module('add_ten_classify_linear',nn.Linear(1000,64))

 

   这时我们可以看到该层已经添加到classifier里面了。

   那如果我们想要修改原模型中的参数该如何操作呢。其实可以简单粗暴一点。

vgg16.classifier[6] = nn.Linear(in_features=4096,out_features=10,bias=True)

  这样,我们直接将classifier中的第七层改为10输出的层。

  还是简单做个记录,方便以后查阅。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值