code: def get_psd_product(self, vector, dtype=None):
      
      # For convenience, think of x as [\alpha, \beta]
      if dtype is None:
        dtype = self.nn_dtype
      vector = tf.cast(vector, self.nn_dtype)
      alpha = tf.reshape(vector[0], shape=[1, 1])
      beta = vector[1:]
      # Computing the product of matrix_h with beta part of vector
      # At first layer, h is simply diagonal
      h_beta = self.get_h_product(beta)
  
      # Constructing final result using vector_g
      result = tf.concat(
          [
              alpha * self.nu + tf.reduce_sum(tf.multiply(beta, self.vector_g)),
              tf.multiply(alpha, self.vector_g) + h_beta
          ],
          axis=0)
      return tf.cast(result, dtype)
docs: Function that provides matrix product interface with PSD matrix.
  
      Args:
        vector: the vector to be multiplied with matrix M
  
      Returns:
        result_product: Matrix product of M and vector