Tensorflow MNIST 初学者需要理解评估步骤

我研究了Tensorflow中评估训练模型的基本示例。这里是它的说明:

accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

我没有完全理解这段代码,训练的“模型”在哪里?还是 tf.reduce_mean(….) 是在检查训练模型?


回答:

正如“@某人”所说,也许你在开始使用Tensorflow之前应该查看其他在线资源或MOOC课程。

但无论如何,也许你会通过这个得到更清晰的画面…

在Tensorflow中训练模型有两个部分。

  1. 首先,你声明模型的结构,包括不同的层和变量。Tensorflow会基于此创建一个图,但还没有进行任何计算。
  2. 然后,你要求Tensorflow“运行”并优化模型。你在这里做的就是告诉Tensorflow你想减少交叉熵,或你定义的任何损失函数,所以你提供图计算所需的输入数据和标签。

这样,你就得到了一个训练好的模型。也许你会想要保存模型并在以后重用它,但那是另一个话题了。

所以,在训练过程中,或训练完成后,你可以调用
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

这是在告诉Tensorflow使用图中变量的当前值计算准确率(也许你正处于训练的中间)。你将图像和标签输入到这个准确率函数中。Tensorflow会使用x值尝试预测y_,准确率将是它做得如何的结果。

与你训练的模型的连接来自于 correct_prediction 函数,该函数应该将正确输出与你的模型预测进行比较,即 y_ vs y

希望这对你有帮助

编辑

我将根据你的评论来回答,但请注意你的问题解释得非常不好…正如@某人指出的那样

要保存模型,你可以这样做:

# 模型在此行之前声明with tf.Session() as sess:    # 合并所有摘要并将它们写入/tmp/tf    merged = tf.merge_all_summaries()    writer = tf.train.SummaryWriter("/tmp/tf", sess.graph_def)    tf.initialize_all_variables().run()    saver = tf.train.Saver()    """    训练模型...    """    print "模型成功训练"    # 现在将模型保存到名为“model”的子目录中    checkpoint_path = os.getcwd() + "/model/model.ckpt"    saver.save(sess, checkpoint_path)    print "模型已保存"

要恢复模型,请查看 这个问题

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注