# Passing gradient to Optim

**URL:** <https://discourse.julialang.org/t/passing-gradient-to-optim/29635>\
**Category:** New to Julia\
**Created:** [October 8, 2019, 5:54am UTC](https://discourse.julialang.org/t/passing-gradient-to-optim/29635 "2019-10-08T05:54:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ASF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asf/32/10610_2.png) [@ASF](https://discourse.julialang.org/u/ASF)\
**Post date:** [October 8, 2019, 5:54am UTC](https://discourse.julialang.org/t/passing-gradient-to-optim/29635/1 "2019-10-08T05:54:09Z")

</div>

i have the following code:

```julia
solution = Optim.minimizer(optimize(θ->J(X,θ),θ,g!,LBFGS())))

```

where X,θ are arrays and g! is the gradient function. I get the following error only when trying to specify the gradient function g!  
MethodError: no method matching optimize(::getfield(Main, Symbol(“##174#175”)), ::Array{Float64,1}, ::typeof(g!), ::LBFGS{Nothing,LineSearches.InitialStatic{Float64},LineSearches.HagerZhang{Float64,Base.RefValue{Bool}},getfield(Optim, Symbol(“##19#21”))})

Any suggestions?

---

<div class="post-metadata">

**Author:** ![mzaffalon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mzaffalon/32/214168_2.png) [@mzaffalon](https://discourse.julialang.org/u/mzaffalon)\
**Post date:** [October 8, 2019, 6:13am UTC](https://discourse.julialang.org/t/passing-gradient-to-optim/29635/2 "2019-10-08T06:13:03Z")

</div>

It looks like you exchanged the places of `θ` and `g!` and it should instead be  
`solution = Optim.minimizer(optimize(θ->J(X,θ),g!,θ,LBFGS())))`

See also [the manual](https://julianlsolvers.github.io/Optim.jl/stable/#user/gradientsandhessians/#example).

---

<div class="post-metadata">

**Author:** ![ASF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asf/32/10610_2.png) [@ASF](https://discourse.julialang.org/u/ASF)\
**Post date:** [October 8, 2019, 7:01am UTC](https://discourse.julialang.org/t/passing-gradient-to-optim/29635/3 "2019-10-08T07:01:36Z")

</div>

ive tried different argument positions but the result is the same

---

<div class="post-metadata">

**Author:** ![mzaffalon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mzaffalon/32/214168_2.png) [@mzaffalon](https://discourse.julialang.org/u/mzaffalon)\
**Post date:** [October 8, 2019, 7:04am UTC](https://discourse.julialang.org/t/passing-gradient-to-optim/29635/4 "2019-10-08T07:04:41Z")

</div>

Can you post a minimal (non)working example of you code?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [October 8, 2019, 7:12am UTC](https://discourse.julialang.org/t/passing-gradient-to-optim/29635/5 "2019-10-08T07:12:52Z")

</div>

I had a similar question, maybe this helps:

[https://github.com/JuliaNLSolvers/NLSolversBase.jl/issues/106](https://github.com/JuliaNLSolvers/NLSolversBase.jl/issues/106)
