为训练数据计算的准确度如何用于评估张量流中的测试数据

How accuracy calculated for train data is used for evaluating test data in tensorflow

在 tensorflow 中,模型是使用训练数据创建的,但我想知道如何使用训练数据计算的准确度评估测试数据。

     correct_prediction = tf.equal(tf.argmax(pred, 1),tf.argmax(y_train, 1))
     # Calculate accuracy
     accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
     print "Accuracy:", accuracy.eval({x1: X_test, y1: y_test})

correct_prediction 用于训练数据,accuracy.eval() 用于通过测试数据集。 请解释这是如何完成的。

在 TensorFlow 中,您创建一个图形,其中数据在节点之间流动,从输入到输出。

举个简单的例子,MNIST。这是 TensorFlow 节点:

  • 输入:
    • 一批 28x28 图像:images 形状 [batch_size, 28, 28, 1]
    • 图像标签:labels 形状 [batch_size, 10]
  • 输出:
    • 你的网络 pred 的预测,形状 [batch_size, 10]
    • 模型的准确度:accuracy,形状 [](标量)

这是图表:

         images
           |
         (CNN)
           |
  labels  pred
       \   |
        \  |
  correct_prediction
           |
        accuracy

这两个输入节点是tf.placeholder,这意味着你需要在其中手动输入值。

根据你是训练还是测试模型,你可以喂:

  • 训练:用两个相应形状的numpy数组X_trainy_train喂养imageslabels,来自你的数据
  • 用于测试:将 imageslabels 与两个 numpy 数组 X_testy_test 馈送 测试数据

使用此架构,同一张图 用于训练和测试。


区别在于:

  • 在训练期间,您可能会 运行 火车运行 sess.run(train_op, feed_dict={images: X_train, labels: y_train})
  • 在测试期间,您不再训练模型而只计算准确率:sess.run(accuracy, feed_dict={images: X_test, labels: y_test})