0

私は 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))
4

1 に答える 1

0

複数のタグが最も関連性の高いタグであるかどうかを確認するにはどうすればよいですか?

ネットワークの最終層の出力を見ると、softmax 層を使用すると仮定すると、各ラベルに異なる値が含まれているはずであり、そのラベルが正しいものであるという確信を示しています。結果として、このスコアは基本的に対応するラベルの関連性になります。

これらのタグと対応する値の出力を .txt ファイルに取得する方法はありますか?

はい、基本的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')
于 2016-11-22T17:49:19.140 に答える