1. 程式人生 > >TensorFlow列印tensor值

TensorFlow列印tensor值

最近一直在用TF做CNN的影象分類,當softmax層得到預測結果後,我希望能夠看到預測結果,以便和標籤之間進行比較。特此補上,以便自己記憶。

我現在通過softmax層得到變數train_logits,如果我直接執行print(train_logits)時,得到的結果如下(因為我是134類分類,所以結果是(1,134)維):
直接print的結果
這貌似什麼都看不出來。
其實tensorflow提供輸出中間值方法方便debug。
這個函式就是[tf.Print]。

tf.Print(
input_,
data,
message=None,
first_n=None,
summarize=None,
name=None
)

引數:
input_: 通過此op的一個tensor.
data: 當此op被計算之後列印輸出的tensor list。
message: 錯誤訊息的字首,是一個string。
first_n: 只記錄first_n次. 總是記錄負數;這是個預設.
summarize: 對每個tensor只打印的條目數量。如果是None,對於每個輸入tensor只打印3個元素。
name: op的名字.

返回值:
和input_相同的tensor.

將print(train_logits)修改為sess.run(tf.Print(train_logits,[train_logits]))後,得到的結果如下圖:
這裡寫圖片描述


發現值已經能夠列印啦!但是隻能輸出3個條目,這是因為引數summarize預設只打印3個引數!

將sess.run(tf.Print(train_logits,[train_logits]))修改為sess.run(tf.Print(train_logits,[train_logits],summarize=134))後(我是134類分類),得到的結果如下圖:
結果圖

這樣就能成功地列印tensor的中間結果了!以後調參、檢視模型效果就直觀多了!