ValueError: optimizer got an empty parameter list

【Python报错】ValueError:optimizer got an empty parameter list 概念理解解决 【python报错】ValueError:optimizer got an empty parameter list 概念理解解决 阅读详情

我定义了如下的模型

class mymodel(nn.Module):
    def __init__(self, hidden_dim):
        super(mymodel, self).__init__()
        # 定义 nn.Parameter 类型的参数
        self.Alpha = nn.Parameter(torch.empty(hidden_dim), requires_grad=True).cuda()
        nn.init.normal_(self.Alpha)
        
        self.Beta = nn.Parameter(torch.empty(hidden_dim), requires_grad=True).cuda()
        nn.init.normal_(self.Beta)

    def forward(self, x):
        return x


# 实例化模型
model = mymodel(hidden_dim=256)

# 打印模型的参数及其名称
for name, param in model.named_parameters():
    print(name, param.size())

然而,在我定义如下的优化器时,

self.optimizer = Adam(model.parameters(), lr=self.lr, weight_decay=self.weight_decay)

提示我

ValueError: optimizer got an empty parameter list

出现这个情况是不正常的,因为我定义了alpha和beta两个可学习变量。

我通过询问GPT4.0, chatGPT,检查了

requires_grad=True

等一系列,但还是没能解决问题。

在我仔细排查后发现,在定义那2个变量时不能加.cuda()

这个也许是pytorch的隐藏bug吧

改为以下代码后就正常了。

class mymodel(nn.Module):
    def __init__(self, hidden_dim):
        super(mymodel, self).__init__()
        # 定义 nn.Parameter 类型的参数
        self.Alpha = nn.Parameter(torch.empty(hidden_dim), requires_grad=True)
        nn.init.normal_(self.Alpha)
        
        self.Beta = nn.Parameter(torch.empty(hidden_dim), requires_grad=True)
        nn.init.normal_(self.Beta)

    def forward(self, x):
        return x


# 实例化模型
model = mymodel(hidden_dim=256)

# 打印模型的参数及其名称
for name, param in model.named_parameters():
    print(name, param.size())

【Bug已解决】Pytorch ValueError: optimizer got an empty parameter list 解决方案 错误:层定义在 __init__ 之外pass# 在 forward 中创建层 - 这些层不会被注册为参数print(f"参数数量: {len(list(model.parameters()))}") # 0try:print(f"错误: {e}")# 使用 nn.Parameter 注册自定义参数print(f"参数数量: {len(list(model.parameters()))}") # 2所有需要训练的层必须在__init__中定义,不能在forward。 阅读详情

相关推荐

UWB灵犀遥控器方案介绍

UWB灵犀指向遥控器的技术原理和方案介绍

xiongdauwb的博客 3898

ValueError:optimizer got an empty parameter list 的一个可能错误

今天有一段代码总是跑不通, 报错如下 Traceback (most recent call last): File "1.py", line 28, in <module> optimizer=optim.SGD(model.parameters(),lr=1e-3) File "/share2/home//anaconda3/envs/python36/lib/python3.6/site-packages/torch/optim/sgd.py", line 64, i...

NLOS的博客 4万+

【原创】SAP/Oracle 集团企业海外全球化实施注意事项: 一带一路本地化 (持续更新)...

ABC集团SAP的系统平台已经扩展到全球一百来个国家和地区,SAP系统平台的全球实施项目中, 当时是需要支持当地的业务和法律法规的合规要求。   当时客户也是缺乏当地的资源以及对当地法律法规和业务实践的了解,需要团队提供了全球化的支持,通过我们全球产品技术专家充分传递了各区域的本地化支持和实践 而且近年来我们发现一些国家和政府,陆续都在推出一些新的税改和合规的要求,接下来基于这些要求,我们全球...

weixin_34024034的博客 1143

ValueError: optimizer got an empty parameter list.

