我想使用scipy.optimize.minimize
来最小化成本函数。成本函数中的某些值必须为正(这些值不是要最小化的值)。为了实现这一点,我想在成本函数中使用一个正则化器,如果这些值为负数,则会增加成本。在优化程序开始时,我想保持较低的罚款并随着时间的推移增加罚款。为此,我的成本函数需要知道我们处于哪个迭代中。如何从成本函数中获取帽子信息?
这是我的(不完整的)代码:
def cost_fct(inv_hessian_vec):
e = get_values_that_need_to_be_positive(inv_hessian_vec)
return np.sum((inv_hessian_vec - inv_hessian.flatten())**2) + 4**NUMBER_OF_ITERATIONS * np.sum((np.minimum(e - 0.001, 0)) ** 2)
res = scipy.optimize.minimize(fun=cost_fct, x0 = inv_hessian.flatten())