aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/ops/nn_ops.py
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/python/ops/nn_ops.py')
-rw-r--r--tensorflow/python/ops/nn_ops.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tensorflow/python/ops/nn_ops.py b/tensorflow/python/ops/nn_ops.py
index 44f98d64cd..1ce7ea179f 100644
--- a/tensorflow/python/ops/nn_ops.py
+++ b/tensorflow/python/ops/nn_ops.py
@@ -2085,3 +2085,36 @@ def erosion2d(value, kernel, strides, rates, padding, name=None):
rates=rates,
padding=padding,
name=name))
+
+def in_top_k(predictions, targets, k, name=None):
+ r"""Says whether the targets are in the top `K` predictions.
+
+ This outputs a `batch_size` bool array, an entry `out[i]` is `true` if the
+ prediction for the target class is among the top `k` predictions among
+ all predictions for example `i`. Note that the behavior of `InTopK` differs
+ from the `TopK` op in its handling of ties; if multiple classes have the
+ same prediction value and straddle the top-`k` boundary, all of those
+ classes are considered to be in the top `k`.
+
+ More formally, let
+
+ \\(predictions_i\\) be the predictions for all classes for example `i`,
+ \\(targets_i\\) be the target class for example `i`,
+ \\(out_i\\) be the output for example `i`,
+
+ $$out_i = predictions_{i, targets_i} \in TopKIncludingTies(predictions_i)$$
+
+ Args:
+ predictions: A `Tensor` of type `float32`.
+ A `batch_size` x `classes` tensor.
+ targets: A `Tensor`. Must be one of the following types: `int32`, `int64`.
+ A `batch_size` vector of class ids.
+ k: An `int`. Number of top elements to look at for computing precision.
+ name: A name for the operation (optional).
+
+ Returns:
+ A `Tensor` of type `bool`. Computed Precision at `k` as a `bool Tensor`.
+ """
+ with ops.name_scope(name, 'in_top_k'):
+ # TODO (yongtang): Need to switch to v2 after 3 weeks.
+ return gen_nn_ops._in_top_kv2(predictions, targets, k, name=name)