最近一直在用TF做CNN的圖像分類,當softmax層得到預測結果后,我希望能夠看到預測結果,以便和標簽之間進行比較。特此補上,以便自己記憶。
我現在通過softmax層得到變量train_logits,如果我直接執行print(train_logits)時,得到的結果如下(因為我是134類分類,所以結果是(1,134)維):
這貌似什么都看不出來。
其實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的中間結果了!以后調參、查看模型效果就直觀多了!
以上這篇TensorFlow打印tensor值的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答