Pytorch 各种奇葩古怪的使用方法
h1 { counter-reset: h2counter; }
h2 { counter-reset: h3counter; }
h3 { counter-reset: h4counter; }
h4 { counter-reset: h5counter; }
h5 { counter-reset: h6counter; }
h6 { }
h2:before {
counter-increment: h2counter;
content: counter(h2counter) ".\0000a0\0000a0";
}
h3:before {
counter-increment: h3counter;
content: counter(h2counter) "."
counter(h3counter) ".\0000a0\0000a0";
}
h4:before {
counter-increment: h4counter;
content: counter(h2counter) "."
counter(h3counter) "."
counter(h4counter) ".\0000a0\0000a0";
}
h5:before {
counter-increment: h5counter;
content: counter(h2counter) "."
counter(h3counter) "."
counter(h4counter) "."
counter(h5counter) ".\0000a0\0000a0";
}
h6:before {
counter-increment: h6counter;
content: counter(h2counter) "."
counter(h3counter) "."
counter(h4counter) "."
counter(h5counter) "."
counter(h6counter) ".\0000a0\0000a0";
}
不间断更新。。。
增减layer
增加layer
增加layer很方便,可以使用model.add_module('layer name', layer)。
删减layer
删减layer很少用的到,之所以我会有这么一个需求,是因为我需要使用vgg做迁移学习,而且需要修改最后的输出。
而vgg由两个部分组成:features和classifier,这两个部分都是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的参数有什么变化:
这达到了我预期的效果。
Pytorch 各种奇葩古怪的使用方法的更多相关文章
- 字符串:各种奇葩的内置方法 - 零基础入门学习Python014
字符串:各种奇葩的内置方法 让编程改变世界 Change the world by program 字符串:各种奇葩的内置方法 或许现在又回过头来谈字符串,有些朋友可能会觉得没必要,也有些朋友会觉得不 ...
- 零基础入门学习Python(14)--字符串:各种奇葩的内置方法
前言 这节课我们回过头来,再谈一下字符串,或许我们现在再来谈字符串,有些朋友可能觉得没必要了,甚至有些朋友就会觉得,不就是字符串吗,哥闭着眼也能写出来,那其实关于字符串还有很多你不知道的秘密哦.由于字 ...
- pytorch 建立模型的几种方法
利用pytorch来构建网络模型,常用的有如下三种方式 前向传播网络具有如下结构: 卷积层-->Relu层-->池化层-->全连接层-->Relu层 对各Conv2d和Line ...
- pytorch设置多GPU运行的方法
1.DataParallel layers (multi-GPU, distributed) 1)DataParallel CLASS torch.nn.DataParallel(module, de ...
- Python14之字符串(各种奇葩的内置方法)
一.字符串的分片操作 其分片操作和列表和元组一样 str1 = 'keshengtao' str1[2:6] 'shen' str1[:] 'keshengtao' str1[:4] 'kesh' 二 ...
- Pytorch加载模型推荐的方法
https://stackoverflow.com/questions/42703500/best-way-to-save-a-trained-model-in-pytorch
- pytorch 创建tensor的几种方法
tensor默认是不求梯度的,对应的requires_grad是False. 1.指定数值初始化 import torch #创建一个tensor,其中shape为[2] tensor=torch.T ...
- pytorch 中交叉熵损失实现方法
- Pytorch划分数据集的方法
之前用过sklearn提供的划分数据集的函数,觉得超级方便.但是在使用TensorFlow和Pytorch的时候一直找不到类似的功能,之前搜索的关键字都是"pytorch split dat ...
随机推荐
- BZOJ3998 TJOI2015弦论(后缀数组+二分答案)
先看t=1的情况.显然得求出SA(因为我不会SAM).我们一位位地确定答案.设填到了第len位,二分这一位填什么之后,在已经确定的答案所在的范围(SA上的某段区间)内二分,找到最后一个小于当前串的后缀 ...
- 自学Linux Shell17.1-正则表达式
点击返回 自学Linux命令行与Shell脚本之路 17.1-正则表达式 1. 正则表达式概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“ ...
- 冬令营前的一些计划&记录
冬令营前的一些计划&记录 计划 yyb发现自己很多以前学过的东西完完全全不记得了,所以在接下来的时间里可能会留下多篇复习向的博客,当然也可能因为觉得没有必要复习而到处乱做题. 现在先大概归类一 ...
- 51nod1236 序列求和 V3 【数学】
题目链接 51nod1236 题解 用特征方程求得斐波那契通项: \[f(n) = \frac{(\frac{1 + \sqrt{5}}{2})^{n} - (\frac{1 - \sqrt{5}}{ ...
- Linux下Vim编辑器访问系统剪切板
默认情况下VIM使用的是内置的寄存器,而不是X Window的剪切板 启用系统剪切板支持 可以使用vim --version | grep clipboard查看,若clipboard前显示-标记,而 ...
- display position 和float的作用和关系
1.传统布局由这三者构成. 2.position设为absolute,那么display一定是block,因此对于span来说,就可以设置高和宽了. 3.position为relative ,那么fl ...
- mysql存储过程和常用流程控制
/* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...
- jQuery倒计时代码(超简单)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- mac subLime3 JSON 格式化插件安装
1.首先找到路径:/Users/hou***in/Library/Application' 'Support/Sublime' 'Text' '3/Packages/ 2.git clone http ...
- nginx 配置后网站图片加载出来一半或者不出来
项目进行nginx反向代理后发现图片和js.css等加载很慢,甚至加载不出来. 然后查看nginx的log,发现错误如下: 2016/06/30 15:31:12 [crit] 29465#0: *1 ...