欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

tensorflow實現在函數中用tf.Print輸出中間值

 更新時間:2020年01月21日 14:21:40   作者:sjtu_leexx  
今天小編就為大家分享一篇tensorflow實現在函數中用tf.Print輸出中間值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

tensorflow由于其基于靜態(tài)圖的模式,導致寫代碼的時候很難調試,除了用官方的調試工具外,最直接的方法就是把中間結果輸出出來查看,然而,直接用print函數只能輸出tensor變量的形狀,而不是數值,想要輸出tensor的具體數值需要用tf.Print函數。網上有很多關于這個函數使用方法的說明,這里簡要介紹:

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

參數:

input_:通過這個操作的張量。 (流入的數據流)

data:計算 op 時要打印的張量列表。(用[ ]引起來的一串需要打印的東西,用逗號隔開)

message:一個字符串,錯誤消息的前綴。

first_n:只記錄 first_n 次數。負數日志,這是默認的。

summarize:只打印每個張量的固定數目的條目。如果沒有,則每個輸入張量最多打印3個元素。

name:操作的名稱(可選)

然而網上大部分資源都是介紹如何在主函數中先建立一個op,再開啟一個Session執(zhí)行sess.run(op)的方法,但是如果想要輸出函數中的中間值而該值又未傳回主函數呢?這種情況下無法在函數中開啟一個新的Session,但是仍然可以用tf.Print建立op來實現。

import tensorflow as tf
import os

os.environ["CUDA_VISIBLE_DEVICES"] = "0"

def test():
 a=tf.constant(0)
 for i in range(10): 
  a_print = tf.Print(a,['a_value: ',a])
  a=a_print+1
 return a
 
if __name__=='__main__':
 with tf.Session() as sess:
  sess.run(test())

運行結果:

a_print可以理解為在圖中新增了一個節(jié)點,在后續(xù)代碼中當有別的變量使用了a_print時(如上例a=a_print+1),就會有數據從a_print節(jié)點上流過,就會輸出值,而究竟會輸出幾次值呢?這其實并不是看下文中a_print被使用了幾次,而是看數據流要從該節(jié)點上流經幾次,可以理解為a_print這個op被“定義”了幾次。

def test():
 a=tf.constant(0)
 a_print = tf.Print(a,['a_value: ',a])
 for i in range(10): 
  a=a_print+1
 return a
 
if __name__=='__main__':
 with tf.Session() as sess:
  sess.run(test())

如果把test()函數改成這樣,則運行結果為:

輸出僅被執(zhí)行了一次,因為a_print這個op只被定義了一次,雖然后面在循環(huán)里不斷被a使用,但是數據只從它身上經過了一次,所以只會print一次,并且a_print的值永遠為0,最終返回的a的值也為1。

再把代碼改成下例:

def test():
 a=tf.constant(0)
 a_print = tf.Print(a,['a_value: ',a])
 for i in range(10): 
  a_print=a_print+1
 return a
 
if __name__=='__main__':
 with tf.Session() as sess:
  sess.run(test())

運行結果是什么也不會輸出,因為a_print這個op沒有和別的變量發(fā)生關系,它沒有被別的變量使用,在圖里為孤立的一個節(jié)點,沒有數據流過,就不會被執(zhí)行。

而如果改成這樣

def test():
 a=tf.constant(0)
 a_print = tf.Print(a,['a_value: ',a])
 for i in range(10): 
  a_print=a_print+1
 return a_print
 
if __name__=='__main__':
 with tf.Session() as sess:
  sess.run(test())

運行結果

返回的a_print值為10也是正確的,因為a_print在下文被返回,所以有數據流流經,會被執(zhí)行,而因為a_print的定義只執(zhí)行一次,所以只會輸出一次。

以上這篇tensorflow實現在函數中用tf.Print輸出中間值就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • django通過ajax發(fā)起請求返回JSON格式數據的方法

    django通過ajax發(fā)起請求返回JSON格式數據的方法

    這篇文章主要介紹了django通過ajax發(fā)起請求返回JSON格式數據的方法,較為詳細的分析了django處理ajax請求的技巧,需要的朋友可以參考下
    2015-06-06
  • Python強化練習之PyTorch opp算法實現月球登陸器

    Python強化練習之PyTorch opp算法實現月球登陸器

    在面向對象出現之前,我們采用的開發(fā)方法都是面向過程的編程(OPP)。面向過程的編程中最常用的一個分析方法是“功能分解”。我們會把用戶需求先分解成模塊,然后把模塊分解成大的功能,再把大的功能分解成小的功能,整個需求就是按照這樣的方式,最終分解成一個一個的函數
    2021-10-10
  • python爬蟲中url管理器去重操作實例

    python爬蟲中url管理器去重操作實例

    在本篇內容里小編給大家整理的是一篇關于python爬蟲中url管理器去重操作實例,有需要的朋友們可以參考下。
    2020-11-11
  • Python實現圖像和辦公文檔處理的方法和技巧

    Python實現圖像和辦公文檔處理的方法和技巧

    本文介紹了Python實現圖像和辦公文檔處理的方法和技巧,包括使用Pillow庫處理圖像、使用OpenCV庫進行圖像識別和處理、使用PyPDF2庫處理PDF文檔、使用docx和xlwt庫處理Word和Excel文檔等,幫助讀者更好地掌握Python在圖像和辦公文檔處理方面的應用
    2023-05-05
  • python對接ihuyi實現短信驗證碼發(fā)送

    python對接ihuyi實現短信驗證碼發(fā)送

    在本篇文章里小編給大家分享的是關于python對接ihuyi實現短信驗證碼發(fā)送功能,需要的朋友們可以參考下。
    2020-05-05
  • Python網絡請求庫requests的10個基本用法

    Python網絡請求庫requests的10個基本用法

    今天我們要聊聊Python中非常實用的一個庫——requests,這個庫讓發(fā)送HTTP請求變得超級簡單,無論你是想抓取網頁數據還是測試API接口,requests都能派上大用場,下面我們就一起來看看如何使用requests完成一些常見的任務,需要的朋友可以參考下
    2024-10-10
  • Ubuntu 下 vim 搭建python 環(huán)境 配置

    Ubuntu 下 vim 搭建python 環(huán)境 配置

    這篇文章主要介紹了Ubuntu 下 vim 搭建python環(huán)境配置,需要的朋友可以參考下
    2017-06-06
  • Python2和Python3之間的str處理方式導致亂碼的講解

    Python2和Python3之間的str處理方式導致亂碼的講解

    今天小編就為大家分享一篇關于Python2和Python3之間的str處理方式導致亂碼的講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • python中NumPy的安裝與基本操作

    python中NumPy的安裝與基本操作

    Python雖然也提供了array模塊,但其只支持一維數組,不支持多維數組,也沒有各種運算函數,因而不適合數值運算,NumPy的出現彌補了這些不足,這篇文章主要給大家介紹了關于python中NumPy的安裝與基本操作的相關資料,需要的朋友可以參考下
    2022-03-03
  • Python自定義線程類簡單示例

    Python自定義線程類簡單示例

    這篇文章主要介紹了Python自定義線程類,結合簡單實例形式分析Python線程的定義與調用相關操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論