-
-
Notifications
You must be signed in to change notification settings - Fork 270
Open
Description
It would be great if the output of optimizing
contained the number of iterations the optimizer ran. This could be then to check whether the optimization terminated because of hitting the maximum number of iterations. Even better solution would be to get the actual reason for the termination from the output, which is currently only available in the print when verbose = TRUE
, but I understand that this is likely more difficult due to the way rstan
works.
Example
library(rstan)
m <- stan_model(
model_code = "
transformed data {
vector[2] y = [5, 10.2]';
}
parameters {
real x;
}
model {
y ~ normal(x, 1);
}")
f <- optimizing(m, iter = 2, verbose = TRUE)
str(f)
Chain 1: Initial log joint probability = -38.2441
Chain 1: Iter log prob ||dx|| ||grad|| alpha alpha0 # evals Notes
Chain 1: 1 -26.9098 1.12221 8.97772 0.1 0.001 4
Chain 1: Iter log prob ||dx|| ||grad|| alpha alpha0 # evals Notes
Chain 1: 2 -6.76 4.48886 7.10543e-15 1 1 5
Chain 1: Optimization terminated normally:
Chain 1: Convergence detected: gradient norm is below tolerance
str(f)
List of 4
$ par : Named num 7.6
..- attr(*, "names")= chr "x"
$ value : num -6.76
$ return_code: int 0
$ theta_tilde: num [1, 1] 7.6
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "x"
RStan Version:
2.32.6
R Version:
4.3.0
Operating System:
Windows 10
Metadata
Metadata
Assignees
Labels
No labels