class_docstr: Multivariate normal that forces some sample dimensions to zero.
  
  This is equivalent to setting `loc[d] = 0.` and `precision_factor[d, d]=`inf`
  in the zeroed dimensions, but is numerically better behaved.
  
   This class is meant to work specifically with the DynamicSpikeSlabSampler,
   and so does not conform to a TensorFlow probability distribution API. In
   particular, the loc and precision_factor are expected to be the nonzero
   entries, and samples are broadcast back out to a full shape. This means:
   - Querying the `event_shape` will give a wrong answer.
   - Sampling for more than 1 element will throw an exception.
code: def __init__(self, loc, precision_factor, nonzeros, **kwargs):
      self._indices = ps.where(nonzeros)
      self._size = ps.dimension_size(nonzeros, -1)
      super().__init__(
          loc=loc, precision_factor=precision_factor, **kwargs
      )
  
imports: import collections
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import bernoulli
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import inverse_gamma
  from tensorflow_probability.python.distributions import joint_distribution_auto_batched
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.experimental.distributions.mvn_precision_factor_linop import MultivariateNormalPrecisionFactorLinearOperator
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import vectorization_util
  from tensorflow_probability.python.mcmc.internal import util
label_desc: Use image node_id 1 to create a new MVNPrecisionFactorHardZeros object from inherited base classes: MultivariateNormalPrecisionFactorLinearOperator with example: obj = MVNPrecisionFactorHardZeros(loc, precision_factor, nonzeros)