docstr: :param data_interface: an interface class to data related params
  :param model_interface: an interface class to access trained ML model
docstr_tok: [":","param","data_interface",":","an","interface","class","to","data","related","params",":","param","model_interface",":","an","interface","class","to","access","trained","ML","model"]
code: def __init__(self, data_interface, model_interface, **kwargs):
      """
      :param data_interface: an interface class to data related params
      :param model_interface: an interface class to access trained ML model
      """
  
      # initiating data related parameters
      super().__init__(data_interface)
  
      # Black Box ML Model to be explained
      self.pred_model = model_interface.model
  
      (
          self.minx,
          self.maxx,
          self.encoded_categorical_feature_indexes,
          self.encoded_continuous_feature_indexes,
          self.cont_minx,
          self.cont_maxx,
          self.cont_precisions,
      ) = self.data_interface.get_data_params_for_gradient_dice()
      self.data_interface.one_hot_encoded_data = (
          self.data_interface.one_hot_encode_data(
              self.data_interface.data_df
          )
      )
      # Hyperparam
      self.encoded_size = kwargs["encoded_size"]
      self.learning_rate = kwargs["lr"]
      self.batch_size = kwargs["batch_size"]
      self.validity_reg = kwargs["validity_reg"]
      self.margin = kwargs["margin"]
      self.epochs = kwargs["epochs"]
      self.wm1 = kwargs["wm1"]
      self.wm2 = kwargs["wm2"]
      self.wm3 = kwargs["wm3"]
  
      # Initializing parameters for the DiceBaseGenCF
      (
          self.vae_train_dataset,
          self.vae_val_dataset,
          self.vae_test_dataset,
          self.normalise_weights,
          self.cf_vae,
          self.cf_vae_optimizer,
      ) = get_base_gen_cf_initialization(
          self.data_interface,
          self.encoded_size,
          self.cont_minx,
          self.cont_maxx,
          self.margin,
          self.validity_reg,
          self.epochs,
          self.wm1,
          self.wm2,
          self.wm3,
          self.learning_rate,
      )
  
      # Data paths
      self.base_model_dir = (
          "../../../dice_ml/utils/sample_trained_models/"
      )
      self.save_path = (
          self.base_model_dir
          + self.data_interface.data_name
          + "-margin-"
          + str(self.margin)
          + "-validity_reg-"
          + str(self.validity_reg)
          + "-epoch-"
          + str(self.epochs)
          + "-"
          + "base-gen"
          + ".pth"
      )
  
file_path: DiCE/dice_ml/explainer_interfaces/feasible_base_vae.py
imports: import numpy
  import torch
  import torch.utils.data
  from torch.nn import functional
  from dice_ml import diverse_counterfactuals
  from dice_ml.explainer_interfaces.explainer_base import ExplainerBase
  from dice_ml.utils.helpers import get_base_gen_cf_initialization
label_desc: Use image node_id 1 to create a new FeasibleBaseVAE object from inherited base classes: ExplainerBase with example: obj = FeasibleBaseVAE(data_interface, model_interface)