code: def ndgh_points_and_weights(
      dim: int, n_gh: int
  ) -> Tuple[tf.Tensor, tf.Tensor]:
      r"""
      :param dim: dimension of the multivariate normal
      :param n_gh: number of Gauss-Hermite points per dimension
      :returns: points Z, Tensor with shape [n_gh**dim, D],
          and weights dZ, Tensor with shape [n_gh**dim, 1]
      """
      z, dz = gh_points_and_weights(n_gh)
      zs = repeat_as_list(z, dim)
      dzs = repeat_as_list(dz, dim)
      return reshape_Z_dZ(zs, dzs)
  
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 5 for calling a global function with example usage: ndgh_points_and_weights(dim, n_gh) and returns: reshape_Z_dZ