pytorch 固定部分参数训练的方法

yipeiwu_com6年前Python基础

需要自己过滤

optimizer.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3)

另外,如果是Variable,则可以初始化时指定

j = Variable(torch.randn(5,5), requires_grad=True)

但是如果是

m = nn.Linear(10,10)

是没有requires_grad传入的

m.requires_grad也没有

需要

for i in m.parameters():
  i.requires_grad=False

另外一个小技巧就是在nn.Module里,可以在中间插入这个

for p in self.parameters():
  p.requires_grad=False

这样前面的参数就是False,而后面的不变

class Net(nn.Module):
  def __init__(self):
    super(Net, self).__init__()
    self.conv1 = nn.Conv2d(1, 6, 5)
    self.conv2 = nn.Conv2d(6, 16, 5)

    for p in self.parameters():
      p.requires_grad=False

    self.fc1 = nn.Linear(16 * 5 * 5, 120)
    self.fc2 = nn.Linear(120, 84)
    self.fc3 = nn.Linear(84, 10)

以上这篇pytorch 固定部分参数训练的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python中类型检查的详细介绍

Python中类型检查的详细介绍

前言 大家都知道Python 是一门强类型、动态类型检查的语言。所谓动态类型,是指在定义变量时,我们无需指定变量的类型,Python 解释器会在运行时自动检查。 与静态类型语言(如 C...

Python统计列表中的重复项出现的次数的方法

本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴。具体方法如下: 对一个列表,比如[1,2,2,2,2,3,3,3,4,4...

Python实现按逗号分隔列表的方法

方法一: def commaSpiltList(self, listData): listData = list(listData) strs = str(listData[0]...

浅谈dataframe中更改列属性的方法

在读取文件时将整数变量读成了字符串, 或者需要转换列属性时,通过方法astype Python中 举例: dataframe.numbers=dataframe.numbers.as...

Python 项目转化为so文件实例

Python 项目转化为so文件实例

思路是先将py转换为c代码,然后编译c为so文件,所以要安装以下内容: python 安装:cython pip install cython linux 安装:python-de...