0

我訓練的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] 

我得到的模型預測的輸出。這是預期的輸出,模型認爲圖像是6s。

無論如何,對於這些圖像中的每一個,我都想要顯示一個accuracy。因此,如果我輸入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
  1. 要打印每張圖片的置信度,您必須打印作爲logmax的softmax的「pred」。

  2. 在您的情況下,僅對10幅圖像測量精度,所有10種情況下的模型都是正確的。所以,準確度是1.0

這是否合理?評論你是否需要更多信息。