TensorFlow 零基礎入門指南

TensorFlow 零基礎入門指南

TensorFlow 是一個開發源代碼軟件庫,它能夠進行高性能的數值計算與分析,藉助其靈活的架構,能夠將其部署到多種平臺(CPU、GPU、TPU)和設備(桌面設備、移動設備、集羣)。TensorFlow 爲機器學習和深度學習提供了不少強有力的支持,本篇文章小編爲你們整理了不少 TensorFlow 的基礎編程知識,很是適合初學者學習,一塊兒來看看吧!node

一、 TensorFlow 計算模型

TensorFlow 顧名思義,是由 Tensor + Flow 組成,Tensor 叫作張量,主要起到數據結構的做用,Flow 叫作流,用來表示計算模型,即張量之間經過計算而轉換的過程 。TensorFlow 是一個提供計算圖的形式表述計算的編程系統,每個計算都是計算圖上的一個節點,節點之間的邊描述的計算之間的關係。python

計算圖的實例

#一個簡單的計算圖
node1 = tf.constant(3.0,tf.float32,name="node1")
node2 = tf.constant(4.0,tf.float32,name="node2")
node3 = tf.add(node1,node2)
print(node3)

該代碼輸出結果爲:編程

Tensor( "Add:0", shape( ), dtype = float32 )

要注意的是,這裏輸出的結果不是一個具體的數字,而是一個張量的結構。
​TensorFlow 零基礎入門指南數組

計算圖的執行

建立計算圖只是創建了靜態的計算模型,只有執行對話才能提供數據並得到結果。瀏覽器

#創建對話並顯示運行結果
sess = tf.Session()
print("運行sess.run(node3)的結果是:", sess.run(node3))
#關閉session
sess.close()

該代碼輸出結果爲:運行 sess.run (node3) 的結果是:7.0微信

二、 Tensor 張量

在 TensorFlow 中,全部的數據都經過張量的形式來表示。
張量能夠簡單的理解爲多維數據:session

  • 零階張量表示標量,即一個數;數據結構

  • 一階張量表示想來,即一維數組;架構

  • n階張量表示n維數組;

張量沒有真正保存數字,它保存的只是計算過程。機器學習

張量的屬性

Tensor( "Add:0", shape( ), dtype = float32 )
由名字 name,形狀 shape 和類型 type 三部分組成:

  • 名字(name):node : src_output
  • 形狀(shape):張量的維度信息,當shape=()時,表示標量
  • 類型(type): 每一個張量都會有一個惟一的類型

    張量的形狀

    ​TensorFlow 零基礎入門指南
    例如:
    ​TensorFlow 零基礎入門指南

    張量的階

    張量的階表示了張量的維度
    ​TensorFlow 零基礎入門指南
    階爲1的張量等價於向量;
    階爲2的張量等價於矩陣,經過 t [ i, j ]獲取元素;
    階爲3的張量,經過 t [ i, j, k ]獲取元素。

    張量的類型

    TensorFlow 支持14種類型:

  • 實數:tf.float32,tf.float64
  • 整數:tf.int8,tf.int16,tf.int32,tf.int64,tf.uint8
  • 布爾:tf.bool
  • 複數:tf.complex64,tf.complex128
    注意:不帶小數點的數會被默認爲int32,帶小數點的會被默認爲float32.
import tensorflow as tf
a = tf.constant([1,2], name="a")
b = tf.constant([2.0,3.0], name="b")
result = a + b

​TensorFlow 零基礎入門指南
該代碼運行會報錯,由於 TensorFlow 會對參與運算的全部張量進行類型的檢查,發現類型不匹配時就會報錯。

三、 Operation 操做

計算圖中的節點就是操做

一次加法是一個操做
一次乘法也是一個操做
構建一些變量的初始值也是一個操做
每一個運算操做都是屬性,它在構建圖的時候須要肯定下來

操做之間存在順序關係,這些操做之間的依賴就是 「邊」。

​TensorFlow 零基礎入門指南

四、 Session 會話

會話擁有並管理 TensorFlow 程序運行時的全部資源,當全部計算完成以後須要關閉會話幫助系統回收資源。

