code: def tf_smooth_eig_vec(self):
      
      _, matrix_m = self.dual_object.get_full_psd_matrix()
      # Easier to think in terms of max so negating the matrix
      [eig_vals, eig_vectors] = tf.self_adjoint_eig(-matrix_m)
      exp_eig_vals = tf.exp(tf.divide(eig_vals, self.smooth_placeholder))
      scaling_factor = tf.reduce_sum(exp_eig_vals)
      # Multiplying each eig vector by exponential of corresponding eig value
      # Scaling factor normalizes the vector to be unit norm
      eig_vec_smooth = tf.divide(
          tf.matmul(eig_vectors, tf.diag(tf.sqrt(exp_eig_vals))),
          tf.sqrt(scaling_factor))
      return tf.reshape(
          tf.reduce_sum(eig_vec_smooth, axis=1),
          shape=[eig_vec_smooth.shape[0].value, 1])
docs: Function that returns smoothed version of min eigen vector.