docstr: :param dim: dimension of the multivariate normal
  :param n_gh: number of Gauss-Hermite points per dimension
docstr_tok: [":","param","dim",":","dimension","of","the","multivariate","normal",":","param","n_gh",":","number","of","Gauss-Hermite","points","per","dimension"]
code: def __init__(self, dim: int, n_gh: int) -> None:
      """
      :param dim: dimension of the multivariate normal
      :param n_gh: number of Gauss-Hermite points per dimension
      """
      self.dim = dim
      self.n_gh = n_gh
      self.n_gh_total = n_gh**dim
      Z, dZ = ndgh_points_and_weights(self.dim, self.n_gh)
      self.Z = tf.ensure_shape(Z, (self.n_gh_total, self.dim))
      self.dZ = tf.ensure_shape(dZ, (self.n_gh_total, 1))
  
file_path: GPflow/gpflow/quadrature/gauss_hermite.py
imports: from typing import Sequence, Tuple
  import numpy
  import tensorflow
  from check_shapes import check_shapes, inherit_check_shapes
  from ..base import TensorType
  from ..config import default_float
  from .base import GaussianQuadrature
label_desc: Use image node_id 1 to create a new NDiagGHQuadrature object from inherited base classes: GaussianQuadrature with example: obj = NDiagGHQuadrature(dim, n_gh)