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

时间:2016-06-20 11:06:43

标签: python 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用训练数据完成,而precision.eval()用于传递测试数据集。 请解释一下如何做到这一点。

1 个答案:

答案 0 :(得分:2)

在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,这意味着您需要在其中手动输入值。

根据您是在训练还是测试模型,您可以提供:

  • 进行培训:Feed imageslabels,其中包含来自您数据的两个相应形状的numpy数组X_trainy_train
  • 进行测试:Feed 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})