2016-04-30 6 views
1

tensorflow CNN tutorialでは、精度を計算しますが、それを混乱行列に活用したいと考えています。テンソルフローは混同行列で評価する

すぐに、私の心にヒットする3つの異なるアプローチ:

  1. 私が直接、私はsklearnを利用することができる、tensorflowに代わりtop_k_opの予測結果を計算してみました。しかし、計算に複数のスレッドを使用していたので、失敗しました(line 88)。

  2. 私は訓練された変数を読み込み、cifar10.inferenceに新しいプレースホルダを与えようとしましたが、batch_imageを入力(line 225)として定義したため、再度失敗しました。

  3. 最後のアプローチはline 128

    top_k_op = tf.nn.in_top_k(logits, labels, 1) 
    

    を置き換えるために定義された新しい操作にですが、私は、適切な操作がそれを行うことができます見つけることができませんでした。

これは数日間私に苦しんでいます。助けてください。前もって感謝します。

答えて

2

すべてのデータセットで '推論'を実行した後でsklearnのconfusion_matrixを利用できます。 意味、eval_only関数を変更している場合は、すべてのスコアをスレッドセーフなコンテナ(リスト)に集めるだけです。そして、すべてのスレッドが停止した後(行113)、単一の混同行列計算を実行できます。

また、グラフで実行したい場合は、TensorFlowが最近confusion_matrixopになりました。つまり、バッチでのみ機能するので、バッチを増やしてあらゆる種類の解像度を得るか、カスタムアグリゲータを作成する必要があります。

+0

最初の解はうまくいくが、完全ではない。例の数がバッチ数の乗数でない場合、評価される例の数は実際の数よりも多い。あなたはその問題を解決する方法を知っていますか?前もって感謝します。 – Tengerye

関連する問題