I have an anonymous function with "_" as parameters, I don't know what it means and why it is used here.
and function is:
f = lambda _: model.loss(X, y)[0]
grad_num = eval_numerical_gradient(f, model.params[name], verbose=False, h=1e-5)
model.loss:
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 and the function 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 Loss function isn't complex, I want to know what the "_" represented and function in there.


_, unused parameter.lambda: model.loss(X, y)[0]but it can't, because the callback will pass an argumentfis used as a callback that will be passed an argument. See my answer