code: def initialize_optimizer(self, triggered_directly=True):
          
          args, kwargs = self._get_params_for_optimizer(
              'optimizer', self.module_.named_parameters())
  
          if self.initialized_ and self.verbose:
              msg = self._format_reinit_msg(
                  "optimizer", kwargs, triggered_directly=triggered_directly)
              print(msg)
  
          if 'lr' not in kwargs:
              kwargs['lr'] = self.lr
  
          self.optimizer_ = self.optimizer(*args, **kwargs)
  
          self._register_virtual_param(
              ['optimizer__param_groups__*__*', 'optimizer__*', 'lr'],
              optimizer_setter,
          )
docs: Initialize the model optimizer. If ``self.optimizer__lr``
          is not set, use ``self.lr`` instead.
  
          Parameters
          ----------
          triggered_directly : bool (default=True)
            Only relevant when optimizer is re-initialized.
            Initialization of the optimizer can be triggered directly
            (e.g. when lr was changed) or indirectly (e.g. when the
            module was re-initialized). If and only if the former
            happens, the user should receive a message informing them
            about the parameters that caused the re-initialization.