code: def test_set_custom_optimizer(
      self,
      model_sample,
      train_dataset,
      training_configs_learning_rate,
      optimizer_config,
  ):
      trainer = BaseTrainer(
          model=model_sample,
          train_dataset=train_dataset,
          training_config=training_configs_learning_rate,
      )
  
      trainer.set_optimizer()
  
      assert issubclass(
          type(trainer.optimizer),
          getattr(torch.optim, optimizer_config["optimizer_cls"]),
      )
      assert (
          trainer.optimizer.defaults["lr"]
          == training_configs_learning_rate.learning_rate
      )
      if optimizer_config["optimizer_params"] is not None:
          assert all(
              [
                  trainer.optimizer.defaults[key]
                  == optimizer_config["optimizer_params"][key]
                  for key in optimizer_config["optimizer_params"].keys()
              ]
          )
  
imports: import os
  from copy import deepcopy
  import pytest
  import torch
  from pythae.customexception import ModelError
  from pythae.models import AE, RHVAE, VAE, AEConfig, RHVAEConfig, VAEConfig
  from pythae.trainers import BaseTrainer, BaseTrainerConfig
  from tests.data.custom_architectures import *
label_desc: Use image node_id 6 for calling the Test_Build_Optimizer obj's underlying member method code with example usage: obj.test_set_custom_optimizer(model_sample, train_dataset, training_configs_learning_rate, optimizer_config) without return types