“_”在 lambda 函数中是什么意思,为什么要使用它?

Zhengfang Xin

我有一个以“_”为参数的匿名函数,我不知道它是什么意思以及为什么在这里使用它。

和功能是:

f = lambda _: model.loss(X, y)[0]

grad_num = eval_numerical_gradient(f, model.params[name], verbose=False, h=1e-5)

模型损失:

def loss(self, X, y=None):


    # Unpack variables from the params dictionary
    W1, b1 = self.params['W1'], self.params['b1']
    W2, b2 = self.params['W2'], self.params['b2']

    h1, h1_cache = affine_relu_forward(X, W1, b1)
    scores, h2_cache = affine_forward(h1, W2, b2)


    # If y is None then we are in test mode so just return scores
    if y is None:
        return scores

    loss, grads = 0, {}


    loss, dscores = softmax_loss(scores, y)
    loss = loss + 0.5*self.reg*(np.sum(W2**2) + np.sum(W1**2))
    dh1, grads['W2'], grads['b2'] = affine_backward(dscores,h2_cache)
    dX, grads['W1'], grads['b1'] = affine_relu_backward(dh1,h1_cache)
    grads['W1'] += self.reg*W1
    grads['W2'] += self.reg*W2

    return loss, grads

和函数eval_numerical_gradient:

def eval_numerical_gradient(f, x, verbose=True, h=0.00001):

    fx = f(x) # evaluate function value at original point
    grad = np.zeros_like(x)
    # iterate over all indexes in x
    it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
    while not it.finished:

        # evaluate function at x+h
        ix = it.multi_index
        oldval = x[ix]
        x[ix] = oldval + h # increment by h
        fxph = f(x) # evalute f(x + h)
        x[ix] = oldval - h
        fxmh = f(x) # evaluate f(x - h)
        x[ix] = oldval # restore

        # compute the partial derivative with centered formula
        grad[ix] = (fxph - fxmh) / (2 * h) # the slope
        if verbose:
            print(ix, grad[ix])
        it.iternext() # step to next dimension

    return grad

损失函数并不复杂,我想知道其中的“_”代表什么和函数。

深空

这是 Python 中的一个约定,_用于以后不会使用的变量。没有涉及黑魔法,它是一个普通的变量名称,其行为与您期望的完全一样。

在这种情况下,使用它是因为f它作为回调传递,当它被调用时将传递一个参数 ( fxph = f(x))。

如果f将被实施为

f = lambda: model.loss(X, y)[0]

那么TypeError: <lambda>() takes 0 positional arguments but 1 was given将引发错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以下 Lambda 函数是什么意思?

const lambda是什么意思?

lambda :: _ 1是什么意思?

定义lambda时[&]是什么意思?

Kotlin 中的“lambda@”是什么意思

Xray lambda中的“主动跟踪”是什么意思?

在python中创建lambda时,我是什么意思?

为什么要使用lambda与1行函数声明?

C#Lambda表达式:为什么要使用它们?

lambda 后面的括号是什么意思?- Python

livedata observable Kotlin 的 lambda 表达式中的“让”是什么意思

在Java 8中,带有2个箭头的lambda是什么意思?

方括号在此TypeScript Lambda表达式中是什么意思?

“请将您的损失计算包装在零参数 `lambda` 中”是什么意思。方法?

此计划代码是什么意思?(使用lambda的'list'运算符的定义)

这是什么lambda表达式是什么意思?

什么是(lambda lambda lambda)?

为什么Java对lambda函数使用->而不是=>?

在CDK中,为什么Lambda函数的角色是可选的?授予权限的惯用方式是什么?

两侧都带有省略号的Lambda Pack捕获-是什么意思?

捕获一词在lambda的上下文中是什么意思?

`lambda: class(class, class, ...)` 语法是什么意思?(扭曲的 Python 文档)

可以用lambda代替侦听器是什么意思?

非本地Lambda和捕获变量-“块作用域”是什么意思

arr.sort(key = lambda x:(x [0],-x [1]))是什么意思?

两个lambda一起起作用是什么意思

当AWS说lambda有1000个并发执行限制时,这是什么意思?

lambda 表达式 "List.of(() -> "read")" 是什么意思?

Lambda是什么类型?