code: def set_wd_mult(self, args_wd_mult):
          
          self.wd_mult = {}
          for n in self.idx2name.values():
              if not (n.endswith('_weight') or n.endswith('_gamma')):
                  self.wd_mult[n] = 0.0
          if self.sym_info:
              attr, arg_names = self.sym_info
              for name in arg_names:
                  if name in attr and '__wd_mult__' in attr[name]:
                      self.wd_mult[name] = float(attr[name]['__wd_mult__'])
          self.wd_mult.update(args_wd_mult)
docs: Sets an individual weight decay multiplier for each parameter.
  
          By default, if `param_idx2name` was provided in the
          constructor, the weight decay multipler is set as 0 for all
          parameters whose name don't end with ``_weight`` or
          ``_gamma``.
  
          .. note:: The default weight decay multiplier for a `Variable`
              can be set with its `wd_mult` argument in the constructor.
  
          Parameters
          ----------
          args_wd_mult : dict of string/int to float
              For each of its key-value entries, the weight decay multipler for the
              parameter specified in the key will be set as the given value.
  
              You can specify the parameter with either its name or its index.
              If you use the name, you should pass `sym` in the constructor,
              and the name you specified in the key of `args_lr_mult` should match
              the name of the parameter in `sym`. If you use the index, it should
              correspond to the index of the parameter used in the `update` method.
  
              Specifying a parameter by its index is only supported for backward
              compatibility, and we recommend to use the name instead.