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

简介: h1 { counter-reset: h2counter; } h2 { counter-reset: h3counter; } h3 { counter-reset: h4counter; } h4 { counter-reset: h5counter; } ...

不间断更新。。。

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

img_acb7228c06523b6675d07c41c180048d.png
  • 截取要修改的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的参数有什么变化:

img_751edcc46a0e0f8b3bc09110a7d17a41.png img_0f9699fc65eb3ab47c220570ff6df47e.png

这达到了我预期的效果。



MARSGGBO原创





2018-4-10



目录
相关文章
|
PyTorch 算法框架/工具
pytorch中torch.clamp()使用方法
pytorch中torch.clamp()使用方法
301 0
pytorch中torch.clamp()使用方法
|
11月前
|
并行计算 PyTorch 测试技术
PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制-2
由于要进行 tensor 的学习,因此,我们先导入我们需要的库。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制-1
PyTorch 是一个基于 Torch 的 Python 开源机器学习库,用于自然语言处理等应用程序。它主要由 Facebook 的人工智能小组开发,不仅能够实现强大的 GPU 加速,同时还支持动态神经网络,这一点是现在很多主流框架如 TensorFlow 都不支持的。
|
11月前
|
机器学习/深度学习 人工智能 PyTorch
|
PyTorch 算法框架/工具
pytorch中keepdim参数归并操作使用方法
pytorch中keepdim参数归并操作使用方法
101 0
|
PyTorch 算法框架/工具
pytorch中meter.AverageValueMeter()使用方法
pytorch中meter.AverageValueMeter()使用方法
185 0
|
PyTorch 算法框架/工具
pytorch中meter.ClassErrorMeter()使用方法
pytorch中meter.ClassErrorMeter()使用方法
140 0
|
PyTorch 算法框架/工具
pytorch中ImageFolder()使用方法
pytorch中ImageFolder()使用方法
199 0
pytorch中ImageFolder()使用方法
|
PyTorch 算法框架/工具
pytorch中nn.ModuleList()使用方法
pytorch中nn.ModuleList()使用方法
264 0
|
PyTorch 算法框架/工具
pytorch中torch.where()使用方法
pytorch中torch.where()使用方法
586 0