TensorFlow 零基礎入門指南

TensorFlow 零基礎入門指南

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

1、 TensorFlow 計算模型

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

計算圖的實例

#一個簡單的計算圖
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

2、 Tensor 張量

在 TensorFlow 中,所有的數據都通過張量的形式來表示。
張量可以簡單的理解爲多維數據:

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

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

  • 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 會對參與運算的所有張量進行類型的檢查,發現類型不匹配時就會報錯。

3、 Operation 操作

計算圖中的節點就是操作

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


操作之間存在順序關係,這些操作之間的依賴就是 “邊”。

​TensorFlow 零基礎入門指南

4、 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()

5、 常量與變量

常量 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 變量類型,不進行初始化數值會出現運行錯誤。

6、 佔位符 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 零基礎入門指南

7、 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 零基礎入門指南

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章