'Constructor.
Parameters
n_components : int
Number of hidden units.
name : str, optional (default = "dae")
Model name (used for save/load from disk).
loss_func : str, optional (default = "mse")
Loss function. [\'mse\', \'cross_entropy\']
enc_act_func : tf.nn.[activation]
Activation function for the encoder.
dec_act_func : tf.nn.[activation]
Activation function for the decoder.
num_epochs : int, optional (default = 10)
Number of epochs.
batch_size : int, optional (default = 10)
Size of each mini-batch.
opt : str, optional (default = "sgd")
Which tensorflow optimizer to use.
Possible values: [\'sgd\', \'momentum\', \'adagrad\', \'adam\']
learning_rate : float, optional (default = 0.01)
Initial learning rate.
momentum : float, optional (default = 0.9)
Momentum parameter (only used if opt = "momentum").
corr_type : str, optional (default = "none")
Type of input corruption.
Can be one of: ["none", "masking", "salt_and_pepper"]
corr_frac : float, optional (default = 0.0)
Fraction of the input to corrupt.
regtype : str, optional (default = "none")
Type of regularization to apply.
Can be one of: ["none", "l1", "l2"].
regcoef : float, optional (default = 5e-4)
Regularization parameter. If 0, no regularization.
Only considered if regtype != "none".'

def __init__(self, n_components, name='dae', loss_func='mse', enc_act_func=tf.nn.tanh, dec_act_func=None, num_epochs=10, batch_size=10, opt='sgd', learning_rate=0.01, momentum=0.9, corr_type='none', corr_frac=0.0, regtype='none', regcoef=0.0005):

    UnsupervisedModel.__init__(self, name)
    self.loss_func = loss_func
    self.learning_rate = learning_rate
    self.opt = opt
    self.num_epochs = num_epochs
    self.batch_size = batch_size
    self.momentum = momentum
    self.regtype = regtype
    self.regcoef = regcoef
    self.loss = Loss(self.loss_func)
    self.trainer = Trainer(opt, learning_rate=learning_rate, momentum=momentum)
    self.n_components = n_components
    self.enc_act_func = enc_act_func
    self.dec_act_func = dec_act_func
    self.corr_type = corr_type
    self.corr_frac = corr_frac
    self.input_data_orig = None
    self.input_data = None
    self.W_ = None
    self.bh_ = None
    self.bv_ = None
