为了便于组织,我在文件顶部概述了ML优化器以及其余配置常量:
optimizer = torch.optim.SGD()
要使用优化程序,我必须传递稍后在代码中生成的模型参数
optimizer = torch.optim.SGD(model.parameters, lr=LEARNING_RATE)
我有什么办法可以将参数传递给变量optimizer
?
编辑: 我认为我的问题不清楚,这是我所询问问题的一个简单示例:
#take the square of some arbitrary number
fn = math.prod()
x = 5
#how to feed x into the variable fn?
答案 0 :(得分:1)
当然!
>>> def add(x, y):
... return x+y
...
>>> z = add
>>> z(1,1)
2
答案 1 :(得分:0)
听起来您正在询问部分应用程序。这是一种将函数和一些参数“包装”到一个新的可调用对象中的方法,该方法需要较少(甚至不需要)参数。
>>> from functools import partial
>>> f = lambda x, y, z: x + y + z
>>> g = partial(f, 2, 3)
>>> g(4)
9
>>> h = partial(f, 1, 2, 3)
>>> h()
6
答案 2 :(得分:0)
我发现了它,看起来确实很简单,但是我将其保留,因为我无法在任何地方在线找到它。
您只需将参数传递给新变量,因为它现在与函数是同一对象
const
答案 3 :(得分:0)
我不确定这是否正是您想要的,但是我经常使用functools.partial将值绑定到参数。
import functools
optimizer = functools.partial(torch.optim.SGD, model.parameters, lr=LEARNING_RATE)
然后,您可以调用优化器作为函数,它将具有第一个位置参数和“ lr”关键字参数,并且可以在调用优化器时传递所需的任何其他参数。