这样的例子有,__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用(神奇方法)。最好避免在自己的程序中使用以双下划线("dunders")开头和结尾的名称,以避免与将来Python语言的变化产生冲突。ValueError:optimizer got an empty parameter list基本都跟__init__()及其里面的代码有关,比如下划线打错了、init拼错了、没有super、没在__init__函数内定义网络等。双前导和末尾下划线:__var__

weixin_47414581的博客 1863

ZEMAX学习 6.一个照相物镜的设计

曲线越平滑表示场曲越小,曲线越接近水平,系统边缘与中心对比度越接近,虚实越接近表示色差和色散越好;第1个面设计不合理,出现前后表面相交的情况,点击第1面厚度,选择边缘厚度,设置为0.1,第1面厚度被控制在0.1mm厚,系统根据这一设置始终保持第1面边缘厚度为0.1mm。要求:设计一个照相物镜,焦距f=9mm,F#为4,视场角40°;添加有效焦距操作数EFFL 9mm 权重为1,设置优化变量,如下图,ctrl+shift+o打开优化界面。报告中系统数据有效焦距为67.381mm,设计要求为9mm;

qq_24542783的博客 4711

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 750

pytorch错误及解决方案

pytorch错误及解决方案 目录 RuntimeError: CUDA error: device-side assert triggered RuntimeError:invalid argument 5:k not in range for dimension at /pytorch/ate ... ValueError: optimizer got an empty parameter list The size of tensor a (197) must match the..

John Kang的博客 3万+

用于可靠的钙钛矿薄膜瞬时光致发光模拟的拟合程序

简介 对光激发后的电荷载流子动态的研究对于确定太阳能电池的几个特性至关重要,例如,体和界面重组的数量以及向电荷传输层转移过程的速度。 瞬态光致发光(trPL)是用于研究这些特性的最流行的表征方法之一。 该实验是通过在样品上照射几纳秒的激光脉冲,并记录一段时间内的发光情况来进行的。辐射性重组的光生电荷载流子将引起太阳能电池的光子发射,而非辐射性重组的电荷载流子将不会对发光作出贡献。因此,可以测量到强度随时间递减的光致发光瞬态。(见图1表示trPL的测量和它的输出)。 图1. 一...

FluximAG的博客 2362

ValueError:optimizer got an empty parameter list,参数空传

