學習筆記TF003:數據流圖定義、執行、可視化

2021-02-08 清醒瘋子

數據流圖,有向圖,定義計算結構。一組函數連結在一起。每個函數輸出傳遞給級聯鏈上其他函數。利用小數學函數構造數據複雜變換。


節點node,對數據所優質運算操作。邊edge,向節點輸入、輸出的數據。指向節點的邊為輸入,從節點引出的邊為輸出。邊是節點之間的連接,做信息傳輸。輸入可能來自其他數據流圖、文件讀取、用戶輸入。


輸入節點把單個輸入傳遞給大量後繼節點。不依賴其他節點信息的節點,互相獨立。數據流圖輸入抽象,操控內部運算細節,客戶只需了解輸入信息種類。把整個節點序列視為一組輸入輸出的離散構件。級聯運算組可視化更容易,無需關心部件內部具體細節。


造成循環依賴(circular dependency)的節點連接不被允許。節點輸出是後繼節點計算必須輸入,節點是後繼節點的依賴節點。輸出不需要其他節點任何輸入,互相獨立。依賴關係具有傳遞性。依賴分為直接依賴和間接依賴。節點輸出作為直接或間接依賴節點的輸入,因都需要等待對方計算完成,形成循環依賴。設置節點初始值可以讓數據流圖工作起來,但也會陷入無限循環,程序無法終目,依賴節點無窮大無法追蹤依賴信息,數據會導致溢出或使某些計算無意義。通過數據流圖有限次複製,並排放置,原始輸入傳給所有副本,副本輸出與輸入串接,稱為展開(unrolling)。


確保只對必要節點執行運算,維護節點的直接依賴節點列表。空棧開始,最終輸出節點入棧,輸出節點直接依賴節點全部入棧,繼續追溯,直到所有依賴節點全部入棧,對棧中節點排序,保證上運行次序,追蹤已經完成計算的節點,輸出保存在內存,避免重複計算。


TensorFlow工作流,定義數據流圖,運行數據流圖。節點被稱為Operation(Op)。各Op接收零個或多個輸入Tensor對象,輸出零個或多個Tensor對象。調用Python構造方法創建Op。


確保TensorFlow環境處於活動狀態。只有一個終端擁有活動狀態的TensorFlow環境。jupyter notebook啟動jupyter。新建項目,敲入以下代碼:


import tensorflow as tf #導入TensorFlow庫,取別名tf

#定義數據流圖

a = tf.constant(5, name="input_a")#定義節點a,創建常量Op,接收單個張量值5,輸出給連接節點,以input_a標識。

b = tf.constant(3, name="input_b")#定義節點b,創建常量Op,接收單個張量值3,輸出給連接節點,以input_b標識。

c = tf.multiply(a,b, name="mul_c")#定義節點c,創建乘法Op,接收兩個輸入,輸出乘積,以mul_c標識。

d = tf.add(a,b, name="add_d")#定義節點d,創建加法Op,接收兩個輸入,輸出求和,以add_d標識。

e = tf.add(c,d, name="add_e")#定義節點e,創建加法Op,接收兩個輸入,輸出求和,以add_e標識。

#運行數據流圖

sess = tf.Session()#創建並啟動TensorFlow Session對象。

output = sess.run(e)#Session對象執行節點e,並保存輸出結果

#sess.run(d)#執行節點d,並輸出

#sess.run(c)#執行節點c,並輸出

#sess.run(b)#執行節點b,並輸出

#sess.run(a)#執行節點a,並輸出

#可視化

writer = tf.summary.FileWriter('./my_graph', sess.graph)#創建並啟動summary.FileWriter對象,接收兩個參數,一是數據流圖磁碟存放路徑;二是Session對象graph屬性。

writer.close()#關閉summary.FileWriter對象

sess.close()#關閉Session對象



.constant創建常量Op,接收單個張量值,輸出給連接節點,自動將標量值轉換為Tensor對象,name參數標識節點。.multiply創建乘法Op,接收兩個輸入,輸出乘積。.add創建加法Op,接收兩個輸入,輸出求和。.sub創建減法Op。.div創建除法Op。.mod創建取模Op。無需定義邊,TensofFlow自動繪製連接。TensorFlow Session負責運行時數據流圖監督,運行數據流圖。.Session()創建並啟動TensorFlow Session對象。.run方法執行目標節點,運行必要運算,輸出結果。.summary.FileWriter()創建並啟動summary.FileWriter對象,接收兩個參數,一是字符串輸出目錄,數據流圖磁碟存放路徑;二是Session對象graph屬性,引用追蹤數據流圖。summary.FileWriter對象初始化後立即寫入數據。


退出jupyter,tensorboard --logdir="my_graph"啟動TensorBoard服務。在瀏覽器輸入http://0.0.0.0:6006訪問TensorBoard伺服器。點擊Graph標籤,即可看到可視化的數據流圖。




參考資料:

《面向機器智能的TensorFlow實踐》


