pytorch如何冻结某层参数的实现

 更新时间:2020年01月10日 11:15:01   作者:Pr4da  
这篇文章主要介绍了pytorch如何冻结某层参数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在迁移学习finetune时我们通常需要冻结前几层的参数不参与训练,在Pytorch中的实现如下:

class Model(nn.Module):
 def __init__(self):
  super(Transfer_model, self).__init__()
  self.linear1 = nn.Linear(20, 50)
  self.linear2 = nn.Linear(50, 20)
  self.linear3 = nn.Linear(20, 2)

 def forward(self, x):
 pass

假如我们想要冻结linear1层,需要做如下操作:

model = Model()
# 这里是一般情况,共享层往往不止一层,所以做一个for循环
for para in model.linear1.parameters():
 para.requires_grad = False
# 假如真的只有一层也可以这样操作:
# model.linear1.weight.requires_grad = False

 最后我们需要将需要优化的参数传入优化器,不需要传入的参数过滤掉,所以要用到filter()函数。

optimizer = optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=0.1)

其它的博客中都没有讲解filter()函数的作用,在这里我简单讲一下有助于更好的理解。

filter(function, iterable)

  • function: 判断函数
  • iterable: 可迭代对象

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

filter()函数将requires_grad = True的参数传入优化器进行反向传播,requires_grad = False的则被过滤掉。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Pandas 数据处理,数据清洗详解

    Pandas 数据处理,数据清洗详解

    今天小编就为大家分享一篇Pandas 数据处理,数据清洗详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • go和python调用其它程序并得到程序输出

    go和python调用其它程序并得到程序输出

    这里介绍下用python和go语言的实现将其它程序的输出直接保存成变量供程序使用的方法,大家参考使用吧
    2014-02-02
  • Python matplotlib 绘制散点图详解建议收藏

    Python matplotlib 绘制散点图详解建议收藏

    在数据统计图表中,有一种图表是散列点分布在坐标中,反应数据随着自变量变化的趋势。这篇文章主要介绍了如何通过matplotlib绘制散点图,需要的朋友可以参考一下
    2021-12-12
  • python中shapefile库读取shapefile文件信息

    python中shapefile库读取shapefile文件信息

    本文主要介绍了python中shapefile库读取shapefile文件信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Python中正则表达式的详细教程

    Python中正则表达式的详细教程

    这篇文章主要介绍了Python中正则表达式的详细教程,正则表达式是Python学习进阶当中的重要内容,需要的朋友可以参考下
    2015-04-04
  • python实现字典(dict)和字符串(string)的相互转换方法

    python实现字典(dict)和字符串(string)的相互转换方法

    这篇文章主要介绍了python实现字典(dict)和字符串(string)的相互转换方法,涉及Python字典dict的遍历与字符串转换相关操作技巧,需要的朋友可以参考下
    2017-03-03
  • python套接字流重定向实例汇总

    python套接字流重定向实例汇总

    套接字是一种具有之前所说的“通信端点”概念的计算网络数据结构。相当于电话插口,没它无法通信,这个比喻非常形象。今天我们就来汇总一下套接字流重定向的实例
    2016-03-03
  • 详谈pandas中agg函数和apply函数的区别

    详谈pandas中agg函数和apply函数的区别

    下面小编就为大家分享一篇详谈pandas中agg函数和apply函数的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python爬虫爬取博客实现可视化过程解析

    Python爬虫爬取博客实现可视化过程解析

    这篇文章主要介绍了Python爬虫爬取博客实现可视化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python可视化plotly 图例(legend)设置

    python可视化plotly 图例(legend)设置

    这篇文章主要介绍了python可视化plotly 图例(legend)设置,主要介绍了关于python 的legend图例,参数使用说明,具有很好的参考价值,希望对大家有所帮助,需要的朋友可以参考下卖你具体内容
    2022-02-02

最新评论