code: def mlp(num_layers=2, num_hidden=64, activation=tf.tanh, layer_norm=False):
      
      def network_fn(X):
          h = tf.layers.flatten(X)
          for i in range(num_layers):
              h = fc(h, 'mlp_fc{}'.format(i), nh=num_hidden, init_scale=np.sqrt(2))
              if layer_norm:
                  h = tf.contrib.layers.layer_norm(h, center=True, scale=True)
              h = activation(h)
  
          return h
  
      return network_fn
docs: Stack of fully-connected layers to be used in a policy / q-function approximator
  
      Parameters:
      ----------
  
      num_layers: int                 number of fully-connected layers (default: 2)
  
      num_hidden: int                 size of fully-connected layers (default: 64)
  
      activation:                     activation function (default: tf.tanh)
  
      Returns:
      -------
  
      function that builds fully connected network with a given input tensor / placeholder