gpt4 book ai didi

python-3.x - 如何打印预测图像的置信度

转载 作者:行者123 更新时间:2023-11-30 09:51:44 25 4
gpt4 key购买 nike

我在mnist数据集上训练了逻辑回归模型,这些是重要的变量......

# tf Graph Input
x = tf.placeholder(tf.float32, [None, 784]) # mnist data image of shape 28*28=784
y = tf.placeholder(tf.float32, [None, 10]) # 0-9 digits recognition => 10 classes

# set model weights
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

# construct model
logits = tf.matmul(x, W) + b
pred = tf.nn.softmax(logits) # Softmax

# minimize error using cross entropy
cost = tf.reduce_mean(-tf.reduce_sum(y * tf.log(pred), reduction_indices=1))

# Gradient Descent
optimizer = tf.train.GradientDescentOptimizer(FLAGS.learning_rate).minimize(cost)

现在我所做的是创建一个名为 adversarial 的数组,其中包含稍微改变的图像,我将其反馈到模型中,以便模型可以做出预测。

如果我执行以下操作...

classification_adversarial = sess.run(tf.argmax(pred, 1), feed_dict={x:adversarial})
print(classification_adversarial)

>> [6, 6, 6, 6, 6, 6, 6, 6, 6, 6]

我得到了模型预测的输出。这是预期的输出,模型认为图像是 6 秒。

无论如何,对于每张图像,我都希望显示准确度。因此,如果我提供一张图像,例如 adversarial.reshape((1, 784)),我希望模型能够告诉我其预测的准确度(按百分比计算)。

我尝试实现类似以下的内容以获得总准确性......

# list of booleans to determine the correct predictions
correct_prediction = tf.equal(tf.argmax(pred, 1), np.array([6]*10))
print(correct_prediction.eval({x:adversarial}))

>> [True, True ... , True, True]

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print("Accuracy:", accuracy.eval({x: adversarial}))

>> Accuracy: 1.0

我得到的准确度为 1.0。我的模型 100% 准确,这意味着什么?如果是这样,我一定做错了什么。

最佳答案

  1. 要打印每个图像的置信度,您必须打印“pred”,它是 logits 的 softmax。

  2. 在您的情况下,仅测量 10 个图像的准确性,并且模型在所有 10 个情况下都是正确的。所以,准确度是 1.0

这有道理吗?如果您需要更多信息,请发表评论。

关于python-3.x - 如何打印预测图像的置信度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43968615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com