0

我浏览了 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(....)?检查训练好的模型。

4

1 回答 1

4

正如“Guy Coder”所说,也许你应该在开始使用 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

希望这可以帮助

编辑

我将根据您的评论回答,但请注意,您的问题解释得非常糟糕......正如 S_kar 所指出的那样

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

# model declared before this line
with tf.Session() as sess:
    # Merge all the summaries and write them out to /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()

    """
    train the model...
    """

    print "Model succesfuly trained"

    # now save the model in a subdirectory called "model"
    checkpoint_path = os.getcwd() + "/model/model.ckpt"
    saver.save(sess, checkpoint_path)
    print "Model saved"

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

于 2016-01-07T15:20:46.547 回答