'Create the computational graph.
Parameters
n_features : int
Number of units in the input layer.
W_ : array_like, optional (default = None)
Weight matrix np array.
bh_ : array_like, optional (default = None)
Hidden bias np array.
bv_ : array_like, optional (default = None)
Visible bias np array.
Returns
self'

def build_model(self, n_features, W_=None, bh_=None, bv_=None):

    self._create_placeholders(n_features)
    self._create_variables(n_features, W_, bh_, bv_)
    self._create_encode_layer()
    self._create_decode_layer()
    variables = [self.W_, self.bh_, self.bv_]
    regterm = Layers.regularization(variables, self.regtype, self.regcoef)
    self.cost = self.loss.compile(self.reconstruction, self.input_data_orig, regterm=regterm)
    self.train_step = self.trainer.compile(self.cost)
