def __init__(self, num_visible, num_hidden, visible_unit_type='bin', main_dir='/Users/chamalgomes/Documents/Python/GitLab/DeepLearning/KAI PROJECT/rbm/models', model_name='rbm_model', gibbs_sampling_steps=1, learning_rate=0.01, momentum=0.9, l2=0.001, batch_size=10, num_epochs=10, stddev=0.1, verbose=0, plot_training_loss=True):
    '"\n        INPUT PARAMETER 1) num_visible: number of visible units in the RBM \n        INPUT PARAMETER 2) num_hidden: number of hidden units in the RBM\n        INPUT PARAMETER 3) main_dir: main directory to put the models, data and summary directories\n        INPUT PARAMETER 4) model_name: name of the model you wanna save the data \n        INPUT PARAMETER 5) gibbs_sampling_steps: Default 1 (Hence Optional)\n        INPUT PARAMETER 6) learning_rate: Default 0.01 (Hence Optional) \n        INPUT PARAMETER 7) momentum: Default 0.9(Hence Optional) for Gradient Descent \n        INPUT PARAMETER 8) l2: l2 regularization lambda value for weight decay Default 0.001(Hence Optional)\n        INPUT PARAMETER 9) batch_size: Default 10 (Hence Optional)\n        INPUT PARAMETER 10) num_epochs: Default 10 (Hence Optional)\n        INPUT PARAMETER 11) stddev: optional, default 0.1. Ignored if visible_unit_type is not \'gauss\'\n        INPUT PARAMETER 12) verbose: evel of verbosity. optional, default 0(for Regularization)\n        INPUT PARAMETER 13) plot_training_loss: whether or not to plot training loss, default True\n        INPUT PARAMETER 14) visible_units_type: Binary or Gaussian (Default Binary)\n        '
    self.num_visible = num_visible
    self.num_hidden = num_hidden
    self.main_dir = main_dir
    self.model_name = model_name
    self.gibbs_sampling_steps = gibbs_sampling_steps
    self.learning_rate = learning_rate
    self.momentum = momentum
    self.l2 = l2
    self.batch_size = batch_size
    self.num_epochs = num_epochs
    self.stddev = stddev
    self.verbose = verbose
    self.plot_training_loss = plot_training_loss
    self.visible_unit_type = visible_unit_type
    self._create_model_directory()
    self.model_path = os.path.join(self.main_dir, self.model_name)
    self.W = None
    self.bh_ = None
    self.bv_ = None
    self.dw = None
    self.dbh_ = None
    self.dbv_ = None
    self.w_upd8 = None
    self.bh_upd8 = None
    self.bv_upd8 = None
    self.encode = None
    self.recontruct = None
    self.loss_function = None
    self.batch_cost = None
    self.batch_free_energy = None
    self.training_losses = []
    self.input_data = None
    self.hrand = None
    self.validation_size = None
    self.tf_session = None
    self.tf_saver = None
"
INPUT PARAMETER 1) num_visible: number of visible units in the RBM 
INPUT PARAMETER 2) num_hidden: number of hidden units in the RBM
INPUT PARAMETER 3) main_dir: main directory to put the models, data and summary directories
INPUT PARAMETER 4) model_name: name of the model you wanna save the data 
INPUT PARAMETER 5) gibbs_sampling_steps: Default 1 (Hence Optional)
INPUT PARAMETER 6) learning_rate: Default 0.01 (Hence Optional) 
INPUT PARAMETER 7) momentum: Default 0.9(Hence Optional) for Gradient Descent 
INPUT PARAMETER 8) l2: l2 regularization lambda value for weight decay Default 0.001(Hence Optional)
INPUT PARAMETER 9) batch_size: Default 10 (Hence Optional)
INPUT PARAMETER 10) num_epochs: Default 10 (Hence Optional)
INPUT PARAMETER 11) stddev: optional, default 0.1. Ignored if visible_unit_type is not 'gauss'
INPUT PARAMETER 12) verbose: evel of verbosity. optional, default 0(for Regularization)
INPUT PARAMETER 13) plot_training_loss: whether or not to plot training loss, default True
INPUT PARAMETER 14) visible_units_type: Binary or Gaussian (Default Binary)
def __init__(self, num_visible, num_hidden, visible_unit_type='bin', main_dir='/Users/chamalgomes/Documents/Python/GitLab/DeepLearning/KAI PROJECT/rbm/models', model_name='rbm_model', gibbs_sampling_steps=1, learning_rate=0.01, momentum=0.9, l2=0.001, batch_size=10, num_epochs=10, stddev=0.1, verbose=0, plot_training_loss=True):
    '"\n        INPUT PARAMETER 1) num_visible: number of visible units in the RBM \n        INPUT PARAMETER 2) num_hidden: number of hidden units in the RBM\n        INPUT PARAMETER 3) main_dir: main directory to put the models, data and summary directories\n        INPUT PARAMETER 4) model_name: name of the model you wanna save the data \n        INPUT PARAMETER 5) gibbs_sampling_steps: Default 1 (Hence Optional)\n        INPUT PARAMETER 6) learning_rate: Default 0.01 (Hence Optional) \n        INPUT PARAMETER 7) momentum: Default 0.9(Hence Optional) for Gradient Descent \n        INPUT PARAMETER 8) l2: l2 regularization lambda value for weight decay Default 0.001(Hence Optional)\n        INPUT PARAMETER 9) batch_size: Default 10 (Hence Optional)\n        INPUT PARAMETER 10) num_epochs: Default 10 (Hence Optional)\n        INPUT PARAMETER 11) stddev: optional, default 0.1. Ignored if visible_unit_type is not \'gauss\'\n        INPUT PARAMETER 12) verbose: evel of verbosity. optional, default 0(for Regularization)\n        INPUT PARAMETER 13) plot_training_loss: whether or not to plot training loss, default True\n        INPUT PARAMETER 14) visible_units_type: Binary or Gaussian (Default Binary)\n        '
    self.num_visible = num_visible
    self.num_hidden = num_hidden
    self.main_dir = main_dir
    self.model_name = model_name
    self.gibbs_sampling_steps = gibbs_sampling_steps
    self.learning_rate = learning_rate
    self.momentum = momentum
    self.l2 = l2
    self.batch_size = batch_size
    self.num_epochs = num_epochs
    self.stddev = stddev
    self.verbose = verbose
    self.plot_training_loss = plot_training_loss
    self.visible_unit_type = visible_unit_type
    self._create_model_directory()
    self.model_path = os.path.join(self.main_dir, self.model_name)
    self.W = None
    self.bh_ = None
    self.bv_ = None
    self.dw = None
    self.dbh_ = None
    self.dbv_ = None
    self.w_upd8 = None
    self.bh_upd8 = None
    self.bv_upd8 = None
    self.encode = None
    self.recontruct = None
    self.loss_function = None
    self.batch_cost = None
    self.batch_free_energy = None
    self.training_losses = []
    self.input_data = None
    self.hrand = None
    self.validation_size = None
    self.tf_session = None
    self.tf_saver = None