I am asking a probably stupid question about the Module API, though I am unable to figure that out for two days.
I want to manually change the parameters of a network during training and don’t know how to do this. Specifically, I am writing a method to perform spectral normalization, which divides all weights in a network by some value.
I have found in documents that the parameters of a module are stored in “self._exec_group.param_arrays” and “self._kvstore”, and I need to change both of them. But I don’t know how to replace the values in a “kvstore” object, whose updater has been set as an optimizer. Does anyone have idea about the problem? Is there any alternative way for achieving my purpose?
(I am using Module API because I am adapting a program from github, which uses Module API, and I am reluctant to rewrite it using Gluon or other deep learning frameworks.)
Hey @HaydenFaulkner, I would suggest trying to rewrite your model in Gluon, that would make it trivial to update the parameters and have better control on the flow of your data. Happy to assist you converting your Module code to Gluon, and hopefully convert you from Module to being a Gluon fan
If that’s not an option, feel free to post your code here
Thanks @ThomasDelteil! Sadly Gluon isn’t an option as I’m modifying an existing codebase. However I found that calling set_params({k: v}, allow_missing=True) on the module updated the params how I desired.