【ATU Book-i.MX8 系列 - TFLite】Tensorflow 1. x 運算概念

一.   概述

上篇文章說明如何搭建 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
!!



★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論