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

作者:Pr4da 时间:2021-02-03 11:49:36 

在迁移学习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的则被过滤掉。

来源:https://blog.csdn.net/qq_40210586/article/details/103878155

标签:pytorch,冻结,参数
0
投稿

猜你喜欢

  • Python中OpenCV Tutorials 20  高动态范围成像的实现步骤

    2022-04-02 07:24:20
  • 基于python + django + whoosh + jieba 分词器实现站内检索功能

    2023-03-05 05:30:56
  • Python计数器collections.Counter用法详解

    2021-06-02 20:30:18
  • python3.6.3+opencv3.3.0实现动态人脸捕获

    2022-12-21 11:59:41
  • asp 正则实现清除html文本格式的函数代码

    2011-03-09 11:21:00
  • 为什么Access数据库的精髓不在VBA之中

    2008-11-28 16:45:00
  • 关于Pycharm安装第三方库超时 Read time-out的问题

    2022-03-08 10:12:43
  • 如何使用Python的OpenCV库处理图像和视频

    2022-09-06 10:22:12
  • 详解用python -m http.server搭一个简易的本地局域网

    2023-09-29 13:03:34
  • xmlhttp中运行getResponseHeader出错,提示:The requested header was not found

    2010-03-27 21:47:00
  • 最新版 Windows10上安装Python 3.8.5的步骤详解

    2021-12-31 00:50:29
  • Python从入门到实战之数据结构篇

    2023-10-16 21:32:30
  • python 利用PyAutoGUI快速构建自动化操作脚本

    2021-08-04 15:42:14
  • Python+Flask编写一个简单的行人检测API

    2023-09-26 17:55:19
  • 网页语言编码及asp乱码问题解决方案

    2008-01-31 13:21:00
  • 解决python中使用plot画图,图不显示的问题

    2021-09-27 16:00:07
  • 如何在2003系统注册fso组件

    2010-11-29 19:55:00
  • ASP Framework_1_简介

    2009-10-12 11:35:00
  • FrontPage 2002应用技巧四则

    2008-08-17 10:57:00
  • python 服务器运行代码报错ModuleNotFoundError的解决办法

    2021-03-23 00:39:08
  • asp之家 网络编程 m.aspxhome.com