code: def _expectation(p, constant_mean, none, kern, feat, nghp=None):
      
      with params_as_tensors_for(constant_mean):
          c = constant_mean(p.mu)  # NxQ
          eKxz = expectation(p, (kern, feat), nghp=nghp)  # NxM
  
          return c[..., None] * eKxz[:, None, :]
docs: Compute the expectation:
      expectation[n] = <m(x_n)^T K_{x_n, Z}>_p(x_n)
          - m(x_i) = c :: Constant function
          - K_{.,.}    :: Kernel function
  
      :return: NxQxM