2015-12-04 80 views
4

布爾我打算過MNIST初學者教程(http://www.tensorflow.org/tutorials/mnist/beginners/index.html),並試圖獲得來自correct_prediction張量對象準確預測值的布爾列表的列表。我發現這令人困惑。從TensorFlow對象檢索數據 - 從correct_prediction

按照教程 correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) suppost給我們布爾值的列表:

這給了我們布爾值的列表。爲了確定 正確的分數,我們轉換爲浮點數,然後取平均值。對於 例如,[真,假,TRUE,TRUE]將成爲[1,0,1,1]這將成爲 0.75。

然而,試圖correct_prediction[0]給我們<tensorflow.python.framework.ops.Tensor at 0x111a404d0>type(correct_prediction)給我們tensorflow.python.framework.ops.Tensor這不是一個列表。請致電dir()查看方法,然後correct_prediction.__getitem__(0)給我們<tensorflow.python.framework.ops.Tensor at 0x111386f50>

如何訪問預測布爾值,併爲Y,W和B此事值列表?他們應該從tf.Session以某種方式訪問​​嗎?

非常感謝!

回答

2

張量變量實際上描述必須以獲得您所感興趣的值來進行的計算。

換句話說,與correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))定義不包含布爾值的列表中的張量,它包含用張量流圖計算它的指令。爲了獲得實際值,您需要告訴tensorflow在圖中計算它。

首先,你需要一個tf.Session變量。在交互式shell中獲取它進行測試的一種簡單方法是sess = tf.InteractiveSession(),然後進行變量初始化:sess.run(tf.initialize_all_variables())

然後,您可以撥打sess.run(tensor_variable)來計算給定張量的值(或它們的列表)。如果張量在其計算中包含佔位符(他們通常會這樣做),則還必須提供一個Feed字典。這在本教程中有例證。

相反的session.run(),您也可以撥打從張量的.eval()方法。這也需要存在默認會話。