2016-02-18 45 views
4

我有一個numpy數組。在TensorFlow中執行計算後,我得到一個tf.Tensor作爲輸出。我正在嘗試將其重塑爲二維數組並將其顯示爲圖像。計算張量後,如何將其顯示爲圖像?

如果它是一個numpy的ndarray,我會知道如何將它作爲圖像進行繪製。但現在是張力!

雖然我試圖tensor.eval()將它轉換爲numpy數組,但我得到一個錯誤,說「沒有默認會話」。

任何人都可以教我如何顯示張量作爲圖像?

... ... 
init = tf.initialize_all_variables()  
sess = tf.Session() 
sess.run(init) 

# training 
for i in range(1): 
    sess.run(train_step, feed_dict={x: x_data.T, y_: y_data.T}) 

# testing 
probability = tf.argmax(y,1); 
sess.run(probability, feed_dict={x: x_test.T}) 

#show result 
img_res = tf.reshape(probability,[len_y,len_x]) 
fig, ax = plt.subplots(ncols = 1) 

# It is the the following line that I do not know how to make it work... 
ax.imshow(np.asarray(img_res.eval())) #how to plot a tensor ?# 
plt.show() 
... ... 
+2

歡迎來到stackoverflow。你能發佈你的嘗試嗎? – bibi

+0

請用較好的縮進來更新問題。看到http://stackoverflow.com/help/how-to-ask它會更容易得到一個答案 – bibi

+0

對不起,不熟悉這..剛剛更新 –

回答

2

你看到眼前的錯誤是因爲當有"default Session"Tensor.eval()纔有效。這需要(i)您正在執行with tf.Session():區塊,(ii)您正在執行with sess.as_default():區塊,或者(iii)您正在使用tf.InteractiveSession

有兩個簡單的解決方法,使您的情況下工作:

# Pass the session to eval(). 
ax.imshow(img_res.eval(session=sess)) 

# Use sess.run(). 
ax.imshow(sess.run(img_res)) 

需要注意的是,如約可視化圖像一個大點的,你可以考慮使用tf.image_summary()運算與TensorBoard一起可視化由製造張量更大的訓練管道。

+0

非常感謝。我對tensorflow很陌生。試圖學會使用它。非常感謝您的回答 –

相關問題