Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mismatch in number dimensions declared with Pathfinder inits #992

Closed
StaffanBetner opened this issue Jun 7, 2024 · 2 comments
Closed

mismatch in number dimensions declared with Pathfinder inits #992

StaffanBetner opened this issue Jun 7, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@StaffanBetner
Copy link

Describe the bug
When I use Pathfinder to get inits I get "mismatch in number dimensions declared" as error for some models.

To Reproduce
Reprex:

library(tidyverse)
library(janitor)
#> 
#> Attaching package: 'janitor'
#> The following objects are masked from 'package:stats':
#> 
#>     chisq.test, fisher.test
library(nlme)
#> 
#> Attaching package: 'nlme'
#> The following object is masked from 'package:dplyr':
#> 
#>     collapse
library(cmdstanr)
#> This is cmdstanr version 0.8.1
#> - CmdStanR documentation and vignettes: mc-stan.org/cmdstanr
#> - CmdStan path: C:/Users/STBE21/.cmdstan/cmdstan-2.35.0
#> - CmdStan version: 2.35.0
library(brms)
#> Loading required package: Rcpp
#> Loading 'brms' package (version 2.21.3). Useful instructions
#> can be found by typing help('brms'). A more detailed introduction
#> to the package is available through vignette('brms_overview').
#> 
#> Attaching package: 'brms'
#> The following object is masked from 'package:stats':
#> 
#>     ar
BodyWeight %>% 
  as_tibble() %>% 
  clean_names() %>% 
  mutate(time2=time %>% factor %>% as.numeric()) -> 
  body_weight


  
  brm(data = body_weight, formula = weight ~ diet + ar(p = 1, time = time2, gr=rat)+(1|rat), backend="cmdstanr", cores =6, chains=6, empty = T) -> 
    brm_empty
  
  cmdstanr::write_stan_file(brm_empty$model) %>% 
    cmdstan_model(cpp_options = list(stan_threads = TRUE)) -> 
    model_cmdstan
  
  model_cmdstan$pathfinder(data = make_standata(data = body_weight, 
                                                              formula = weight ~ diet + ar(p = 1, time = time2, gr=rat)+(1|rat)), 
                           init = 2, history_size = 100, 
                           num_threads = 6, 
                           num_paths = 6) ->
    pathfinder_inits
#> Path [1] :Initial log joint density = -2354013.421594 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite function evaluation. 
#> Path [4] :Initial log joint density = -2837875.019409 
#> Path [2] :Initial log joint density = -13657453.097900 
#> Path [3] :Initial log joint density = -5782846.815396 
#> Path [6] :Initial log joint density = -21086717.897784 
#> Path [5] :Initial log joint density = -117122627.277960 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite function evaluation. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite function evaluation. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite function evaluation. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite function evaluation. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Error evaluating model log probability: Non-finite gradient. 
#> Path [4] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>              88      -5.855e+02      4.938e-04   9.595e-02    1.000e+00  1.000e+00      2201 -3.697e+03 -3.697e+03                   
#> Path [4] :Best Iter: [40] ELBO (-662.093438) evaluations: (2201) 
#> Path [5] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>              99      -5.855e+02      2.429e-02   1.419e+01    1.000e+00  1.000e+00      2476 -7.844e+02 -7.844e+02                   
#> Path [5] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             115      -5.854e+02      3.519e-04   7.368e-02    7.838e-01  7.838e-01      2876 -1.467e+03 -1.467e+03                   
#> Path [5] :Best Iter: [60] ELBO (-662.139363) evaluations: (2876) 
#> Path [3] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>              99      -1.484e+03      4.062e-02   1.668e+02    3.698e-01  3.698e-02      2476 -1.613e+03 -1.613e+03                   
#> Path [1] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>              99      -5.854e+02      4.431e-04   1.919e-01    4.818e-01  4.818e-01      2476 -9.339e+02 -9.339e+02                   
#> Path [1] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             100      -5.854e+02      5.683e-04   8.569e-02    1.000e+00  1.000e+00      2501 -8.646e+02 -8.646e+02                   
#> Path [1] :Best Iter: [49] ELBO (-661.727387) evaluations: (2501) 
#> Path [6] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>              99      -5.864e+02      4.325e-04   6.753e+00    1.000e+00  1.000e+00      2476 -6.850e+02 -6.850e+02                   
#> Path [2] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>              99      -5.855e+02      5.448e-03   2.277e+01    1.000e+00  1.000e+00      2476 -6.847e+02 -6.847e+02                   
#> Path [2] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             123      -5.854e+02      4.205e-04   1.956e-01    4.433e-01  4.433e-01      3076 -1.200e+03 -1.200e+03                   
#> Path [2] :Best Iter: [101] ELBO (-681.050138) evaluations: (3076) 
#> Path [6] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             153      -5.853e+02      8.429e-04   2.050e-01    1.000e+00  1.000e+00      3826 -4.474e+03 -4.474e+03                   
#> Path [6] :Best Iter: [127] ELBO (-679.735085) evaluations: (3826) 
#> Path [3] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             199      -1.463e+03      4.024e-02   2.453e+03    1.880e-01  1.880e-01      4976 -1.618e+03 -1.618e+03                   
#> Path [3] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             299      -1.415e+03      2.415e-01   1.322e+05    1.698e-01  3.418e-01      7476 -1.606e+03 -1.606e+03                   
#> Path [3] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             399      -1.314e+03      3.157e-01   1.600e+06    6.980e-01  6.980e-01      9976 -1.785e+03 -1.785e+03                   
#> Path [3] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes  
#>             492      -6.218e+02      1.854e-05   3.144e+04    8.008e-01  8.008e-01     12301 -3.149e+04 -3.149e+04                   
#> Path [3] :Best Iter: [383] ELBO (-1566.436377) evaluations: (12301) 
#> Total log probability function evaluations:32631 
#> Pareto k value (1.4) is greater than 0.7. Importance resampling was not able to improve the approximation, which may indicate that the approximation itself is poor. 
#> Finished in  0.3 seconds.
  
  model_cmdstan$sample(data = make_standata(data = body_weight, 
                                            formula = weight ~ diet + ar(p = 1, time = time2, gr=rat)+(1|rat)),
                       init = pathfinder_inits,
                       threads_per_chain = 1,
                       parallel_chains  = 6,
                       chains = 6) ->
    samples
