def top_k_logits(logits, k):
    if (k == 0):
        return logits

    def _top_k():
        (values, _) = tf.nn.top_k(logits, k=k)
        min_values = values[:, (- 1), tf.newaxis]
        return tf.where((logits < min_values), (tf.ones_like(logits, dtype=logits.dtype) * (- 10000000000.0)), logits)
    return tf.cond(tf.equal(k, 0), (lambda : logits), (lambda : _top_k()))
def top_k_logits(logits, k):
    if (k == 0):
        return logits

    def _top_k():
        (values, _) = tf.nn.top_k(logits, k=k)
        min_values = values[:, (- 1), tf.newaxis]
        return tf.where((logits < min_values), (tf.ones_like(logits, dtype=logits.dtype) * (- 10000000000.0)), logits)
    return tf.cond(tf.equal(k, 0), (lambda : logits), (lambda : _top_k()))