歡迎加我微信交流:qingxingfengzi

我的微信公眾號:qingxingfengzigz

我老婆張幸清的微信公眾號:qingqingfeifangz

相關焦點

  • 乾貨| TensorFlow的數據流圖
    大多數張量的生存周期不會超過單次執行周期。然而,變量是一種特殊的操作,它返回一個持久的、可變的張量的句柄,存活於多次計算圖執行之中。對於TensorFlow的機器學習應用,模型的參數通常存儲在變量中,並且在運行模型的訓練階段被更新。初始化變量時,只需以張量作為參數,傳入Variable對象構造函數中。
  • 學習筆記TF021:預測編碼、字符級語言建模、ArXiv摘要
    執行新查詢,刪除或轉移舊轉儲文件。可以優化檢查已有文件與新類別、新關鍵詞是否匹配。沒有轉儲文件,調_fetch_all,生成行寫入磁碟。只在Machine Learning、Neural and Evolutionary Computing、Optimization and Control,搜索機器學習論文。只返回包含單詞neural、network、deep元數據結果。
  • Python安裝TensorFlow 2、tf.keras和深度學習模型的定義
    如何可視化深度學習模型如何繪製模型學習曲線如何保存和加載模型如何獲得更好的模型性能如何減少輟學過度擬合如何通過批量歸一化來加速培訓如何在適當的時間停止訓練並儘早停止您可以使用Python進行深度學習按照您自己的進度完成本教程。
  • 《TensorFlow實戰Google深度學習框架》讀書筆記
    Recurrent Neural Network 第九章 TensorBoard可視化第十章 TensorFlow計算加速讀書筆記的自我說明《TensorFlow實戰Google深度學習框架》讀書筆記讀書筆記目的是把書讀薄,每次看完一本書的半年後,對這本書的印象基本只剩零星的概念。
  • TensorFlow筆記:高級封裝—tf.Estimator
    其中input_fn負責處理輸入數據、model_fn負責構建網絡結構、main來決定要進行什麼樣的任務(train、eval、earlystop等等)。本文我們就通過MNIST數據集的例子,介紹一下tf.Estimator是怎麼用的。
  • 深度學習筆記7:Tensorflow入門
    作者:魯偉 一個數據科學踐行者的學習日記。
  • 百度數據可視化實驗室正式成立,發布深度學習可視化平臺 Visual DL
  • 深度學習筆記8:利用Tensorflow搭建神經網絡
    作者:魯偉 一個數據科學踐行者的學習日記。
  • 學習筆記TF019:序列分類、IMDB影評分類
    序列標註模型,傳入兩個佔位符,一輸入數據data或序列,二目標值target或情緒。傳入配置參數params對象,優化器。動態計算當前批數據序列長度。數據單個張量形式,各序列以最長影評長度補0。絕對值最大值縮減詞向量。零向量,標量0。實型詞向量,標量大於0實數。tf.sign()離散為0或1。結果沿時間步相加,得到序列長度。張量長度與批數據容量相同,標量表示序列長度。
  • 數據可視化設計系列(1): 數據可視化的定義
    這樣理解來,」可視化「也在描述一種「讓大家看見的」發展方向,或者能力。數據可視化的領域是廣博且在不斷擴展的,那用五個字去完整地整個領域終究稍顯單薄。本文旨在給數據可視化(Data Visualization)下一個定義,盡力為大家引入數據可視化的無窮趣味和無儘可能性。那麼,什麼是數據可視化呢?
  • 此文教你「宏觀」學習神經網絡和TensorFlow(實例教程)
    tf.GraphTensorFlow中的每一個計算都代表著一個數據流圖。這個圖有兩個元素:一系列的tf.Operation,代表計算單位一系列的tf.Tensor,代表數據單位 為了看清這一切是如何運行的,你需要創建一下這張數據流圖:
  • 深度學習筆記13:Tensorflow實戰之手寫mnist手寫數字識別
    作者:魯偉一個數據科學踐行者的學習日記。
  • python應用之基於tensorflow的數據擬合:深度學習之預測入門篇
    python是一種高級面向對象的動態類型語言,具有開發高效,學習簡單的特點,主要應用於大數據、深度學習、機器學習、以及Web開發等領域,具有良好的發展前景。X=tf.placeholder("float")#定義佔位符,作用:輸入訓練值Y=tf.placeholder("float")#定義佔位符,作用:輸入標準值W=tf.Variable(tf.random_normal([1]),name="weight")#定義權重
  • Tensorboard機器學習可視化工具
    在定義網絡模型時,需要可視化的目標變量可以通過tf.summary添加。(1)tf.summary.scalar顯示標量信息,主要用於記錄諸如:準確率、損失和學習率等單個值的變化趨勢。代碼示例:tf.summary.image(『feature』 , feature_map)tf.summary.image('w_conv1', w_conv1_visual_0)tf.summary.image('x_input' , x_input, 6)(4)tf.sum