• Pytorch 各种奇葩古怪的使用方法


    不间断更新。。。

    增减layer

    增加layer

    增加layer很方便,可以使用model.add_module('layer name', layer)

    删减layer

    删减layer很少用的到,之所以我会有这么一个需求,是因为我需要使用vgg做迁移学习,而且需要修改最后的输出。

    而vgg由两个部分组成:featuresclassifier,这两个部分都是torch.nn.Sequential,所以不能单独对其中某一层做修改。

    而如果对整个Sequential做修改,那么这个模型的参数会被初始化,而我又需要保留这些参数,所以才想到是否有办法把最后一层fc删掉,重新再填加一个不就行了?具体方法如下:

    以vgg16为例,假设我们现在只需要对classifier的最后一层全连接层的输出做修改:

    model = models.vgg16(pretrained=True)
    

    先看一下未做修改之前的classifier的参数:

    • 截取要修改的layer之前的网络
    removed = list(model.classifier.children())[:-1]
    
    model.classifier = torch.nn.Sequential(*removed)
    
    • 添加fc层
    model.add_module('fc', torch.nn.Linear(4096, out_num)) # out_num是你希望输出的数量 
    

    此时我们看一下model以及classifier的参数有什么变化:

    这达到了我预期的效果。



    MARSGGBO原创





    2018-4-10



  • 相关阅读:
    js的this几种用法
    JS 事件绑定的几种方式 小笔记
    rem和em和px vh vw和% 移动端长度单位
    js 判断字符串中是否有某字符串
    angular2中的DOM操作之如何使input获取焦点
    angular2模板绑定样式
    论vw单位的实用性
    谷歌浏览器关闭同源策略方法
    video字幕无法显示,video视频在google中无法控制快进
    video视频铺满
  • 原文地址:https://www.cnblogs.com/marsggbo/p/8781774.html
Copyright © 2020-2023  润新知