<div dir="ltr"><p>Hi joel</p>
<p>I think its clear ... do you want to implement this approach in v4 ?   the &quot;regular step&quot; type behavior is what we achieve by other methods in v4 - i.e. the steps detailed to you previously.   we can help with a v4 implementation of the v3 version, if you like. </p>

<p style>if you prefer to fix v3 then, as brad said, there are several tests that will need adjustment.  am sure someone would help with that too.</p><p style>b</p><p>---------- Forwarded message ----------</p><div class="gmail_quote">

From: &quot;Joël Schaerer&quot; &lt;<a href="mailto:joel.schaerer@gmail.com" target="_blank">joel.schaerer@gmail.com</a>&gt;<br>Da<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div>Hi Nick,<br>
      <br>
      What I called the &quot;first scaling&quot; is the application of scales
      that is done before gradient normalization, in the AdvanceOneStep
      method:<br>
      <br>
      itkRegularStepGradientDescentBaseOptimizer.cxx<br>
      187   for ( unsigned int i = 0; i &lt; spaceDimension; i++ )<br>
      188     {<br>
      189     transformedGradient[i]  = m_Gradient[i] / scales[i];<br>
      190     previousTransformedGradient[i] =<br>
      191       m_PreviousGradient[i] / scales[i];<br>
      192     }<br>
      <br>
      The &quot;second scaling&quot; would be my proposed change, replacing <br>
      <br>
      itkRegularStepGradientDescentOptimizer.cxx<br>
       42   for ( unsigned int j = 0; j &lt; spaceDimension; j++ )<br>
       43     {<br>
       44     newPosition[j] = currentPosition[j] +
      transformedGradient[j] * factor;<br>
       45     }<br>
       46<br>
      <br>
      with<br>
      <br>
      itkRegularStepGradientDescentOptimizer.cxx<br>
       42   for ( unsigned int j = 0; j &lt; spaceDimension; j++ )<br>
       43     {<br>
       44     newPosition[j] = currentPosition[j] +
      transformedGradient[j] * factor  / scales[j];<br>
       45     }<br>
       46<br>
      <br>
      basically a second application of the parameter scales.<br>
      <br>
      I hope this is clearer?<br>
      <br>
      joel<br>
      <br>
      On 07/05/2013 23:22, Nick Tustison wrote:<br>
    </div>
    <blockquote type="cite">
      
      Hi Joel,
      <div><br>
      </div>
      <div>Also, could you clarify your question a bit?  The snippet of
        interest in </div>
      <div>the old itkRegularStepGradientOptimizer is</div>
      <div><br>
      </div>
      <div>
        <div>  for(unsigned int j=0; j&lt;spaceDimension; j++)</div>
        <div>    {</div>
        <div>    newPosition[j] = currentPosition[j] +
          transformedGradient[j] * factor;</div>
        <div>    }</div>
      </div>
      <div><br>
      </div>
      <div>When you write of &quot;first scaling&quot; are you referring to
        multiplication by </div>
      <div>&quot;factor&quot;? </div>
      <div><br>
      </div>
      <div>Nick</div>
      <div><br>
      </div>
      <br>
    </blockquote>
    <br>
  </div>

</blockquote></div>
</div>