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

如何向PyTorch LambdaLR调度器传递自定义函数的参数

在PyTorch的LambdaLR中传递自定义函数的参数

你可以通过以下几种方式给自定义的func1传递额外参数(比如base),让它适配LambdaLR只接受单参数(epoch)函数的要求:

方法1:用lambda表达式包装

直接用lambda把额外参数固定,返回一个仅接收epoch的函数:

from torch import optim

def func1(epoch, base=10):
    return epoch / base

optimizer = optim.SGD(model.parameters(), lr=0.1)
# 这里指定base为20,替换默认值
scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda epoch: func1(epoch, base=20))

方法2:使用functools.partial偏置参数

利用functools.partial来预先绑定base参数,生成适配要求的函数:

from torch import optim
from functools import partial

def func1(epoch, base=10):
    return epoch / base

optimizer = optim.SGD(model.parameters(), lr=0.1)
# 绑定base参数为15
lr_lambda_func = partial(func1, base=15)
scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lr_lambda_func)

方法3:用闭包生成适配函数

写一个嵌套函数,外层接收base参数,内层返回仅处理epoch的逻辑:

from torch import optim

def make_lr_lambda(base=10):
    def lr_lambda(epoch):
        return epoch / base
    return lr_lambda

optimizer = optim.SGD(model.parameters(), lr=0.1)
# 生成指定base的函数
scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=make_lr_lambda(base=5))

这几种方法都能让你在保留自定义函数扩展性的同时,顺利传递额外参数给LambdaLR。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:23:23