深度学习-----从零开始实现识别手写字体任务(六)计算测试集的准确率和Tensorflow的执行阶段

这段代码展示了如何在TensorFlow中计算模型在测试集上的准确率。首先,定义了一个函数`compute_accuracy`,它利用session运行模型预测并计算正确率。接着,在一个session中初始化变量,然后进行多轮训练,每50轮输出一次测试集的准确率,以评估模型性能。整个过程涉及模型的训练、变量初始化和准确率计算,体现了TensorFlow的执行流程。
摘要由CSDN通过智能技术生成

计算测试集的准确率

def compute_accuracy(v_xs, v_ys):
    global prediction
    # y_pre将v_xs输入模型后得到的预测值 (10000,10)
    y_pre = sess.run(prediction, feed_dict={xs: v_xs, keep_prob: 1})
    # argmax(axis) axis = 1 返回结果为:数组中每一行最大值所在“列”索引值
    # tf.equal返回布尔值,correct_prediction (10000,1)
    correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(v_ys, 1))
    # tf.cast将bool转成float32, tf.reduce_mean求均值,作为accuracy值(0到1)
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys, keep_prob: 1})
    return result

该函数有两个参数,v_xs为测试集,v_ys为测试集的标签。

y_pre将测试集输入后的模型转化为预测值

argmax函数将数组每一行的最大值所在的列返回出来

使用tf.equal比较测试集和标签的值是否相等,若相等返回ture

tf.cast将布尔值转化为浮点数,通过求均值来计算准确率

最后返回准确率。

Tensorflow的执行阶段

TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段,之前的都是构建阶段,现在是执行阶段,需要创立一个session对象来一遍遍执行上述程序。

Session对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 "with" 代码块 来自动完成关闭动作。

keep_prob_rate = 0.6
with tf.Session() as sess:
    # 初始化图中所有Variables
    init = tf.global_variables_initializer()
    sess.run(init)
    # 总迭代次数(batch)为max_epoch=1000,每次取100张图做batch梯度下降
    print("step 0, test accuracy %g" % (compute_accuracy(
        mnist.test.images, mnist.test.labels)))
    for i in range(max_epoch):
        # mnist.train.next_batch 默认shuffle=True,随机读取,batch大小为100
        batch_xs, batch_ys = mnist.train.next_batch(100)
        # 此batch是个2维tuple,batch[0]是(100,784)的样本数据数组,batch[1]是(100,10)的样本标签数组,分别赋值给batch_xs, batch_ys
        sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys, keep_prob: keep_prob_rate})
        # 暂时不进行赋值的元素叫占位符(如xs、ys),run需要它们时得赋值,feed_dict就是用来赋值的,格式为字典型
        if (i + 1) % 50 == 0:
            print("step %d, test accuracy %g" % (i + 1, compute_accuracy(
                mnist.test.images, mnist.test.labels)))

第一步我们要先初始化所有的variables 

先输出模型一开始的准确率

然后进行迭代

经过训练通过train_step改变所有variables的值,从而提高准确率

最后输出准确率

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值