# Strange errors occurred when I optimized with Zygote and Optim

**URL:** <https://discourse.julialang.org/t/strange-errors-occurred-when-i-optimized-with-zygote-and-optim/47461>\
**Category:** General Usage\
**Tags:** optim, zygote\
**Created:** [September 29, 2020, 3:20am UTC](https://discourse.julialang.org/t/strange-errors-occurred-when-i-optimized-with-zygote-and-optim/47461 "2020-09-29T03:20:41Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![F-YF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/f-yf/32/17363_2.png) [@F-YF](https://discourse.julialang.org/u/F-YF)\
**Post date:** [September 29, 2020, 3:20am UTC](https://discourse.julialang.org/t/strange-errors-occurred-when-i-optimized-with-zygote-and-optim/47461/1 "2020-09-29T03:20:41Z")

</div>

Why do I get a bivariate gradient function when I optimize the objective function?How can I solve it?

> using Zygote  
> using Optim  
> using RecursiveArrayTools  
> **#This is the target function that I’m optimizing**  
> function get\_f(A)  
>   M=reshape(1:16,4,4)  
>   U=exp(A)  
>   T=U_M_U’  
>   return tr(T)  
> end  
> function my\_function()  
>   g(A)=gradient(A-\>get\_f(A), A)[1] **# This is my gradient function**  
>   A0=zeros(4,4)  
>   results=optimize(get\_f,g,VectorOfArray([A0]), LBFGS())  
> end

The error message reads:

> MethodError: no method matching (::var"#get\_g#4")(::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}, ::VectorOfArray{Float64,3,Array{Array{Float64,2},1}})  
> Closest candidates are:  
> get\_g(::Any) at In[3]:2  
> …  
> Stacktrace:  
> [1] (::NLSolversBase.var"#fg!#8"{typeof(get\_f),var"#get\_g#4"})(::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}, ::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}) at C:\Users\38606.julia\packages\NLSolversBase\NsXIC\src\objective\_types\abstract.jl:13  
> [2] value\_gradient!!(::OnceDifferentiable{Float64,VectorOfArray{Float64,3,Array{Array{Float64,2},1}},VectorOfArray{Float64,3,Array{Array{Float64,2},1}}}, ::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}) at C:\Users\38606.julia\packages\NLSolversBase\NsXIC\src\interface.jl:82  
> [3]initial\_state(::LBFGS{Nothing,LineSearches.InitialStatic{Float64},LineSearches.HagerZhang{Float64,Base.RefValue{Bool}},Optim.var"#15#17"}, ::Optim.Options{Float64,Nothing}, ::OnceDifferentiable{Float64,VectorOfArray{Float64,3,Array{Array{Float64,2},1}},VectorOfArray{Float64,3,Array{Array{Float64,2},1}}}, ::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}) at C:\Users\38606.julia\packages\Optim\TNmSw\src\multivariate\solvers\first\_order\l\_bfgs.jl:158  
> [4]optimize(::OnceDifferentiable{Float64,VectorOfArray{Float64,3,Array{Array{Float64,2},1}},VectorOfArray{Float64,3,Array{Array{Float64,2},1}}}, ::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}, ::LBFGS{Nothing,LineSearches.InitialStatic{Float64},LineSearches.HagerZhang{Float64,Base.RefValue{Bool}},Optim.var"#15#17"}, ::Optim.Options{Float64,Nothing}) at C:\Users\38606.julia\packages\Optim\TNmSw\src\multivariate\optimize\optimize.jl:33  
> [5] #optimize#91 at C:\Users\38606.julia\packages\Optim\TNmSw\src\multivariate\optimize\interface.jl:129 [inlined]  
> [6] optimize(::Function, ::Function, ::VectorOfArray{Float64,3,Array{Array{Float64,2},1}}, ::LBFGS{Nothing,LineSearches.InitialStatic{Float64},LineSearches.HagerZhang{Float64,Base.RefValue{Bool}},Optim.var"#15#17"}, ::Optim.Options{Float64,Nothing}) at C:\Users\38606.julia\packages\Optim\TNmSw\src\multivariate\optimize\interface.jl:127 (repeats 2 times)  
> [7] my\_function() at .\In[3]:4  
> [8] top-level scope at In[4]:1  
> [9] include\_string(::Function, ::Module, ::String, ::String) at .\loading.jl:1091

---

<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:** [September 29, 2020, 1:00pm UTC](https://discourse.julialang.org/t/strange-errors-occurred-when-i-optimized-with-zygote-and-optim/47461/2 "2020-09-29T13:00:41Z")

</div>

Please do not post essentially the same question multiple times. Cf

> [@Does Optim not support function optimization with matrix variables?](https://discourse.julialang.org/t/does-optim-not-support-function-optimization-with-matrix-variables/47475):
>
> I want to optimize my function with Optim, but something went wrong . I have written an example. Does this example show that optim.jl does not support functions whose variables are matrices?If not, what should I do about it? using Zygote using Optim using RecursiveArrayTools function get\_f(A)   M=reshape(1:16,4,4)   U=exp(A)   T=UMU’   return tr(T) end function my\_function()   A0=zeros(4,4)   results=optimize(get\_f,VectorOfArray([A0])) end my\_function() And the…

---

<div class="post-metadata">

**Author:** ![F-YF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/f-yf/32/17363_2.png) [@F-YF](https://discourse.julialang.org/u/F-YF)\
**Post date:** [October 4, 2020, 7:06am UTC](https://discourse.julialang.org/t/strange-errors-occurred-when-i-optimized-with-zygote-and-optim/47461/3 "2020-10-04T07:06:20Z")

</div>

I think these are two completely different questions, although the examples used are similar

> [@Tamas\_Papp](#):
>
> Please do not post essentially the same question multiple times.

---

<div class="post-metadata">

**Author:** ![F-YF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/f-yf/32/17363_2.png) [@F-YF](https://discourse.julialang.org/u/F-YF)\
**Post date:** [October 4, 2020, 7:09am UTC](https://discourse.julialang.org/t/strange-errors-occurred-when-i-optimized-with-zygote-and-optim/47461/4 "2020-10-04T07:09:01Z")

</div>

I added gradients to this problem to optimize it, and a new problem arose
