在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()用于传递测试数据集。 请解释一下如何做到这一点。
答案 0 :(得分:2)
在TensorFlow中,您可以创建一个图表,其中数据在节点之间流动,从输入到输出。
让我们举一个简单的例子,MNIST。以下是 TensorFlow节点:
images
形状[batch_size, 28, 28, 1]
labels
形状[batch_size, 10]
pred
,形状[batch_size, 10]
accuracy
,形状[]
(标量)这是图表:
images
|
(CNN)
|
labels pred
\ |
\ |
correct_prediction
|
accuracy
两个输入节点为tf.placeholder
,这意味着您需要在其中手动输入值。
根据您是在训练还是测试模型,您可以提供:
images
和labels
,其中包含来自您数据的两个相应形状的numpy数组X_train
和y_train
images
和labels
,其中包含两个numpy数组X_test
和y_test
测试数据强> 使用这种架构,相同的图既可用于训练,也可用于测试。
区别在于:
sess.run(train_op, feed_dict={images: X_train, labels: y_train})
sess.run(accuracy, feed_dict={images: X_test, labels: y_test})