[Insight-developers] Proper use of SetCostFunctionConvergenceFactor

Bill Lorensen bill.lorensen at gmail.com
Tue Apr 8 13:24:36 EDT 2008


Luis,

The check should be for < 1.0. I think that .1 means 10 times better
than machine precision which is too small.

Bill

On Tue, Apr 8, 2008 at 11:32 AM, Luis Ibanez <luis.ibanez at kitware.com> wrote:
>
>  Hi Bill,
>
>  That was a great catch !,
>
>  Thanks for fixing the parameter values.
>
>  A check has just been added to the itkLBFGSBOptimizer
>  in this method. Now and exception is thrown if the value
>  is less than 0.1.
>
>  This has been committed to CVS.
>
>
>  Certainly, choosing proper parameters for the convergence
>  has been one of the main challenges when using this optimizer.
>
>
>    Luis
>
>
>  ---------------------
>
>
>  Bill Lorensen wrote:
>
> > Guys,
> >
> > I noticed that a couple of registration examples that use the lbfgsb
> > optimizer were setting the cost function convergence factor as though
> > it were an epsilon. Actually, it is a factor that is multiplied times
> > the machine precision to compute. Hence, a number < 1 (some examples
> > used 1.e-35) result in a tolerance below the precision of the machine.
> > As stated in the comments of the optimizer:
> >
> > /** Set/Get the CostFunctionConvergenceFactor. Algorithm terminates
> >   * when the reduction in cost function is less than factor * epsmcj
> >   * where epsmch is the machine precision.
> >   * Typical values for factor: 1e+12 for low accuracy;
> >    * 1e+7 for moderate accuracy and 1e+1 for extremely high accuracy.
> >    */
> >
> > I fixed two examples. They were occasionally failing on some
> > platforms. On the Borland platform at least one was aborting on a
> > divide by zero.
> >
> >
> http://public.kitware.com/cgi-bin/viewcvs.cgi/Examples/Registration/DeformableRegistration12.cxx?root=Insight&r1=1.9&r2=1.10
> >
> http://public.kitware.com/cgi-bin/viewcvs.cgi/Examples/Registration/DeformableRegistration8.cxx?root=Insight&r1=1.22&r2=1.23
> >
> > Maybe we should put a check in the Set method to prevent future misuse
> > of this variable.
> >
> > Bill
> >
> >
>


More information about the Insight-developers mailing list