# Optimizing a Loss Function that takes arguments in addition to parameters

**URL:** <https://discourse.julialang.org/t/optimizing-a-loss-function-that-takes-arguments-in-addition-to-parameters/56040>\
**Category:** General Usage\
**Tags:** optim, optimization\
**Created:** [February 25, 2021, 7:12pm UTC](https://discourse.julialang.org/t/optimizing-a-loss-function-that-takes-arguments-in-addition-to-parameters/56040 "2021-02-25T19:12:35Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![donkeysaddle](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@donkeysaddle](https://discourse.julialang.org/u/donkeysaddle)\
**Post date:** [February 25, 2021, 7:12pm UTC](https://discourse.julialang.org/t/optimizing-a-loss-function-that-takes-arguments-in-addition-to-parameters/56040/1 "2021-02-25T19:12:36Z")

</div>

If I have a loss function that I want to use for optimizing a set of parameters, can that function take additional arguments as well (e.g., arrays that might vary in size, and boolean statements)?

If the answer is “yes”, how do I pass these other arguments to Optim.optimize?

---

<div class="post-metadata">

**Author:** ![mcreel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mcreel/32/30088_2.png) [@mcreel](https://discourse.julialang.org/u/mcreel)\
**Post date:** [February 26, 2021, 6:19am UTC](https://discourse.julialang.org/t/optimizing-a-loss-function-that-takes-arguments-in-addition-to-parameters/56040/2 "2021-02-26T06:19:07Z")

</div>

This is done using a closure, for example,  
` obj = θ -> -1.0*H(θ, θnn, 10, auxstat, NNmodel, info)`  
The free argument θ is what is optimized over, and the others are fixed. Then you call an optimizer in Optim.jl doing something like  
` θsa = (Optim.optimize(obj, model.lb, model.ub, θnn, SAMIN(rt=rt, verbosity=sa_verbosity),Optim.Options(iterations=10^6))).minimizer `

There is a nice tutorial at [https://github.com/PaulSoderlind/JuliaTutorial/blob/master/Tutorial\_22\_Optimization1.ipynb](https://github.com/PaulSoderlind/JuliaTutorial/blob/master/Tutorial_22_Optimization1.ipynb)

---

<div class="post-metadata">

**Author:** ![donkeysaddle](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@donkeysaddle](https://discourse.julialang.org/u/donkeysaddle)\
**Post date:** [February 26, 2021, 5:48pm UTC](https://discourse.julialang.org/t/optimizing-a-loss-function-that-takes-arguments-in-addition-to-parameters/56040/3 "2021-02-26T17:48:03Z")

</div>

Thanks so much, will take a look.

I think this is exactly what I was looking for.
