私は TensorFlow と stackoverflow を初めて使用します。私は、写真に最も適した 5 つのタグを推奨するプロジェクトに取り組んでいます。Tensorflow は、最終レイヤーをトレーニングしたすべてのタグの予測値を提供します。その中でも、精度が 0.5 を超えるタグを見つけようとし、他のタグの値は最終的に 0.1 未満になります。しかし、複数のタグが最も関連性の高いタグであるかどうかを確認するにはどうすればよいでしょうか? たとえば、赤い鳥の画像の場合、TF (Tensorflow) は鳥を最高のタグとして、赤を 2 番目に良いタグとして与えますが、どちらも同等に関連しています。
私の質問は、十分に関連性がある場合、TF が複数のタグに等しい値を与えるようにするにはどうすればよいかということです。(そして、同じでない場合は、非常に近い数字で十分です。) また、これらのタグとそれに対応する値の出力を .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))