# Change optimizer parameters for multiresolution image registration

**URL:** <https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397>\
**Category:** Algorithms\
**Tags:** python\
**Created:** [November 8, 2017, 1:43am UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397 "2017-11-08T01:43:16Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![zhuangming.shen](https://discourse.itk.org/letter_avatar_proxy/v4/letter/z/4af34b/32.png) [@zhuangming.shen](https://discourse.itk.org/u/zhuangming.shen)\
**Post date:** [November 8, 2017, 1:43am UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397/1 "2017-11-08T01:43:20Z")

</div>

Hi all,

I saw the example of MultiResImageRegistration1.cxx can change the optimizer parameters (e.g learning rate) for different level of a image pyramid. But when I learnt from it to write python-supported ITK code, the optimizer parameters did not change. Did I miss something in the code below? Thanks in advance.

Here is my code

rigid\_registration = itk.ImageRegistrationMethodv4[itk.Image.F3, itk.Image.F3].New()

rigid\_optimizer = itk.RegularStepGradientDescentOptimizerv4[itk.D].New()  
rigid\_optimizer.SetScales(rigid\_optimizer\_scales)  
rigid\_optimizer.ReturnBestParametersAndValueOn()

if rigid\_registration.GetCurrentLevel() == 0:  
rigid\_optimizer.SetLearningRate(16.0)  
rigid\_optimizer.SetMinimumStepLength(2.5)  
else:  
rigid\_optimizer.SetLearningRate(rigid\_optimizer.GetCurrentStepLength())  
rigid\_optimizer.SetMinimumStepLength(rigid\_optimizer.GetMinimumStepLength()\*0.2)

# registration

rigid\_registration.SetFixedImage(caster\_fixed\_image.GetOutput())  
rigid\_registration.SetMovingImage(caster\_moving\_image.GetOutput())  
rigid\_registration.SetMetric(rigid\_metric)  
rigid\_registration.SetOptimizer(rigid\_optimizer)  
rigid\_registration.SetInitialTransform(rigid\_transform)

def iterationUpdate():  
print(rigid\_optimizer.GetLearningRate())

iteration\_command = itk.PyCommand.New()  
iteration\_command.SetCommandCallable(iterationUpdate)  
rigid\_optimizer.AddObserver(itk.IterationEvent(), iteration\_command)

rigid\_registration.Update()

---

<div class="post-metadata">

**Author:** ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)\
**Post date:** [November 8, 2017, 2:00pm UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397/2 "2017-11-08T14:00:40Z")

</div>

Hi @zhuangming.shen,

Could the complete code and data please be shared so the issue can be reproduced?

Thanks,  
Matt

---

<div class="post-metadata">

**Author:** ![zhuangming.shen](https://discourse.itk.org/letter_avatar_proxy/v4/letter/z/4af34b/32.png) [@zhuangming.shen](https://discourse.itk.org/u/zhuangming.shen)\
**Post date:** [November 9, 2017, 12:48am UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397/3 "2017-11-09T00:48:30Z")

</div>

Hi Matt,

Thanks for your reply. But the Upload in discourse can only support file formats such as jpg, jpeg, png, etc. How can I shared my code and data?

Regards,

Zhuangming Shen

---

<div class="post-metadata">

**Author:** ![zhuangming.shen](https://discourse.itk.org/letter_avatar_proxy/v4/letter/z/4af34b/32.png) [@zhuangming.shen](https://discourse.itk.org/u/zhuangming.shen)\
**Post date:** [November 9, 2017, 2:40am UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397/4 "2017-11-09T02:40:57Z")

</div>

Hi Matt,

I just sent my code and data to your kitware’s email.

Regards,

Zhuangming Shen

---

<div class="post-metadata">

**Author:** ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)\
**Post date:** [November 10, 2017, 9:06pm UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397/5 "2017-11-10T21:06:18Z")

</div>

Hi Zhuangming Shen,

Thank you for sending the data. I also fixed the Discourse setting so we can upload any file type now.

However, the file was still over the size limit, so I uploaded it here:

[https://drive.google.com/file/d/0B986LSX8iqF-ckxkS1UyemJVYWVyVlc3Y0RWQ1ljdGdiWmxV/view?usp=sharing](https://drive.google.com/file/d/0B986LSX8iqF-ckxkS1UyemJVYWVyVlc3Y0RWQ1ljdGdiWmxV/view?usp=sharing)

Thanks,  
Matt

---

<div class="post-metadata">

**Author:** ![dzenanz](https://discourse.itk.org/user_avatar/discourse.itk.org/dzenanz/32/1093_2.png) [@dzenanz](https://discourse.itk.org/u/dzenanz)\
**Post date:** [November 12, 2017, 2:23pm UTC](https://discourse.itk.org/t/change-optimizer-parameters-for-multiresolution-image-registration/397/6 "2017-11-12T14:23:08Z")

</div>

> [@matt.mccormick](#):
>
> I also fixed the Discourse setting so we can upload any file type now.

Great! The limitation to just embedding images was so annoying! The only option was to make code part of the post.
