一. 概述
上篇文章說明如何搭建 Tensorflow 1.x 環境,主要使用版本為 1.15 。相信各位也大致上了解 TF 1.x 與 2.x 的差異,接下來就來帶領讀者認識 Tensorflow 1.x 的主要運作模式,何謂 靜態圖(Graph) 與基本運算的概念,以及如何利用 Tensorboard 視覺化靜態圖 !! 事不宜遲,動手一起體驗吧!! 如下圖所示,為系列博文之示意架構圖。此架構圖隸屬於 i.MX8M Plus 的方案博文中,並屬於 eIQ 機器學習開發環境 內的 推理引擎層(Inference Engines Layer) 的子系列 !! 目前章節介紹 “Tensorflow 1. x 運算概念”,若欲架設 2.x 的版本請參照該系列的運算概念。
若新讀者欲理解人工智慧、機器學習以及深度學習的差異,可點選查閱下方博文
大大通精彩博文 探討機器學習與深度學習之差異
TFlite 系列博文 - 文章架構示意圖 (1)
TFlite 系列博文 - 文章架構示意圖 (2)
二. Tensorflow 1.x 運算概念
使用搭建環境 : Python 3.6 + Windows 10 + Tensorflow 1.15
(1) 靜態圖(Graph)
TensorFlow 設計核心屬於「靜態圖」或是 「計算圖」的模式,顧名思義就是 設計 與 執行 分開,撰寫者必須定義資料流向與運算方式,最後再選擇平台進行執行 (預設為 CPU)。為了加快認識概念,下列就直接以代碼與圖片進行演示,可先從三大區塊 (載入 Tensorflow 資料庫、定義靜態圖、執行靜態圖) 看起。
靜態圖代碼演示 :
觀察上述所介紹的代碼,有明顯的定義與執行設計圖的分段。而定義設計圖之代碼部分可以使用圖形化的方式呈現,如下圖所示,故稱此部分為 圖(Graph) 的概念。
TensorFlow Graph 示意圖
透過 Session 的方式來封裝執行設計圖(Graph),執行結果如下 :
順帶一提,上述方式皆為 TensorFlow 1.x 的靜態圖概念,然而 TensorFlow 已經朝 2.x 的版本邁進,衍伸出 動態圖(Eager) 的概念,最大的差異就是執行則立刻運算,能夠使除錯更加直觀!!
*** 本文章以 TensorFlow 1.x 為主 (Version 1.15),暫時不介紹動態圖的概念與撰寫方式
(2) 基本運算
撰寫 TensorFlow 的代碼時,必須注意的是常數與變數的宣告方式不同於 Python。而是所謂的 張量(Tensor) ,這是一種有維度的數組之統稱,比如說二維的矩陣就是屬於一種張量。而下列將介紹 TensorFlow 宣告常數與變數的方法。
常數宣告 :
變數宣告(直接填入數值) :
變數宣告(間接填入數值, 先宣告一塊記憶體空間) :
變數宣告範例 :
範例1 是先預設好數值直接填入於變數中,範例2 則是搭配 feed_dict 用法 ,隨後將填入數值的變數,換句話說就是先申請一塊未填值的記憶體空間,後續利用 feed_dict 來填入其值,屬於比較靈活性的用法。該程式所對應的運行結果如下 :
(3) Tensorboard 視覺化結果
Tensorboard 是一種進階 API 專以網頁方式呈現 TensorFlow 所輸出的資料,網頁預設連接埠為 6006。能透過此方式視覺化 TensorFlow 的輸出結果,僅需要加入以下代碼 ….
輸出純量值 :
畫出資料分布圖 :
輸出圖形 :
以儲存檔案方式紀錄所有節點 :
開啟命令提示字元或終端機,輸入以下指令即可 啟用 Tensorboard
三. 結語
靜態圖主要就是須先規畫好設計圖,最後透過 tf.Session 進行演算。此方式對於複雜的神經網路與 Python 程式特性較不相容,Debug 時相較比較不直觀,這也是後續 Google 官方於 Tensorflow 2.x 忍痛替換的主要原因 !! 但為了服務之前熟悉 TF 1.x 的開發者,官方亦是保留了此概念 !! 僅須以 tf.disable_v2_behavior() 關掉動態圖的行為 即可,後續文章將帶領讀者建立第一支 Tensorflow 1.x 神經網路 – 手寫識別,敬請期待!!
四. 參考文件
[1] ITREAD - 從0.1到2.0一文看盡TensorFlow奮鬥史
[2] 軟體之心 - 包裝再升級?Tensorflow 2.0的重大改變
[3] WiKi - Keras開源神經網路庫
[4] 科技報橘 - 手機上的輕量版 AI 運算,TensorFlow Lite 問世!
[5] Anaconda - 官方網站
[6] Tensorflow - 官方網站
如有任何相關 Tensorflow Lite 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 Tensorflow Lite 的技術文章 !!敬請期待 【ATU Book-i.MX8 系列 - TFLite】 !!
評論