您可以将参数传递给Python中的函数对象吗?

时间:2020-06-01 20:07:00

标签: python

为了便于组织,我在文件顶部概述了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?

4 个答案:

答案 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”关键字参数,并且可以在调用优化器时传递所需的任何其他参数。