code: def replace_tensor_to_optimizer(self, tensor, name):
      optimizable_tensors = {}
      for group in self.optimizer.param_groups:
          if group["name"] == name:
              stored_state = self.optimizer.state.get(
                  group["params"][0], None
              )
              stored_state["exp_avg"] = torch.zeros_like(tensor)
              stored_state["exp_avg_sq"] = torch.zeros_like(tensor)
  
              del self.optimizer.state[group["params"][0]]
              group["params"][0] = nn.Parameter(
                  tensor.requires_grad_(True)
              )
              self.optimizer.state[group["params"][0]] = stored_state
  
              optimizable_tensors[group["name"]] = group["params"][0]
      return optimizable_tensors
  
imports: import torch
  import numpy
  from utils.general_utils import inverse_sigmoid, get_expon_lr_func, build_rotation
  from torch import nn
  import os
  from utils.system_utils import mkdir_p
  from plyfile import PlyData, PlyElement
  from utils.sh_utils import RGB2SH
  from simple_knn._C import distCUDA2
  from utils.graphics_utils import BasicPointCloud
  from utils.general_utils import strip_symmetric, build_scaling_rotation
label_desc: Use image node_id 19 for calling the GaussianModel obj's underlying member method code with example usage: obj.replace_tensor_to_optimizer(tensor, name) and returns: optimizable_tensors