Which derivatives are computed by SetParameterBlockConstant

93 views
Skip to first unread message

Janos Meny

unread,
Apr 11, 2018, 3:53:43 AM4/11/18
to Ceres Solver
Hey guys,

If I set a block constant using SetParameterBlockConstant, are the derivatives still computed with respect to this parameter block or is the optimization really treated as if these parameters are constants?
My motivation is the following: I want to optimze against a set of parameter blocks using Levenberg Marquardt. To improve convergence I set everything constant except for the first block and then optimize, then I set the first to blocks to be variable , optimize and so on. If the derivatives would be computed w.r.t. all parameters I would expect convergence to be worse than using a loss function, where the fixed parameter blocks really are constants.

Greetings

Janos

Alex Stewart

unread,
Apr 11, 2018, 5:41:23 AM4/11/18
to ceres-...@googlegroups.com
Hi Janos,

Calling SetParameterBlockConstant() means that no derivatives with respect to it will be calculated.  The parameters in the block are treated as constants, and do not appear in the reduced problem that is actually optimised.  If you look at the output of FullReport(), this is what the 'Original' (added to Problem) and 'Reduced' (not held constant, or solely a function of parameter blocks held constant) headings for the number of parameters/residuals are referring to.

-Alex

--
You received this message because you are subscribed to the Google Groups "Ceres Solver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ceres-solver...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/6208d643-974d-4f76-b6ad-8633a05513dd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages