1
對不起,可能會重複提到下面提到的問題。R優化 - 從單個迭代中檢索值
我想在optim
函數的不同迭代中取消優化參數的值。目的是檢查驗證數據集上的錯誤收斂。
我的問題與this question密切相關,我試圖實現其中的代碼,我應該解決我的問題。然而,i
和$count
兩個值表明,優化的函數被調用更多的時間比在maxit
參數指定:
vals <- list()
f1 <- function(x) {
i <<- i+1
vals[[i]] <<- x
x1 <- x[1]
x2 <- x[2]
x1^2 + 3*x2^2
}
# countBFGS
i <- 0
optim(c(1,1), f1, method="BFGS",control = list(trace=1, maxit = 10))$count
i
# countCG
i <- 0
optim(c(1,1), f1, method="CG",control = list(trace=1, maxit = 10))$count
i
# countSANN
i <- 0
optim(c(1,1), f1, method="SANN",control = list(trace=1, maxit = 10))$count
i
任何建議如何捕捉即時優化的參數?
在您的例子中'i'和'$ count'是相同的,但的Optim的迭代次數是不同的(由'maxit'設置驅動,嘗試'maxit = 5')。它適用於'BFGS'和'CG'方法。在這些情況下,我無法區分哪個函數調用對應於'i'的迭代,因此我無法使用迭代中的信息。從上面的方法函數調用計數和'maxit'值似乎以某種方式符合'SANN'和'Nelder' ... – Pepacz
請參閱ADDED部分。 –