帶你初步了解 TensorFlow 的安裝
1.基本簡介與理解
1.1 簡介
作為一個全面靈活的開源機器學習平臺,我們可以借助TensorFlow 創(chuàng)建適用于桌面、移動、Web 和云環(huán)境的機器學習模型,也可以簡單說TensorFlow 是一個開源的機器學習的框架,我們可以使用 TensorFlow 來快速地構建神經(jīng)網(wǎng)絡,同時快捷地進行網(wǎng)絡的訓練、評估與保存。
我們在安裝TensorFlow之后,每次使用可以直接進行導入方便快捷
import TensorFlow as tf
TensorFlow官方網(wǎng)站如下:
??關于TensorFlow | TensorFlow中文官網(wǎng) (google.cn)??
1.2 優(yōu)劣勢分析與架構解讀
1.2.1 優(yōu)勢
● 靈活性強:只要計算能表示為計算流圖,都可以使用TF。
● 真正的可移植性:支持臺式機、服務器(CPU、GPU均可)、嵌入式設備。
● 多語言支持:基于Python,也提供C++使用界面、Ipython交互界面。
● 可視化工具:TensorFlow提供一個強大的可視化工具,TensorBoard。
● 豐富的封裝庫支持:TFlearn、TF-Slim、Keras等。
1.2.2 劣勢
● 不支持Windows
除了TensorFlow所擁有的所有優(yōu)勢外,它對Windows用戶的功能非常有限。對于Linux用戶則是非常友好的.
● 支持GPU
TensorFlow只有NVIDIA對GPU的支持和Python編程語言對GPU編程的支持。
1.2.3 TensorFlow架構解讀
第一層:設備通信層,由設備層和網(wǎng)絡層組成,負責網(wǎng)絡通信和設備管理。設備管理可以實現(xiàn)TF設備異構的特性,設備層支持CPU、GPU、Mobile等不同設備的通信實現(xiàn)。網(wǎng)絡通信依賴??gRPC??通信協(xié)議實現(xiàn)不同設備間的數(shù)據(jù)傳輸和更新。
第二層:Kernel 實現(xiàn)層,以Tensor為處理對象,依賴網(wǎng)絡通信和設備內存分配,實現(xiàn)了各種Tensor操作或計算,主要是機器學習的內核實現(xiàn)。
第三層:圖計算層,由分布式主控和數(shù)據(jù)流執(zhí)行器組成,包含本地計算流圖和分布式計算流圖的實現(xiàn)。分布式主控根據(jù)負載能力將不同的工作量分配在不同的設備上,數(shù)據(jù)流執(zhí)行器基于最好的實驗方式來執(zhí)行數(shù)據(jù)流圖.
第四層: API接口層,C API是對TF功能模塊的接口封裝,它是用C語言實現(xiàn)的。選擇C語言是因為它是一種底層語言,簡單快速、可靠,并且可以在任何操作系統(tǒng)上運行。
第五層: Client 層,Python,C++等編程語言在應用層通過API接口層調用TF核心功能實現(xiàn)相關實驗和應用。
而TensorFlow的最后一層包含用python和C++實現(xiàn)的訓練和推理庫。
想全面了解TensorFlow入門實操的基礎理論和設計思路,可以到中國大學 MOOC 學習??《 TensorFlow 入門實操課程 》??,快速上手TensorFlow基本應用和實踐。
2.安裝和使用
2.1 安裝
此處以Ubuntu 16.04 或更高版本(64 位)為例進行講解
2.1.1 使用pip安裝
PIP 是一種包管理系統(tǒng),用于安裝和管理用 Python 寫的軟件包。
首先我們需要安裝python環(huán)境, 需要使用 Python 3.6-3.9 和 pip 19.0 及更高版本.如果不確定我們是否已經(jīng)安裝,可以通過版本檢查的方式進行查看,確保后續(xù)可以繼續(xù)進行.
如果沒有安裝,請參考如下代碼:
重點: 其實,此處針對python的安裝我更建議安裝anaconda,這樣可以省很多的事情, anaconda包含了conda、Python等190多個科學包及其依賴項. 能減少各種庫問題,版本問題.
其次我們需要建立環(huán)境,此處建議是安裝虛擬環(huán)境
最后我們激活虛擬環(huán)境,然后在虛擬環(huán)境下進行TensorFlow pip 軟件包的安裝
安裝結束以后可以進行驗證,確保安裝成功
2.1.2 源碼編譯安裝
安裝
參考 ??http://bazel.io/docs/install.html??
配置./configure 根據(jù)你的實際情況如實回答一系列問題?;卮鹬?bazel 會對環(huán)境進行配置,此時需要機器可以訪問外網(wǎng),便于獲取一些編譯依賴包。一些包可能需要翻墻。
編譯
2.1.3 Docker 鏡像安裝
Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
當你通過 Docker 安裝和運行 TensorFlow 時,它與你機器上之前已安裝的軟件包完全隔離。
官方鏡像
官方提供了 4 個 Docker 鏡像可供使用:
僅 CPU 版,無開發(fā)環(huán)境:gcr.io/TensorFlow/TensorFlow
僅 CPU 版,有開發(fā)環(huán)境:gcr.io/TensorFlow/TensorFlow:latest-devel
支持 GPU,無開發(fā)環(huán)境:gcr.io/TensorFlow/TensorFlow:latest-gpu
支持 GPU,有開發(fā)環(huán)境:gcr.io/TensorFlow/TensorFlow:latest-devel-gpu
創(chuàng)建 Docker 用戶組
允許普通用戶無需 sudo 即可啟動容器。
啟動 Docker 容器
我使用的是支持GPU的版本所以選擇第四個進行安裝.大家看自己的電腦支持什么版本然后對應命令下載即可.
2.2使用
2.2.1占位符
語法: tf.compat.v1.placeholder(dtype, shape=None, name=None)
例子1:
例子2:
具體的參數(shù)說明:
● dtype:張量中元素的數(shù)據(jù)類型,將被輸入。
● shape : 默認為None:將被輸入的張量的形狀,它是一個可選參數(shù)。如果沒有指定形狀,人們可以輸入任何形狀的張量。
● name: 默認為None:操作的名稱,可選參數(shù)。
2.2.2變量
Variable()構造函數(shù)希望變量有一個初始值,它可以是任何種類或形狀的Tensor。變量的類型和形式由其初始值定義。形狀和變量一旦被創(chuàng)建就會被固定下來。
在眾多的參數(shù)中,需要注意的是validate_shape : 默認為True。如果是False,允許變量以未知的形狀值初始化。如果是True,初始值的形狀必須是已知的,這是默認的。
2.2.2.1創(chuàng)建變量
最常見的創(chuàng)建變量方式是使用Variable()構造函數(shù)。
注意: 我們在進行初始化的時候也可以按如下書寫
2.2.2.2分配或修改變量中的元素
我們使用assign()方法來修改這個變量。
示例一:assign用來更新值
輸出結果如下:
示例二 : assign_add()用來添加變量值
輸出結果如下:
示例三: assign_sub()用來從變量中減去值
2.2.2.3改變變量的形狀
tf.reshape()方法用于改變變量的形狀。必須傳遞變量和形狀。
輸出結果如下:
2.2.3 Session會話
TensorFlow中只有讓Graph(計算圖)上的節(jié)點在Session(會話)中執(zhí)行,才會得到結果。Session的開啟涉及真實的運算,因此比較消耗資源。在使用結束后,務必關閉Session。?
方式一進行手動關閉:
方式二進行自動關閉(使用到with語句):
安裝好TensorFlow后,初步入門機器學習的同學可以到中國大學MOOC上學習??《 TensorFlow 入門實操課程 》??,快速了解如何使用TensorFlow建立和訓練神經(jīng)網(wǎng)絡、用自然語言處理系統(tǒng)教會機器理解、分析和回應人類的言語 、構建和訓練模型等基本理論。我推薦對模型部署有需求的同學可以去了解??《 TensorFlow 入門課程 - 部署篇 》?,高效掌握在多種生產場景下靈活部署模型的技巧。大家也可以在??TensorFlow官網(wǎng)?(https://tensorflow.google.cn/)上探索更多學習資源,持續(xù)精進機器學習知識與技能!
作者介紹
張云波,活躍的IT網(wǎng)紅講師,擁有學員31w+,國內早期開始和發(fā)布蘋果Swift、安卓Kotlin、微信小程序、區(qū)塊鏈技術的講師之一。主攻前端開發(fā)、iOS開發(fā)、Android開發(fā)、Flutter開發(fā)、區(qū)塊鏈Dapp開發(fā),有豐富的大公司和海外工作經(jīng)驗。