首页 文章

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

提问于
浏览
0

在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()完成,用于传递测试数据集 . 请解释一下如何做到这一点 .

1 回答

  • 2

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

    让我们举一个简单的例子,MNIST . 这是 TensorFlow nodes

    • 输入:

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

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

    • for training :从您的数据中输入 imageslabels ,其中包含两个相应形状的numpy数组 X_trainy_train

    • for testing :feed imageslabels 有两个numpy数组 X_testy_test 这些是 test data

    使用此架构, same graph 既可用于培训和测试 .


    不同之处在于:

    • 在训练期间,你可能会进行火车运营 sess.run(train_op, feed_dict={images: X_train, labels: y_train})

    • 在测试期间,您不再训练模型并只计算准确度: sess.run(accuracy, feed_dict={images: X_test, labels: y_test})

相关问题