【发布时间】:2021-10-20 20:23:18
【问题描述】:
我正在使用 scipy.optimize.minimize 库来自定义编写我的损失函数。 https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html
def customised_objective_func(x):
global lag1
global lag2
global lag3
global lag4
pred = []
err = []
df_col_others_copy=df_col_others.copy(deep=True)
df_col_others_copy*=np.array(x)
pred=intercept_val+df_col_others_copy.sum(axis=1)
pred=list(pred)
col_sales=list(df_col_sales)
err = np.array(pred) - np.array(col_sales)
#err = pred - col_sales
obj_func_cust=sum(err**2)/len(err) + (lambda_mult* pen_func(x))
# CONDITION CHECK
avg_lags_val=(lag1+lag2+lag3+lag4)/float(4.0)
perc_change=(np.abs(obj_func_cust-avg_lag_val)/float(avg_lags_val))*100
if perc_change>=2.0:
break --###?? Sntax for breaking out here??
# retaining last 4 values
curr=obj_func_cust
lag4=lag3
lag3=lag2
lag2=lag1
lag1=curr
if curr=0:
return obj_func_cust
myoptions={'maxiter':1000}
results = minimize(customised_objective_func,params,method = "BFGS",options = myoptions)
我保留了为最后 4 次迭代计算的损失函数的值,如果满足该条件,我想检查它们是否存在一些差异我想停止函数调用(即使 1000 次迭代,也要退出进一步函数执行迭代未完成。
我怎样才能做到这一点?希望在此处对要使用的关键字/syntx 提供帮助?
【问题讨论】:
-
如果我的回答有帮助,请考虑accepting and/or upvoting它。
标签: python-3.x loss-function scipy-optimize scipy-optimize-minimize