會話的模式

import tensorflow as tf
#定義計算圖
a = tf.constant([1,2,3])
#建立一個會話
sess = tf.Session()
#使用這個建立好的會話來獲得關心的運算結果
print(sess.run(a))
#關閉會話使得本次運行中使用的資源能夠被釋放
sess.close()

這裏須要注意的是:調用Session.close( )函數來關閉會話並釋放資源,當程序由於異常退出時,關閉會話函數可能就不會被執行從而致使資源泄露。

所以如下代碼能夠避免該問題:

import tensorflow as tf
#定義計算圖
a = tf.constant([1,2,3])
#建立一個會話,並經過python中的上下文管理器來管理該會話
with tf.Session() as sess:
    #使用這個建立好的會話來獲得關心的運算結果
    print(sess.run(a))
#關閉會話使得本次運行中使用的資源能夠被釋放
#當上下文退出時會話關閉,資源釋放

交互式環境下設置默認會話

在交互式環境下,python 腳本或者 Jupyter 編輯器,經過設置默認會話來獲取張量的取值更加方便。

tf.InteractiveSession 使用這個函數會自動將生成的會話註冊爲默認會話

node1 = tf.constant(3.0,tf.float32,name="node1")
node2 = tf.constant(4.0,tf.float32,name="node2")
node3 = tf.add(node1,node2)
sess = tf.InteractiveSession()
print(node3.eval())
sess.close()

五、 常量與變量

常量 constant
常量是在運算過程當中值不會改變的單元,在 TensorFlow 中無需進行初始化操做

常量的建立語句爲:

constant_name = tf.constant(value)

變量 Variable

變量是在運行過程當中值會改變的單元,在 TensorFlow 中須要進行初始化操做

變量的建立語句爲:

variable_name = tf.Variable (value, name)

個別變量初始化:

init_op = variable_name.initializer( )

全部變量初始化:

init_op = tf.global_variable_initializer( )

​TensorFlow 零基礎入門指南
注意:使用了 Variable 變量類型,不進行初始化數值會出現運行錯誤。

六、 佔位符 placeholder

TensorFlow 中的 Variable 變量類型,在定義時須要初始化,但有些變量定義時並不知道其數值,只有當真正開始運行程序時,才由外部輸入,好比訓練數據,這時須要用到佔位符。

tf.placeholder 佔位符,是 TensorFlow 中特有的一種數據結構,相似於動態變量或函數的參數。

佔位符的函數接口以下:

tf.placeholder(dtype, shape = None, name = None)
#此代碼生成一個2*3的二維數組,矩陣中每一個元素類型都是tf.float32
x = tf.placeholder(tf.float32,[2,3],name="tx")

若是構建了一個包含 placeholder 操做的計算圖,當在 session 中調用run 方法時,placeholder 佔用的變量必須經過 feed_dict 參數傳遞進去,不然會報錯。

​TensorFlow 零基礎入門指南

七、 TensorBoard 可視化

TensorBoard 是TensorFlow 的可視化工具

​TensorFlow 零基礎入門指南
經過 TensorFlow 程序運行過程當中輸出的日誌文件可視化 TenorFlow 程序的運行狀態。

在 TensorBoard 中查看圖結構

​TensorFlow 零基礎入門指南
運行以後會在指定目錄裏產生日誌文件

​TensorFlow 零基礎入門指南

啓動 TensorBoard

TensorBoard 不須要額外安裝,在 TenorFlow 安裝時已經自動完成。

在 Anaconda Prompt 中先進入日誌存放的目錄,再運行 TensorBoard,並將日誌地址指向程序日誌輸出的地址。

命令:

tensorboard --logdir=/path/log

在瀏覽器訪問網址:http://localhost:6006

​TensorFlow 零基礎入門指南
TensorBoard 經常使用API
​TensorFlow 零基礎入門指南

---------End---------

關注後回覆「w」,加我私人微信

推薦閱讀:
閱讀是投資本身最有效的方式
自律是一種覺醒

​TensorFlow 零基礎入門指南

相關文章
相關標籤/搜索