2016-04-30 7 views
1

В tensorflow CNN tutorial он вычисляет точность, но я хочу использовать ее для матрицы замешательства.Тензорный поток с матрицей замешательства

Сразу три различных подхода ударил на мой взгляд:

  1. Я попытался непосредственно вычислить результат предсказания вместо top_k_op в tensorflow, то я мог бы использовать sklearn. Но я потерпел неудачу, потому что он использовал несколько потоков для вычисления (line 88);

  2. Я попытался загрузить обученные переменные и предоставить новый placeholder для cifar10.inference, но не удалось снова, потому что он определил batch_image как вход (line 225);

  3. Последний подхода к определенному новой операции замены line 128

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

    , но я не мог найти правильные операции могли бы сделать это.

Это поразило меня в течение нескольких дней. Пожалуйста помоги. Заранее спасибо.

ответ

2

Вы можете использовать confusion_matrix sklearn только после запуска «вывода» во всем наборе данных. Значение, если вы изменяете функцию eval_only, вы должны просто скопировать все оценки в какой-нибудь поточно-безопасный контейнер (список). И после того, как все потоки остановлены (строка 113), вы можете запустить вычисление одиночной матрицы путаницы.

Кроме того, если вы хотите сделать это на графике, TensorFlow недавно получил confusion_matrixop, вы можете попробовать использовать. Тем не менее, он работает только с партией, поэтому вам нужно увеличить свою партию, чтобы получить какое-либо разрешение или написать собственный агрегатор.

+0

Ваше первое решение работает хорошо, но не совсем прекрасно: когда число примеров не является множителем числа партий, количество примеров, которые будут оцениваться, больше, чем фактического. У вас есть идея, как решить эту проблему? Заранее спасибо. – Tengerye

Смежные вопросы