您的位置:首页 > 运维架构

TensorFlow函数:tf.nn.in_top_k()

2018-03-18 15:47 1011 查看
in_top_k(predictions, targets, k, name=None)

函数的输入:

predictions:预测的输出结果,预测矩阵的大小为样本数×类别的个数的二维矩阵。换句话说,矩阵的值就是每个样本属于各个类别的概率值。

targets:真实标注的类别值,大小为样本个数,即每个样本对应一个唯一的类别。

k:当k=1时,即就是某一样本预测属于某一最大概率的,与该样本真实标注的targets**类**进行对比,是否一致,一致则输出true,反之输出false。当k不等于1时,每个样本的预测结果的前k个最大概率的类里面是否包含targets预测中的标签,也就是多对一。

函数的输出:

bool型变量。即predictions预测标签和targets实际标签进行对比,是否一致,一致则输出true,反之输出false。

假设有10个样本,标注为5类,10个样本实际标签均是第一类,代码如下:

import tensorflow as tf

logits = tf.Variable(tf.truncated_normal(shape=[10,5],stddev=1.0))
labels = tf.constant([0,0,0,0,0,0,0,0,0,0])

top_1_op = tf.nn.in_top_k(logits,labels,1)
top_2_op = tf.nn.in_top_k(logits,labels,2)

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(logits.eval())
print(labels.eval())
print(top_1_op.eval())
print(top_2_op.eval())


运行结果

[[-0.01835343 -1.68495178 -0.67901242 -0.20486258 -0.22725371]
[ 1.84425163 -1.25509632  0.07132829 -1.81082523 -0.44123012]
[-0.4354656   0.1805554   0.81912154  0.04202025 -1.99823892]
[ 0.53393573  0.91522688 -1.88455033 -0.44571343  0.07805539]
[ 0.01253182  0.16593859  0.0918197   0.8079409   0.13442524]
[ 0.08205117 -0.26857412  0.02542082  0.38249066 -0.01555154]
[-1.02280331  0.18952899  0.49389341  0.58559865  0.80859423]
[ 0.35019293 -1.17765355  0.66553122  1.91787696  0.5998978 ]
[ 0.81723028  0.92895705  0.86031818  1.57651412  0.94040418]
[-0.83766556 -1.75260925  0.13499574 -0.06683849 -0.99427927]]
[0 0 0 0 0 0 0 0 0 0]
[ True  True False False False False False False False False]
[ True  True False  True False  True False False False False]


top_1_op为True的地方top_2_op一定为True,top_1_op取样本的最大预测概率的索引与实际标签对比,top_2_op取样本的最大和仅次最大的两个预测概率与实际标签对比,如果实际标签在其中则为True,否则为False。其他k的取值可以类推。

参考:http://blog.csdn.net/Enchanted_ZhouH/article/details/77200592
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: