I feel like I’ve seen an example somewhere of how to construct an `Optimization.OptimizationFunction`

from a Turing model, but am not finding it at the moment. Can anyone help me find it? Did I imagine this functionality?

I can use the Optim.jl interface for MLE/MAP estimation no problem, but would like to try fitting some models with the wider galaxy of solvers that are easily available through Optimization.jl.

1 Like

Giving this a bump…the example below lets me create an `OptimizationFunction`

and `OptimizationProblem`

from the Turing model, but throws a `StackOverflowError`

when I try to `solve`

it. Is this a bug, or just functionality that isn’t implemented?

```
using Turing
using Optimization, OptimizationOptimJL
@model function example(x, y)
a ~ Normal()
b ~ Normal()
σ ~ Gamma()
μ = a .+ b .* x
y ~ MvNormal(μ, σ)
end
x = rand(10)
y = 1 .+ 2x + randn(10)
m = example(x, y)
f = OptimizationFunction(m)
p = OptimizationProblem(f, zeros(3))
solve(p, NelderMead())
```

1 Like

There is an exported interface, but it’s not documented:

```
julia> p = optim_problem(m, MAP());
julia> solve(p.prob, NelderMead())
retcode: Success
u: 3-element Vector{Float64}:
1.250061897354349
1.5422820485580477
1.055306850982959
```

1 Like

Thanks! I knew I’d seen it somewhere. Would a documentation PR be wanted, or is this interface still experimental?

I don’t know of there’s a reason. I’d recommend opening an issue first to find out before putting in the work.