def padded_accuracy_topk(logits, labels, k):
    'Percentage of times that top-k predictions matches labels on non-0s.'
    with tf.variable_scope('padded_accuracy_topk', values=[logits, labels]):
        (logits, labels) = _pad_tensors_to_same_length(logits, labels)
        weights = tf.to_float(tf.not_equal(labels, 0))
        effective_k = tf.minimum(k, tf.shape(logits)[(- 1)])
        (_, outputs) = tf.nn.top_k(logits, k=effective_k)
        outputs = tf.to_int32(outputs)
        padded_labels = tf.to_int32(labels)
        padded_labels = tf.expand_dims(padded_labels, axis=(- 1))
        padded_labels += tf.zeros_like(outputs)
        same = tf.to_float(tf.equal(outputs, padded_labels))
        same_topk = tf.reduce_sum(same, axis=(- 1))
        return (same_topk, weights)
Percentage of times that top-k predictions matches labels on non-0s.
def padded_accuracy_topk(logits, labels, k):
    
    with tf.variable_scope('padded_accuracy_topk', values=[logits, labels]):
        (logits, labels) = _pad_tensors_to_same_length(logits, labels)
        weights = tf.to_float(tf.not_equal(labels, 0))
        effective_k = tf.minimum(k, tf.shape(logits)[(- 1)])
        (_, outputs) = tf.nn.top_k(logits, k=effective_k)
        outputs = tf.to_int32(outputs)
        padded_labels = tf.to_int32(labels)
        padded_labels = tf.expand_dims(padded_labels, axis=(- 1))
        padded_labels += tf.zeros_like(outputs)
        same = tf.to_float(tf.equal(outputs, padded_labels))
        same_topk = tf.reduce_sum(same, axis=(- 1))
        return (same_topk, weights)