簡體   English   中英

設置scipy.optimize.minimize的收斂容差(method ='L-BFGS-B')

[英]Set convergence tolerance for scipy.optimize.minimize(method='L-BFGS-B')

該頁面( http://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html )描述了可以傳遞給scipy優化包的L-BFGS-B方法的求解器選項。 我正在嘗試設置求解器退出容差。

文檔提到了兩個選項,我將優先使用的是'factr',求解器在以下情況下退出: (f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps (其中epsilon是機器精度)。 但是當我運行我的代碼時會收到警告:

OptimizeWarning:未知的求解器選項:factr

所以我認為這個選項已被棄用而不贊成ftol(不知道為什么會這樣?)。 ftol是指定的數字(即diff <= n而不是<= n * machine_error)。

這對我來說很好,但是我得到的求解器的退出信息是

收斂:REL_REDUCTION_OF_F _ <= _ FACTR * EPSMCH

這表明L-BFGS-B例程仍在使用某些我不知道的factr值,而且似乎無法指定。 在代碼中可能是一個被忽視的錯誤,可能是我錯過了一些傳遞選項的方法。 使用這個流行解算器的人是否知道解決方法?

謝謝

我也在scipy github存儲庫上打開了一個問題。

在內部,仍然計算factr在這行代碼中 )。

你可以簡單地使用類似的東西

myfactr = 1e2
r = scipy.optimize.minimize(..., options={'ftol' : myfactr * np.finfo(float).eps)

如果你仍然想直接指定factr而不是ftol的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM