我研究了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中训练模型有两个部分。
- 首先,你声明模型的结构,包括不同的层和变量。Tensorflow会基于此创建一个图,但还没有进行任何计算。
- 然后,你要求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 "模型已保存"
要恢复模型,请查看 这个问题