我对TensorFlow和stackoverflow都很新。我正在开展一个项目,我应该为照片推荐5个最合适的标签。 Tensorflow为您训练最后一层的每个标签提供预测值。同样,它的目的是找到精度超过0.5&的那个。其他标签最终的值小于0.1。 但是如何确定是否有超过1个标签成为最相关的标签? 例如对于红鸟的图像,TF(Tensorflow)给我鸟是最好的标签&红色是第二个最好的标签,尽管两者同样重要。
我的问题是如果足够相关,我怎样才能让TF给超过1个标签赋予相同的价值? (如果不相同,非常接近的数字会为我做。)另外,有没有办法让我可以得到这些标签的输出&它们在.txt文件中的相应值?(问题的最后部分也已经被问过了,但它仍然没有答案,所以我想我会把它作为我问题的一部分加入)
我的label_image.py的代码与教程中给出的相同 - TensorFlow代表诗人。这是代码,
import tensorflow as tf
image_path = sys.argv[1]
image_data = tf.gfile.FastGFile(image_path, 'rb').read()
label_lines = [line.rstrip() for line
in tf.gfile.GFile("/tf_files/retrained_labels.txt")]
with tf.gfile.FastGFile("/tf_files/retrained_graph.pb", 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor, \
{'DecodeJpeg/contents:0': image_data})
top_k = predictions[0].argsort()[-len(predictions[0]):][::-1]
for node_id in top_k:
human_string = label_lines[node_id]
score = predictions[0][node_id]
print('%s (score = %.5f)' % (human_string, score))
答案 0 :(得分:0)
如果您查看网络最后一层的输出,假设您使用softmax图层,则每个标签中应该有不同的值,表明该标签的置信度是正确的。因此,此分数基本上是相应标签的相关性。
是的,我们基本上eval()
得分并使用f.write(content)
将其写入文本文件。
一个非常简单的代码块:
scores = tf.eval(test_confidence, feed_dict={....})
with open("output.txt", "wb") as f:
for score in scores:
f.write(score+'\n')