tensorflow的計算圖總結(jié)
計算圖
在 TensorFlow 中用計算圖來表示計算任務(wù)。 計算圖,是一種有向圖,用來定義計算的結(jié)構(gòu),實際上就是一系列的函數(shù)的組合。 用圖的方式,用戶通過用一些簡單的容易理解的數(shù)學(xué)函數(shù)組件,就可以建立一個復(fù)雜的運算
在 TensorFlow 使用圖,分為兩步:建立計算圖 和 執(zhí)行圖
圖,在形式上由結(jié)點 Nodes 和邊 Edges 組成。 - Nodes,用圓圈表示,代表一些對數(shù)據(jù)進行的計算或者操作(Operation)。 - Edges,用箭頭表示,是操作之間傳遞的實際值(Tensor)
建立圖
graph = tf.Graph()
訪問上下文管理器
with graph.as_default():
用 with 表示我們用 context manager 告訴 TensorFlow 我們要向某個具體的 graph 添加 Op 了
執(zhí)行圖圖必須在會話(Session)里被啟動,會話(Session)將圖的 op 分發(fā)到 CPU 或 GPU 之類的設(shè)備上,同時提供執(zhí)行 op 的方法,這些方法執(zhí)行后,將產(chǎn)生的張量(tensor)返回
## 開啟session
sess = tf.Session()`
一旦開啟了 Session,就可以用 run() 來計算想要的 Tensor 的值
用完會話,記得關(guān)掉
sess.close()
Fetches
fetches是session.run()的一個參數(shù),它可以接收任何一個我們想要執(zhí)行的op或者Tensor,或者他們對應(yīng)的list結(jié)構(gòu)。
- 如果是tensor,那么session.run()輸出的就是一個Numpy 數(shù)組
- 如果是Op,那么session.run()輸出的就是None
比如:sess.run(b)就是告訴Session要把計算b所需要的結(jié)點都找到按順序執(zhí)行并且輸出結(jié)果。
全局變量初始化
tf.global_variables_initializer()
表示將所有定義的Variable變量都準(zhǔn)備好,以便于后續(xù)使用,這個Op也可以傳給給session.run.比如:
init = tf.global_variables_initializer() … sess.run(init)
張量Tensor和OP
在tensorflow中使用tensor來表示所有的數(shù)據(jù)結(jié)構(gòu),計算圖中操作Op結(jié)點之間傳遞的都是Tensor
- 定義tensor時可以直接使用numpy傳遞給Op結(jié)點,因為tensorflow的Op可以將python的數(shù)據(jù)類型轉(zhuǎn)化為tensor包括numbers,booleans,strings或者list。
- 圖中的任何結(jié)點都叫做Operation簡稱:Op
- 每個Op的輸出會被傳遞到其他Op或者sess.run()
Variable
Variable,變量是維護圖執(zhí)行過程中的狀態(tài)信息的,需要它來保持和更新參數(shù)數(shù)值,是需要動態(tài)調(diào)整的。
- Tensor 和Operation都是一成不變的,而Variable是可以隨著時間改變的
- Variables可以用在任何使用tensor的Op中,它當(dāng)前的值就會被傳遞給使用它的Op
- Variable通常的初始值是一些很大的0,1或者隨機值tensor,或者內(nèi)置op:tf.zeros(),tf.ones()等
- Variable在graph中,狀態(tài)由session管理,也是在session中進行初始化,session可以追蹤variable的當(dāng)前值是多少。
- session可以只初始化一部分variable
- 使用tf.variables_initializer,傳入初始化變量列表
- variable的值是可以被改變的
- 比如使用variable.assign(variable),或者variable.assign_add(1)
- 每個session維護獨立的variable變量值,同一個variable不同的session值可以是不同的。
- 當(dāng)各種Optimizer優(yōu)化器訓(xùn)練機器學(xué)習(xí)模型時,variable就會隨之改變,當(dāng)使用variable中的trainable=False屬性可以不被Optimizer改變。
name_scopes
- name_sopes可以用來管理圖,可以把一組Op放到一個組塊中
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法
python,本身來說是一門高級編程語言,python它入門簡單,有基礎(chǔ)的學(xué)起來很快就能有簡單的應(yīng)用,但是在非常高的抽象計算中,高級的python程序設(shè)計也是非常難學(xué)的。接下來給大家介紹python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法,一起看看吧2018-02-02python編程使用PyQt制作預(yù)覽窗口游戲中的小地圖
這篇文章主要為大家介紹了python使用PyQt制作預(yù)覽窗口游戲中的小地圖實現(xiàn)示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10Python 將代碼轉(zhuǎn)換為可執(zhí)行文件脫離python環(huán)境運行(步驟詳解)
這篇文章主要介紹了Python 將代碼轉(zhuǎn)換為可執(zhí)行文件脫離python環(huán)境運行(步驟詳解),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Tensorflow 使用pb文件保存(恢復(fù))模型計算圖和參數(shù)實例詳解
今天小編就為大家分享一篇Tensorflow 使用pb文件保存(恢復(fù))模型計算圖和參數(shù)實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Django 解決阿里云部署同步數(shù)據(jù)庫報錯的問題
這篇文章主要介紹了Django 解決阿里云部署同步數(shù)據(jù)庫報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05關(guān)于numpy數(shù)組中元素單個選取或部分選取問題
這篇文章主要介紹了關(guān)于numpy數(shù)組中元素單個選取或部分選取問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07python實現(xiàn)基于SVM手寫數(shù)字識別功能
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)基于SVM手寫數(shù)字識別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法
這篇文章主要介紹了Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法,本文代碼實例圖文相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07