code: def get_min_eig_vec_proxy(self, use_tf_eig=False):
      
      if use_tf_eig:
        # If smoothness parameter is too small, essentially no smoothing
        # Just output the eigen vector corresponding to min
        return tf.cond(self.smooth_placeholder < 1E-8,
                       self.tf_min_eig_vec,
                       self.tf_smooth_eig_vec)
  
      # Using autograph to automatically handle
      # the control flow of minimum_eigen_vector
      min_eigen_tf = autograph.to_graph(utils.minimum_eigen_vector)
  
      def _vector_prod_fn(x):
        return self.dual_object.get_psd_product(x)
  
      estimated_eigen_vector = min_eigen_tf(
          x=self.eig_init_vec_placeholder,
          num_steps=self.eig_num_iter_placeholder,
          learning_rate=self.params['eig_learning_rate'],
          vector_prod_fn=_vector_prod_fn)
      return estimated_eigen_vector
docs: Computes the min eigen value and corresponding vector of matrix M.
  
      Args:
        use_tf_eig: Whether to use tf's default full eigen decomposition
      Returns:
        eig_vec: Minimum absolute eigen value
        eig_val: Corresponding eigen vector