tf.nn.in_top_k
用于计算预测的结果和实际结果的是否相等,并返回一个bool
类型的张量:
tf.nn.in_top_k(prediction, target, K)
prediction
:预测的结果,大小就是预测样本的数量乘以输出的维度。target
:实际样本类别的标签,大小就是样本数量的个数。K
:每个样本的预测结果的前k
个最大的数里面是否包含targets
预测中的标签,一般都是取1
。
import tensorflow as tf
A = [[0.8, 0.6, 0.3], [0.1, 0.6, 0.4]]
B = [1, 1]
out = tf.nn.in_top_k(A, B, 1)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(out)) # 输出“[False True]”
因为A
张量里面的第一个元素的最大值的标签是0
,第二个元素的最大值的标签是1
,但实际上是1
和1
,所以输出就是False
和True
。如果把K
改成2
,那么第一个元素的前面2
个最大元素的位置是0
和1
,第二个元素的就是1
和2
。而B
是[1, 1]
,包含在里面,所以输出结果就是True
和True
。