pytorch笔记:named_parameters

devtools/2024/11/15 6:45:12/
  • named_parameters 是 PyTorch 中一个非常有用的函数,用于访问模型中所有定义的参数及其对应的名称。
  • 它是 torch.nn.Module 类的方法之一,返回一个生成器,生成 (name, parameter) 对,name 是参数的名称,parameter 是对应的参数张量。

1 举例

1.0 创建模型


import torch
import torch.nn as nn# 定义一个简单的模型
class SimpleModel(nn.Module):def __init__(self):super(SimpleModel, self).__init__()self.conv1 = nn.Conv2d(1, 20, 5)self.conv2 = nn.Conv2d(20, 64, 5)self.fc1 = nn.Linear(64 * 4 * 4, 500)self.fc2 = nn.Linear(500, 10)def forward(self, x):x = torch.relu(self.conv1(x))x = torch.relu(self.conv2(x))x = x.view(-1, 64 * 4 * 4)x = torch.relu(self.fc1(x))x = self.fc2(x)return x# 实例化模型
model_tst = SimpleModel()

1.1 应用1:打印模型的所有参数及其名称

for name, param in model_tst.named_parameters():print(name, param.shape)'''
conv1.weight torch.Size([20, 1, 5, 5])
conv1.bias torch.Size([20])
conv2.weight torch.Size([64, 20, 5, 5])
conv2.bias torch.Size([64])
fc1.weight torch.Size([500, 1024])
fc1.bias torch.Size([500])
fc2.weight torch.Size([10, 500])
fc2.bias torch.Size([10])
conv1.weight torch.Size([20, 1, 5, 5])
conv1.bias torch.Size([20])
conv2.weight torch.Size([64, 20, 5, 5])
conv2.bias torch.Size([64])
fc1.weight torch.Size([500, 1024])
fc1.bias torch.Size([500])
fc2.weight torch.Size([10, 500])
fc2.bias torch.Size([10])
'''

1.2 应用2:冻结特定层的参数

假设我们只想训练全连接层,而冻结卷积层的参数:

for name, param in model_tst.named_parameters():if 'conv' in name:param.requires_grad = False

1.3 应用3:自定义优化器参数

可以使用 named_parameters 创建自定义的参数组,以便对不同的参数组应用不同的学习率:

optimizer = torch.optim.SGD([{'params': [param for name, param in model_tst.named_parameters() if 'conv' in name], 'lr': 0.01},{'params': [param for name, param in model_tst.named_parameters() if 'fc' in name], 'lr': 0.1}
], momentum=0.9)


http://www.ppmy.cn/devtools/55689.html

相关文章

【启明智显产品分享】Model4 工业级HMI芯片详解(三):高安全、防抄板

Model4 工业级HMI芯片详解系列专题(三)【高安全、防抄板】 随着物联网和智能设备的快速发展,设备安全认证的需求日益迫切。硬件安全认证和保护在确保设备和身份安全中发挥着不可替代的作用,需要与软件安全相结合,共同构…

武汉星起航:挂牌上海股权中心,资本赋能共绘跨境电商繁荣新图景

在全球经济交融的大背景下,跨境电商已成为推动国际贸易发展的重要力量。武汉星起航电子商务有限公司,作为业界的佼佼者,于2023年10月30日在上海股权托管交易中心成功挂牌展示,正式登陆资本市场。这一里程碑式的举措不仅彰显了公司…

七天速通javaSE:第三天 程序控制结构:顺序、选择、循环

文章目录 前言一、Scanner类1. hasNext()和hasNextLine()2.next()和nextLine()3. Scanner的其他用法 二、顺序结构三、选择结构1. if单选择结构2. if-else双选择结构3. if-else if多选择结构4. switch选择结构 四、循环结构1. while循环2.do while循环3. for循环(常…

递归查询(WITH RECURSIVE)应用

文章目录 前言一、递归查询(WITH RECURSIVE)是什么?二、递归查询(WITH RECURSIVE)的应用数据库范围三、WITH RECURSIVE在Mysql的应用1.WITH RECURSIVE语法2.WITH RECURSIVE具体示例 总结 前言 在关系型数据库中&#…

【代码随想录——动态规划——序列问题】

1.最初上升子序列 func lengthOfLIS(nums []int) int {length : len(nums)dp : make([]int, length)for i:0;i<length;i{dp[i] 1}//对于每一个i&#xff0c;我们都需要回过头去遍历是否可以更新长度for i:0;i<length;i{for j:0;j<i;j{if nums[i]>nums[j]{dp[i] m…

用AI绘画-Stable Diffusion稳定生成指定人物的2-3人场景图,制作小说配图从未如此轻松!

大家好&#xff0c;我是设计师阿威 最近&#xff0c;尝试在写故事&#xff0c;然后用sd配图。其中&#xff0c;单人场景很容易生成。 但是多人场景的话&#xff0c;很难稳定生成满意的图像。 今天就教大家一招&#xff0c;用additional networks controlnet openpose&#…

异常处理的例子

多个except 示例代码如下 try:a input("请输入被除数&#xff1a;")b input("请输入除数&#xff1a;")c float(a)/float(b)print(c)except ZeroDivisionError:print("异常&#xff1a;除数不能为0") except TypeError:print("异常&am…

瑜伽馆管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;教练管理&#xff0c;用户管理&#xff0c;瑜伽管理&#xff0c;套餐管理&#xff0c;体测报告管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0…