对于初入tensorflow的同学来说(尤其是初入python的同学),minst一般都是第一个教程。它原理简单清晰,使用的api也必将初级。
网上的教程都大同小异,大家照着敲代码级别都能得到最后的识别率(91%左右
)。这套代码就和刚学Java的同学学会了写main
方法一样。
这里简单说一下tensorflow将minst集识别成了什么。也就是说,既然tf正确识别了91%的数字,那它把识别错误的图片数据识别成了什么。
输出正确率
下面是常规的输出正确率的代码,也是大家都这样写的代码:
# 输出正确率(正确数量占比)
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: minst.test.images, y_: minst.test.labels}))
输出猜测对比
我们把它改成输出猜测结果和正确标记的对比,也就是猜对了输出True,否则是False:
# 输出猜测对比(猜对True 猜错 False)
run = sess.run(correct_prediction, feed_dict={x: minst.test.images, y_: minst.test.labels})
for b in run:
print(run)
输出猜测数组
现在我们改成输出tf的结果,也就是我们的目标:tf到底把训练集猜成了什么:
# 输出预测结果数组
run = sess.run(y_, feed_dict={x: minst.test.images, y_: minst.test.labels})
for b in run:
print(b)
输出预测数字
tf能做的就是给出一个数据,因为minst数据是这样处理的。要看到数字结果,简单变换一下就可以:
run = sess.run(y_, feed_dict={x: minst.test.images, y_: minst.test.labels})
for b in run:
t = 0
for c in b:
if c == 1:
print(t)
else:
t = t + 1