在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 回答
在TensorFlow中,您可以创建一个图形,其中数据在节点之间流动,从输入到输出 .
让我们举一个简单的例子,MNIST . 这是 TensorFlow nodes :
输入:
批次28x28张图片:
images
形状[batch_size, 28, 28, 1]
图片标签:
labels
形状[batch_size, 10]
输出:
您网络的预测
pred
,形状[batch_size, 10]
模型的准确度:
accuracy
,形状[]
(标量)这是图表:
两个输入节点是
tf.placeholder
,这意味着您需要在其中手动输入值 .根据您是在训练还是测试模型,您可以提供:
for training :从您的数据中输入
images
和labels
,其中包含两个相应形状的numpy数组X_train
和y_train
for testing :feed
images
和labels
有两个numpy数组X_test
和y_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})