#> Running MCMC with 6 parallel chains, with 1 thread(s) per chain...
#> Chain 1 Unrecoverable error evaluating the log probability at the initial value.
#> Chain 1 Exception: mismatch in number dimensions declared and found in context; processing stage=parameter initialization; variable name=z_1; dims declared=(1,16); dims found=(16) (in 'C:/Users/STBE21/AppData/Local/Temp/Rtmp08oU96/model-b0542cd44c4b.stan', line 38, column 2 to column 29)
#> Chain 2 Unrecoverable error evaluating the log probability at the initial value.
#> Chain 2 Exception: mismatch in number dimensions declared and found in context; processing stage=parameter initialization; variable name=z_1; dims declared=(1,16); dims found=(16) (in 'C:/Users/STBE21/AppData/Local/Temp/Rtmp08oU96/model-b0542cd44c4b.stan', line 38, column 2 to column 29)
#> Chain 3 Unrecoverable error evaluating the log probability at the initial value.
#> Chain 3 Exception: mismatch in number dimensions declared and found in context; processing stage=parameter initialization; variable name=z_1; dims declared=(1,16); dims found=(16) (in 'C:/Users/STBE21/AppData/Local/Temp/Rtmp08oU96/model-b0542cd44c4b.stan', line 38, column 2 to column 29)
#> Chain 4 Unrecoverable error evaluating the log probability at the initial value.
#> Chain 4 Exception: mismatch in number dimensions declared and found in context; processing stage=parameter initialization; variable name=z_1; dims declared=(1,16); dims found=(16) (in 'C:/Users/STBE21/AppData/Local/Temp/Rtmp08oU96/model-b0542cd44c4b.stan', line 38, column 2 to column 29)
#> Chain 5 Unrecoverable error evaluating the log probability at the initial value.
#> Chain 5 Exception: mismatch in number dimensions declared and found in context; processing stage=parameter initialization; variable name=z_1; dims declared=(1,16); dims found=(16) (in 'C:/Users/STBE21/AppData/Local/Temp/Rtmp08oU96/model-b0542cd44c4b.stan', line 38, column 2 to column 29)
#> Chain 6 Unrecoverable error evaluating the log probability at the initial value.
#> Chain 6 Exception: mismatch in number dimensions declared and found in context; processing stage=parameter initialization; variable name=z_1; dims declared=(1,16); dims found=(16) (in 'C:/Users/STBE21/AppData/Local/Temp/Rtmp08oU96/model-b0542cd44c4b.stan', line 38, column 2 to column 29)
#> Warning: Chain 1 finished unexpectedly!
#> Warning: Chain 2 finished unexpectedly!
#> Warning: Chain 3 finished unexpectedly!
#> Warning: Chain 4 finished unexpectedly!
#> Warning: Chain 5 finished unexpectedly!
#> Warning: Chain 6 finished unexpectedly!
#> Warning: All chains finished unexpectedly! Use the $output(chain_id) method for more information.
#> Warning: Use read_cmdstan_csv() to read the results of the failed chains.
#> Warning: No chains finished successfully. Unable to retrieve the fit.

Created on 2024-06-07 with reprex v2.1.0

Operating system
Windows 10.

CmdStanR version number

packageVersion("cmdstanr")
[1] ‘0.8.1’

@StaffanBetner StaffanBetner added the bug Something isn't working label Jun 7, 2024
@StaffanBetner
Copy link
Author

Probably same error as in #975

@StaffanBetner
Copy link
Author

Fixed by #993.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant