def __init__(self,<EOL>power,<EOL>dtype=tf.int32,<EOL>interpolate_nondiscrete=True,<EOL>sample_maximum_iterations=<NUM_LIT:100>,<EOL>validate_args=False,<EOL>allow_nan_stats=False,<EOL>name="<STR_LIT>"):
parameters = dict(locals())<EOL>with tf.name_scope(name) as name:<EOL><INDENT>power = tf.convert_to_tensor(<EOL>value=power,<EOL>name="<STR_LIT>",<EOL>dtype=dtype_util.common_dtype([power], preferred_dtype=tf.float32))<EOL>if (not dtype_util.is_floating(power.dtype) or<EOL>dtype_util.base_equal(power.dtype, tf.float16)):<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>".format(<EOL>dtype_util.name(power.dtype)))<EOL><DEDENT>runtime_assertions = []<EOL>if validate_args:<EOL><INDENT>runtime_assertions.append(assert_util.assert_greater(<EOL>power, np.ones([], power.dtype.as_numpy_dtype)))<EOL><DEDENT>with tf.control_dependencies(runtime_assertions):<EOL><INDENT>self._power = tf.identity(power, name="<STR_LIT>")<EOL><DEDENT><DEDENT>self._interpolate_nondiscrete = interpolate_nondiscrete<EOL>self._sample_maximum_iterations = sample_maximum_iterations<EOL>super(Zipf, self).__init__(<EOL>dtype=dtype,<EOL>reparameterization_type=reparameterization.NOT_REPARAMETERIZED,<EOL>validate_args=validate_args,<EOL>allow_nan_stats=allow_nan_stats,<EOL>parameters=parameters,<EOL>graph_parents=[self._power],<EOL>name=name)<EOL>
Initialize a batch of Zipf distributions.

        Args:
          power: `Float` like `Tensor` representing the power parameter. Must be
            strictly greater than `1`.
          dtype: The `dtype` of `Tensor` returned by `sample`.
            Default value: `tf.int32`.
          interpolate_nondiscrete: Python `bool`. When `False`, `log_prob` returns
            `-inf` (and `prob` returns `0`) for non-integer inputs. When `True`,
            `log_prob` evaluates the continuous function `-power log(k) -
            log(zeta(power))` , which matches the Zipf pmf at integer arguments `k`
            (note that this function is not itself a normalized probability
            log-density).
            Default value: `True`.
          sample_maximum_iterations: Maximum number of iterations of allowable
            iterations in `sample`. When `validate_args=True`, samples which fail to
            reach convergence (subject to this cap) are masked out with
            `self.dtype.min` or `nan` depending on `self.dtype.is_integer`.
            Default value: `100`.
          validate_args: Python `bool`, default `False`. When `True` distribution
            parameters are checked for validity despite possibly degrading runtime
            performance. When `False` invalid inputs may silently render incorrect
            outputs.
            Default value: `False`.
          allow_nan_stats: Python `bool`, default `True`. When `True`, statistics
            (e.g., mean, mode, variance) use the value "`NaN`" to indicate the
            result is undefined. When `False`, an exception is raised if one or more
            of the statistic's batch members are undefined.
            Default value: `False`.
          name: Python `str` name prefixed to Ops created by this class.
            Default value: `'Zipf'`.

        Raises:
          TypeError: if `power` is not `float` like.