其他分享
首页 > 其他分享> > Pytorch 各种奇葩古怪的使用方法

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的参数:

bef4400cbc05de35bf684369d9db10ed.gif
removed = list(model.classifier.children())[:-1]

model.classifier = torch.nn.Sequential(*removed)
model.add_module('fc', torch.nn.Linear(4096, out_num)) # out_num是你希望输出的数量

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

bef4400cbc05de35bf684369d9db10ed.gif
bef4400cbc05de35bf684369d9db10ed.gif

这达到了我预期的效果。



MARSGGBO♥原创





2018-4-10





标签:layer,古怪,torch,修改,Pytorch,Sequential,model,classifier,奇葩
来源: https://blog.51cto.com/u_15187743/2747972