You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将BoTorch模型参数与自定义torch.nn.Parameter列表加入同一优化器?

解决优化器参数传入错误的方案

错误原因

self.model.parameters()返回的是参数迭代器对象,而非直接的参数列表。你之前的写法把这个迭代器作为一个整体元素加入列表,导致优化器无法识别——它只能处理单个的torch.Tensor或torch.nn.Parameter实例。

正确实现方式

有两种可靠的写法:

方法1:转换为列表后拼接

将模型参数迭代器转为列表,再和你的潜在参数列表直接合并:

optimizer = torch.optim.Adam(
    list(self.model.parameters()) + self.latent_params_class.latent_params,
    lr=lr
)

方法2:用迭代器链式拼接(内存更高效)

如果参数规模较大,使用itertools.chain拼接两个参数迭代器,避免生成完整列表占用额外内存:

import itertools

optimizer = torch.optim.Adam(
    itertools.chain(self.model.parameters(), self.latent_params_class.latent_params),
    lr=lr
)

两种方式都能让优化器正确遍历所有需要更新的参数张量。

内容的提问来源于stack exchange,提问作者Gooby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:07:06