ValueError:optimizer got an empty parameter list 这个问题有特别多种,这里只介绍我察觉到的错误 本身我的全连接是固定参数,并没有出错,即: self.fc1 = nn.Linear(96 * 8 * 8, 512) self.fc2 = nn.Linear(512, 10) 但是如果我将上一层网络结构训练的参数,作为全连接的定义参数 self.fc1 = nn.Linear(int(inchannels[i])*int(size[k])*int(size[

qq_38334521的博客 1万+

逆向分析第一步:如何从HEX文件‘还原’出单片机的原始程序与数据?

本文详细解析了如何从HEX文件逆向分析出单片机的原始程序与数据,涵盖了固件逆向的底层逻辑与实践。通过介绍HEX文件的结构、内存映像重建技术以及专业工具链的使用,帮助读者掌握从十六进制数据到可执行代码的完整流程,适用于嵌入式系统开发和逆向工程领域。

weixin_29745609的博客 317

开发者体验度量:构建DevEx评估体系的方法论与工具

在深入讨论度量方法前,我们需要明确什么是开发者体验(DevEx)。许多人将其简化为"开发工具好不好用",这是一个危险的误解。开发者体验是指开发者在完成工作过程中的整体感受和效率,它由三大核心维度组成:工具与基础设施:开发、测试、部署工具链的效能流程与协作:工作流程的顺畅度和团队协作的效率文化与成长:支持实验、学习和专业发展的环境这三个维度相互作用,共同决定了开发者能否高效且愉悦地完成工作。开发者体验不是一个目的地,而是一段持续的旅程。

2401_88760782的博客 1429

pytorch程序中:“ValueError: optimizer got an empty parameter list” 问题解决

pytorch程序中:“ValueError: optimizer got an empty parameter list” 问题解决 pytorch写简单线性回归遇到问题如下截图所示: 后来对照听的视频课检查了下发现是构建神经网络模型时__init__()中init拼写错误写成了“int”,因此造成出现上述的报错。希望能帮助到大家。 ...

weixin_44494288的博客 4786

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ValueError: optimizer got an empty parameter list filter

如果不是__init__构造器写错的问题可以试一试 把初始化这一行 self.optimizer=optim.Adam(self.params,lr=self.learning_rate,weight_decay=self.weight_decay) 改为 self.optimizer = optim.Adam(list(self.params), lr=self.learning_rate, weight_decay=self.weight_decay) 加一个list() ...

github_37991992的博客 1229

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ValueError: optimizer got an empty parameter list 模型定义的问题,pytorch 如果类初始化参数,需要变量在后面的方法中用到 需要设置在gpu中,

根据您提供的信息和链接内容,错误通常与__init__方法中的实现有关。链接中提到的一个重要问题是下划线的使用不当,特别是__init__方法的命名。在Python中,__init__是类的构造器的特殊方法,它必须严格使用两个下划线__前后各一个,而不是一个下划线。您提供的代码片段中的__init__方法看起来是正确命名的,使用了双下划线__。但是,错误分析中提到了一个常见错误,即__init_(一个下划线)被错误地使用。

AI 前沿技术实战博客:LLM / Agent / AI 制药 / 生信四大栏目日更,硬核干货 + 可复现代码,看完就能上手 534

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

torch1.7.1中SparseAdam出现ValueError: optimizer got an empty parameter list错误的原因

问题描述:我用torch1.7.1中的torch.nn.SparseAdam()进行参数优化时,一直报错:ValueError: optimizer got an empty parameter list,但我使用torch.nn.SGD()时就不会出现这个错误,而且model.parameter()是有值的。另外,在其他人电脑上,torch.nn.SparseAdam()方法也是可用的。我debug的过程,发现这个错误是在list(param)的时候出来的。 问题解决:考虑到以上情况,我用排除法,想到了

Unique_yang博客 1442

深入解析PyTorch优化器报错:空参数列表的五大排查策略

本文深入解析PyTorch优化器报错'ValueError: optimizer got an empty parameter list'的五大排查策略,包括空参数列表的本质原因、代码拼写检查、继承规范与参数注册机制、网络结构定义深度检查以及高级调试工具与技术。帮助开发者快速定位并解决优化器参数列表为空的问题,提升模型开发效率。

Black的专栏 853

记录一次Pytorch在定义模型优化时候没有参数

报错现象: ValueError(“optimizer got an empty parameter list”)在定义模型时候self.layers=xxxx后面多了一个逗号。

Gancenty 542

Pytorch问题解决记录

1、ValueError:optimizer got an empty parameter list 的一个可能错误 原因初始化优化器的时候发现网络结构中没有参数需要被优化,检查自己的def __init__()函数是否有问题里面是否包含了应该被初始化的参数 ValueError:optimizer got an empty parameter list 的一个可能错误_NLOS的博客-优快云博客 2、 ...

呆呆象呆呆的博客 2859

Pytorch的一些小问题

Pytorch图神经网络训练过程中的一些问题

qq_43481350的博客 4326

PyTorch Wrapper:封装训练流程的轻量级工程胶水层

在深度学习工程实践中,模型训练常面临重复代码多、实验配置散乱、协作门槛高三大挑战。PyTorch 作为灵活底层框架,其原生 API 虽强大,但缺乏面向生产环境的流程抽象能力。PyTorch Wrapper 正是为此设计的轻量级封装层——它不替代 torch.nn 或 torch.optim,而是通过配置驱动、组件工厂与可扩展钩子机制,将模型构建、数据加载、训练循环等共性逻辑标准化。其技术价值在于降低工程熵增、提升实验复现效率,并支持从图像分类到时序预测等多样化 neural networks 场景。本文聚焦

weixin_30274627的博客 419
上一篇: RuntimeError: CUDA error: an illegal memory access was encountered
blgpb
博客等级 码龄12年 524粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值